刀刀网
您的当前位置:首页c第3章教学zp修订

c第3章教学zp修订

来源:刀刀网
第三章 顺序结构程序设计

3.1顺序结构程序设计的思想

3.2 实现顺序结构程序设计的基本语句 一、赋值语句(P35) 二、数据输出 (P35) 三、数据输入 (P38)

四.单个字符输出(putchar)函数 五.复合语句和空语句 3.3顺序结构程序设计举例

37

第三章 顺序结构程序设计

3.1顺序结构程序设计的思想

在顺序结构程序中,程序的执行是按照各语句出现的先后次序,顺序执行的,并且每个语句都会被执行到。

例如:已知某个三角形的底和高,计算其面积。

问题分析:

设:h表示三角形的高,w表示三角形的底, 则三角形面积为: area=w*h/2

38

解决该问题的算法用传统流程图描述如下:从图中可以看出,顺序结构程序通常由三部分组成:

①输入数据: ②进行处理: ③输出结果:

3.2 实现顺序结构程序设计的基本语句

在C语言描述顺序结构程序中,通常使用的语句有:输入数据函数调用语句(scanf,getchar等(用于实现数据输入)、赋值语句(用于实现运算处理或数据输入)、输出数据函数调用(printf,putchar等)用于实现数据输出)等。

一、赋值语句

赋值语句是由赋值表达式加上一个分号构成的。最简单的一种形式为:

变量=表达式; 例如:

rad=14.5; cr=2*3.14*rad;

说明:

/*将实型数赋给变量rad*/

/*将表达式2*3.14*rad的值赋给变量cir*/

“=”是赋值符号,赋值符号的右边是由常量、变量、运算符和函数组成的表达式因赋值语句是由赋值表达式加上一个分号构成,所以下面是合法的赋值语句:

39

i++; x+=2;

j--;

在顺序结构的程序中,赋值语句不仅用于为变量进行赋值,同时还大量用于运算处理。

二、数据输出

C的输入/输出操作是由标准库函数来实现的。如:printf(),scanf()等,在使用这些函数时,必须使用预编译命令#include将头文件“stdio.h”(standard input &output缩写)包括到用户源文件中。

1.printf()格式输出函数

格式输出函数printf()的功能是按指定的格式向显示器输出一个或多个任意类型的数据。

printf()函数的一般调用形式为: printf(“格式控制”[,输出项表]); 例如:

printf(“hello”);

printf(“The area is :%f\\n“,area); 说明:

①格式控制。格式控制的两边必须用引号,

其中的内容可以包含

:普通字符、格式说明符和转义字符

40

3 类信息,并且这3类信息可以交叉出现。

(a)普通字符:即需要原样输出的字符信息。

(b)格式说明符:用%开头后面跟有一个字母,它规定了输出项的输出形式。格式说明符在个数和类型上应与输出项匹配。

常用的格式说明符见下表。

41

例3.1 输出形式举例1 #include main()

