Presentation is loading. Please wait.

Presentation is loading. Please wait.

第三章 C程序设计初步 3.1 结构化程序设计思想 3.2 C语句概述 3.3 赋值语句 3.4 文件包含 3.5 流和文件初步

Similar presentations


Presentation on theme: "第三章 C程序设计初步 3.1 结构化程序设计思想 3.2 C语句概述 3.3 赋值语句 3.4 文件包含 3.5 流和文件初步"— Presentation transcript:

1 第三章 C程序设计初步 3.1 结构化程序设计思想 3.2 C语句概述 3.3 赋值语句 3.4 文件包含 3.5 流和文件初步
3.1 结构化程序设计思想 3.2 C语句概述 3.3 赋值语句 3.4 文件包含 3.5 流和文件初步 3.6 数据输出 3.7 数据输入 3.8 程序举例

2 3.1 结构化程序设计思想 3.1.1 程序的质量标准 一个好的程序在满足运行结果正确的基本条件之后,首先要有良好的结构,使程序清晰易懂。在此前提之下,才考虑使其运行速度尽可能的快, 运行时所占内存应尽量压缩至合理的范围。也就是说,现在的程序质量标准易读性好是第一位的,其次才是效率。因为从根本上说,只有程序具有了良好的结构,才易于设计和维护,减少软件成本,从整体来说才是真正提高了效率。

3 3.1.2 结构化程序设计方法 (1) 一个大的程序开发应当采取“自顶向下, 逐步细化, 模块化”的方法。 
(2) 任何程序均由具有良好特性的三种基本模块(顺序, 分支,循环)“堆积”搭成,即由基本小单元顺序组成一个大结构,从而避免了使用goto语句的缺点。

4 3.1.3 结构化程序的标准 (1) 程序符合“清晰第一,效率第二”的质量标准。  (2) 具有良好的特性。 ① 只有一个入口。 
② 只有一个出口(有些分支结构很容易写成多个出口)。 ③ 无死语句(永远执行不到的语句). ④ 没有死循环(永远执行不完的无终止的循环)。

5 三种基本模块 1. 顺序结构 图 3.1 顺序结构

6 2. 分支结构 图 3.2 分支结构

7 3. 循环结构 图 3.3 当型循环结构

8 图 3.4 直到型循环结构

9 3.2 C 语 句 概 述 C语言是函数式语言,每一个函数是由数据说明部分和执行语句部分组成。C语言中的所有语句均是执行语句,没有非执行语句。根据C语言的句法, 语句可分为单个语句,复合语句和空语句。根据结构化程序设计的三个模块大致可分为: 用于顺序结构中的表达式语句、赋值语句、函数调用语句等; 用于分支结构中的if语句、switch语句、转移语句、标号语句等;用于循环结构中的while语句、for语句、do-while语句。 另外在后两种结构中还可出现break语句、continue语句、复合语句和空语句等作为其中的一部分。

10 (1) 逻辑上每个语句最后都必须有一个分号(;), 一个语句可分写成几行, 几个语句也可合写成一行(但不提倡, 因其不利于单步调试)。 
(2) 空语句直接由分号(;)组成,常用于控制语句中必须出现语句之处,它不做任何操作,只在逻辑上起到有一个语句的作用。  (3) 复合语句由花括号{ }括起的若干个语句, 语法上可以看成是一个语句。复合语句中最后一个语句的分号不能省略。 如下面是一个复合语句:  {z=x+y;  y=x/z;  x=z-y; }

11 (4) 表达式语句是在各种表达式后加一个分号(;)形成一个语句。如赋值语句由赋值表达式加一个分号构成: 
x=x+y; 再如表达式x++后加一个分号构成表达式语句:  x++;  表达式和表达式语句的区别是表达式后无分号, 可以出现在其它语句中允许出现表达式的地方;而表达式语句后有分号, 自己独立成一个语句,不能再出现在其它语句的表达式中。 如:  if((a=b)<0) min=a;

12 (5) 控制语句有条件判断语句(if、 switch), 循环语句(for、 while、 do-while),转移语句(goto、 continue、 break、 return)。

13 3.3 赋值语句 赋值语句是由赋值表达式加上一个分号构成。 如x=a+b;。 C语言的赋值语句具有其它高级语言中赋值语句的一切特点和功能,也有C语言自己的特色:  (1) C语言中赋值号“=”作为赋值运算符。  (2) 其它高级语言没有赋值表达式这个概念。作为赋值表达式可以出现在其它表达式能出现的地方,也可出现在其它表达式之中。 例如: if((x=a+b)! =0) t=10;

14 3.4 文件包含 一个C程序由若干个源文件组成,而一个源文件还可将另一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中,二者合为一个大些的文件。这个包含进来的文件只是一个文件名,在编译时先进行展开,这个文件名我们用预编译命令“#include”来指定,其一般形式为:  #include <文件名> 或 #include ″文件名″

15 3.5 流和文件初步 C语言的输入和输出由库函数来完成。在C语言中没有用于完成I/O操作的关键字,而是采用I/O操作函数。因此数据的输入输出要调用输入输出库函数。 在ANSI C标准中定义了一组完整的I/O操作函数。这些函数调用时所需的一些预定义类型和常数都在头部文件stdio.h和conio.h中。因此调用输入输出函数时,在程序前面应加上 #include <stdio.h> 和(或) #include <conio.h> 如没有该命令指定, 可能造成错误。