{ int num1,num2; float r1,r2,re; char ch; num1=65; num2=-3; r1=234.5; r2=18.75; re=r1+r2; ch='A';

printf(\"%d %c %d %o %f %c %d\

num1,num1,num2,num2,re,ch,ch);

printf(\"%s\\n\

42

}

运行情况:

说明:

整型变量可以以字符的形式输出,而字符变量也可以整数的形式输出,ASCII码是他们之间的桥梁。

负数在计算机内存中是以补码的形式存放。

变量num2的值为-3,-3的补码为:

用八进制表示即:177775,所以变量num2以%o的格式输出时,显示177775。

43

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 (c)附加格式字符()

字 符 字母 l,h 说 明 l用于长整型整数,h用于短整型或无符号短整型整数,可以加在格式字符d,o,x,u前面 m(代表一个正整数) 数据的输出宽度 n(代表一个正整数) 对实数,表示输出小数位的位数;对字符串,表示截取的字符个数 - 输出的数字或字符向左靠齐 案例3.2 输出形式举例2 #include main()

{ int num1=123; long num2=1234567; float re=123.4567;

printf(\"%d,%6d,%-6d,%2d\\n\

num1,num1,num1,num1);

printf(\"%ld,%8ld,%4ld\\n\

num2,num2,num2);

44

printf(\"%f,%10f,%10.2f,%-10.2f\\n\

re,re,re,re);

printf(\"%s,%10.5s,%-10.5s\\n\\"student\}

运行情况如下:

(d)转义字符

以“\\”开头的字符序列。

如“\\n”其作用时在输出时产生一个“换行”

C语言常用转义字符

45

例3.3 输出形式举例3 #include main() { char a,b,c; a='n'; b='e';

46

c='w';

printf(\"%c%c%c\\n\ printf(\"%c\%c\%c\\n\ printf(\"%c\\n%c\\n%c\\n\ }

运行情况如下:

②输出项表。

输出项表中可以有多个输出项,各项之间用逗号分隔。

2.Printf()函数在使用时要注意以下几点:

(a)

Printf()函数可以输出常量、变量和表达式的值。但

格式控制中的

格式说明符必须按从左到右的顺序,与输出项表中的每个数据一一对应,

47

否则会出错。

(b)类型转换字符紧跟在“%”后面时作为类型转换字符,否则将作为普通字符处理

(即原样输出)

例如:

printf(“c=%c,f=%f\\n”,c,f)

中的第一个c和f都是普通字符。

三、数据输入函数(scanf)

格式输入函数scanf()的功能是用来从外部输入设备(通常是键盘),向程序中的变量输入一个或多个任意类型的数据。

1.scanf()函数的一般调用形式为: scanf(“格式控制”,输入项表); 例如: scanf(“%d%f”,&x,&y); 说明: ①格式控制。

格式控制的两边必须用引号,其中的内容可以由格式说明符和普通字符组成。

(a)普通字符。例如:

普通字符在输入数据时,必须在对应位置上原样输入这些字符。

scanf(“character:%c,real:%f”,&x,&y);

函数中的:“character:”、“real:”和“,”都是普通字符,则在实际运行时输入:

48

character:w,real:12.5 ↙ (b)格式说明符。

scanf()中的格式说明符的使用与printf()函数相似,

必须用%开头后面跟一个字母(也可在其中间增加附加字符),它规定了输入项对应的输入数据格式。同样格式说明符要在个数和类型上与输入项相匹配。 scanf()函数常用的格式说明符及附加字符见下表:

scanf()函数格式说明符

格式说明符 输 入 内 容 %d %o %x %c %s %f %e 十进制整数 八进制整数 十六进制整数 单个字符 输入一个字符串,输入时以非空白字符开始,以第一个空白字符结束。(字符串送到一个字符数组中) 实数。可以用小数形式或指数形式输入 同%f,e与f可以相互替换 scanf()函数附加格式说明符

附加说明字符 l h 域宽m *

49

说 明 用于输入长型数据:%ld,%lo,%lx等 用于输入短整型数据:%hd等 指定输入数据所占的列数 表示本输入数据在读入后不赋给相应的变量 ②输入项表。

输入项表中是要输入数据的变量的存储单元地址。“&”是地址运算符,

“&x”表示变量x在内存中的地址。

2.scanf函数在使用时,从键盘输入数据要注意以下几点:

(a)scanf函数没有计算功能,因此输入的数据只能是常量,而不可以是表达式。 例如: scanf(“%d%d%d”,&x,&y,&z);

表示要输入3 个十进制整数,可按以下方式输入:

12 34 56 ↙ 或 12 ↙

34 56 ↙

例如: scanf(“%c%c”,&c1,&c2);

表示要输入两个字符型数据,按以下方式输入:

ab ↙

则字符a符给变量c1,字符b符给变量c2。

(b)输入格式中,除格式说明符之外的普通字符应原样输入。

50

例如:

scanf(“x=%d,y=%d,z=%d”,&x,&y,&z);

应使用以下形式输入:

x=12,y=34,z=56 ↙

(c)如果指定了输入数据的宽度,系统则自动按它截取所需的数据。

例如:scanf(“%4d%4d%4d”,&x,&y,&z); 输入: 123434565678↙

则系统自动将1234赋予x,将3456赋予y,将5678赋予z。 注意:在输入实数时,不能规定小数位。

例如: scanf(“%6.2f”,&x);

//是错误的。

(d)在%后面使用“*”附加符,表示跳过它相应的数据。

例如:scanf(“%4d,%*4d%4d”,&x,&y); 输入: 1234,3456,5678 ↙

则系统将1234赋给x,将5678赋给y,而第2个数据“3456”被跳过不赋给任何变量。

(e)由于scanf()函数本身不具有显示

51

提示信息功能,为改善人—机交互性,在设计输入操作时,一般先用printf()函数输出一个提示信息,然后再用scanf()函数进行数据输入。 例如:

printf(“Enter width and height:”) scanf(“%f,%f”,&width,&height) 四.单个字符输出(putchar)函数

putchar()函数的功能是用于将一个字符输出到显示器上显示。 putchar()函数的一般调用形式为:

putchar(c);

即把变量c的值输出到显示器上,这里的c 可以是字符型或整型变量,也可以是一个转义字符。

例3_4:putchar()函数应用举例 #include void main() { char a,b,c,d;

52

a='g'; b='o'; c=111; d='d'; putchar(a); putchar(b); putchar(c); putchar(d); }

运行情况如下:

good

说明:putchar()函数只能用于单个字符的输出,并且一次只能输出一个字符。

五.单个字符输入(getchar和getch)函数(1)getchar()函数

getchar()函数的一般调用形式为:

53

c= getchar();

例3_5 :getchar()函数应用举例 #include void main() { char c;

c=getchar();

/*接收用户从键盘上输入的一个字符*/

putchar(c); }

运行情况如下: h ↙ h

/*输出字符变量c的值*/

说明:getchar()函数只能用于单个字符的输入,且一次只能输入一个字符

(2)getch()函数

getch()函数与getchar()函数功能相似,也是用来实现接收从键盘输入一个字符。其区别在于:使用getchar()函数输入字符时,需要使用回车键确认输入,而getch()函数则不必使用回车键确认输入,只需输入字符即可。

getch()函数的一般调用形式为:

54

c= getch(); 或

getch();

/*用于等待用户从键盘输入任意键返回。*/

说明:getch()函数在使用时要在预定义中包含头文件:conio.h 例3_6:应用举例 #include void main()

{ char c1='H',c2='\\55',c3='h'; char c4='\\115'; char c5='a'; putchar(c1); putchar(c2); putchar(c3); printf(\"\\n\");

55

putchar(c4); putchar(c5); putchar('k'); printf(\"\\n\"); } 运行结果: H-h Mak

五.复合语句和空语句 1.复合语句 2.空语句 (自学)

56

3.3顺序结构程序设计举例

例3_7:编程实现输入某个三角形的底和高,计算其面积。 #include void main()

{ float w,h,area;

printf(\"Enter width and height:\"); scanf(\"%f,%f\ area=w*h/2.0;

printf(\"The area is :%f\\n\}

运行结果为:

Enter width and height:2.5,4↙ The area is :5.000000

57

例3.8 实现两个数据的交换,并进行验证。 #include main() { int x,y,t;

printf(\"Enter x & y :\\n\"); scanf(\"%d %d\ printf(\"x=%d y=%d\\n\ t=x;x=y;y=t;

printf(\"x=%d y=%d\\n\}

例3.9输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入。 #include main()

58

{ double x;

printf(\"Enter x: \"); scanf(\"%lf\ printf(\"(1) x=%f\\n\ x=x*100; x=x+0.5; x=(int)x; x=x/100;

printf(\"(2) x=%f\\n\}

例3.10某商场营业员工资的计算方法是:每月300元的基本工资加总销售额的8.5%提成。要求编一程序,输入某营业员的月总销售额,计算并显示该营业员的月收入。 问题分析:

59

设总销售额为m ,月收入为 salary 则:salary=300+m*8.5% #include main()

{ float m,salary;

printf(\"please input the total sales :\"); scanf(\"%f\

salary=300+m*0.085;

printf(\"the salary is %f:\\n\} 作业:

60

因篇幅问题不能全部显示,请点此查看更多更全内容