16 C语言I/O系统为C语言编程者提供了一个统一的接口, 与具体的被访问设备无关。也就是说,在编程者和被使用设备之间提供了一层抽象的东西,这个抽象的东西就叫做“流”。 具体的实际设备叫做“文件”。 
所有的流具有相同的行为,相当于一个缓冲区,流可分为文字流和二进制流。  一个文字流是一行行的字符,换行符表示这一行的结束。 文字流中某些字符的变换由环境工具的需要来决定。例如一个换行符可以变换为回车换行两个字符。因此所读写的字符与外部设备中的数据没有一一对应的关系。

17 3.6 数据输出 … 3.6.1 putchar函数(字符输出函数)  函数调用形式:  char ch;  
3.6 数据输出 3.6.1 putchar函数(字符输出函数)  函数调用形式:  char ch;   putchar (ch); 

18 例 3.1 字符数据的输出。  #include <stdio.h> main( ) { char a, b; a=′b′; b=′o′;  putchar(a); putchar(b);  putchar(′y′); putchar(′\n′); } 经编译后运行, 在屏幕上显示:  boy

19 3.6.2 printf函数(格式输出函数) 函数的调用形式:  printf(″控制字符串″, 参量表); 例如: 
printf(″The output x=%d\n″, x);  若x=10, 则输出为“The output x=10”。

20 表 3.1 printf()的格式说明

21 例 不同类型数据的输出。 程序:

22 3.6.3 puts函数(字符串输出函数) 函数的原型是:  char *puts(char *s) 函数的调用形式是: 

23 … 3.7 数据输入 3.7.1 getche函数与getchar( )和getch( ) getche函数的调用形式: 
3.7 数据输入 3.7.1 getche函数与getchar( )和getch( ) getche函数的调用形式:  char# ch;  ch=getche( );  getche( )用于等待从键盘上键入一个字符, 返回它的值并在屏幕上自动回显该字符。使用该函数必须在程序的头部使用文件包含命令:  #include <conio.h>

24 例 3.3 单个字符的输入和输出。 #include <conio.h> #include <stdio.h> main( ) { char ch;  ch=getche( );  putchar(ch); putchar(′\n′); } 经编译后运行, 输入a, 最后在屏幕上显示: aa

25 例 3.4 多个字符的输入和输出。 #include <stdio.h> #include <conio.h>
例 多个字符的输入和输出。 #include <stdio.h> #include <conio.h> main( ) { char# a, b, c;  a=getch( ); b=getch( ); c=getch( );  putchar(a); putchar(b); putchar(c);  putchar(′\n′);  getch( );  }

26 3.7.2 scanf函数(格式输入函数) scanf函数的调用形式:  scanf(″控制字符串″,参量表); 
如scanf(″a, b=%d, %d″, &a, &b); 即要在键盘上输入a, b=12, -34 此时12送给变量a,-34送给变量b,而控制字符串中a, b=和两个%d之间的逗号必须原封不动照样输入。

27 scanf函数括号中的控制字符串包含三类不同的字符内容:
(1) 格式说明。 (2) 空白字符。 (3) 非空白字符。

28 表 3.2 scanf()的格式说明

29 3.7.3 gets函数(字符串输入函数) 函数的原型是:  char *gets(char *s)
gets( )函数用来从键盘读入一串字符, 并把它们送到gets函数中的字符数组成字符型指针所指定地址的存贮单元中。 在输入字符串后,必须用回车作为输入结束,该回车符并不属于这串字符,由一个“空操作字符(′\0′)”在串的最后来代替它。此时空格不能结束字符串的输入。gets函数返回一个指针。

30 #include <stdio.h>
例 3.5 字符串的输入和输出。  程序:  #include <stdio.h> main( ) { char str[80];  gets(str);  puts(str);  } 运算结果:  ABC DEF ABC DEF

31 3.8 程序举例 例 3.6 输入一个小写字母, 按大写输出。  程序一:  #include <stdio.h>
3.8 程序举例 例 3.6 输入一个小写字母, 按大写输出。  程序一:  #include <stdio.h> #include <conio.h> main()  { char ch;  ch=getche( );  putchar(ch-32);  } 运行:  aA

32 #include <stdio.h>
程序二:  #include <stdio.h> #include <conio.h> main( ) { char ch;  ch=getch( );  putchar(ch-32);  } 运行:  A

33 #include <stdio.h>
程序三:  #include <stdio.h> main( ) { char ch;  ch=getchar( );  putchar(ch-32);  } 运行:  abcdefgA

34 例 3.7 输入三角形的三条边长,求三角形的面积。我们假设输入的三边能构成三角形。 
分析: 三角形面积的计算公式如下: s=(a+b+c)/2

35 程序:  #include <math.h> main( ) { float a, b, c, s, area;  scanf(″%f, %f, %f″, &a, &b, &c);  s=0.5*(a+b+c);  area=sqrt(s*(s-a)*(s-b)*(s-c));  printf(″a=%.2f, b=%.2f, c=%.2f\n″, a, b, c);  printf(″area=%.2f\n″, area);  } 运行:  3, 4, 6 a=3.00, b=4.00, c=6.00 area=5.33


Download ppt "第三章 C程序设计初步 3.1 结构化程序设计思想 3.2 C语句概述 3.3 赋值语句 3.4 文件包含 3.5 流和文件初步"

Similar presentations


Ads by Google