C03顺序结构程序设计课件_第1页
C03顺序结构程序设计课件_第2页
C03顺序结构程序设计课件_第3页
C03顺序结构程序设计课件_第4页
C03顺序结构程序设计课件_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、长江大学计算机科学学院第三章 顺序结构程序设计 教学目标了解C语句的基本形式;熟练掌握C程序的输入输出格式和使用方法;熟悉顺序结构程序的编写方法。基本要求能编制简单的具有输入输出功能的C程序。长江大学计算机科学学院第三章 顺序结构程序设计 教学目标长江大学计算机科学学院C程序的结构 但课本中的大多数例子,程序都比较简单,一般都只用到了一个源程序文件,而且有些程序的功能很简单,只要用一个主函数就可以实现。 一个C程序可以由若干个源程序文件构成,一个源程序文件可以由若干个函数、一些可选的“预编译命令”及一些可选的全局变量声明等构成。图3.1 C程序的结构长江大学计算机科学学院C程序的结构 但课本中

2、的大多数例子,长江大学计算机科学学院3.1 C语句概述C语句可以分为以下五种类型:1.表达式语句:在表达式的后面加上一个分号构成。 例:x = 100 /* C表达式 */ x = 100;/*表达式语句 */ x+5; /* 合法,但没意义 */2.控制语句:由特定的语句定义符组成,用于控制程序的流程,以实现程序的各种结构方式。语言有九种控制语句。 可分成以下三类: (1) 条件判断语句:if语句,switch语句; (2) 循环执行语句:do while语句、while语句和for语句; (3) 转向语句:break语句、goto语句、continue语句 和return语句。长江大学计算

3、机科学学院3.1 C语句概述C语句可以分为以下五长江大学计算机科学学院3.函数调用语句:由函数名、函数的实际参数加上分号“;”组成。 例:printf(This is a C statement.n);4.空语句:仅包含一个分号的语句。5.复合语句:把多个语句用一对花括号 括起来组成的一个语句称为复合语句。 例如 : main ( ) int x, y, z, t; x=8; y=6; if (xy) z = x y ; t = z * 2; else z = x + y ; t = z / 2; printf(z=%d, t=%d n,z,t); 长江大学计算机科学学院3.函数调用语句:由函

4、数名、函数的实际长江大学计算机科学学院3.2 赋值语句 在赋值表达式的尾部加上一个分号,就构成了赋值语句。赋值语句形式多样、用法灵活。 使用赋值语句时需要注意以下几点: 1.在赋值运算符“=”的左边只能是变量; 例如:a = 6 +1; 2.在赋值运算符“=”右边的表达式也可以又是一个赋值表达式,从而形成嵌套的情形,一般形式为: 变量 = 变量 = 表达式; 例如:a=b=c=5; 按照赋值运算符的右接合性,上述语句实际上等效于: c=d;b=c;a=b;a +1 = 6; 考题:int a; float x,y;x=a=y=35.8;x= ? ,a= ? ,y= ? ; 35.03535.8

5、长江大学计算机科学学院3.2 赋值语句 在赋值表达长江大学计算机科学学院3.注意在变量说明中给变量赋初值的操作和赋值语句的区别。 给变量赋初值是变量说明的一部分,只能出现在函数的说明部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔;而赋值语句则必须出现在函数的执行部分,并且一定要用分号结尾。 例如: main( ) int x=3, y=4, m, n; /*变量赋初值*/ m=x+y; /*赋值语句*/ n=x-y; /*赋值语句*/ 长江大学计算机科学学院3.注意在变量说明中给变量赋初值的操作长江大学计算机科学学院 4.注意赋值表达式和赋值语句的区别。赋值表达式是一种表达式,它

6、可以出现在任何允许表达式出现的地方,而赋值语句则不能。 例如:if(x=y+5)0) z=x; 语句的功能是:先把y+5的结果赋值给变量x,然后再判断x的值是否大于0,若该值大于0则执行语句z=x;否则不执行语句z=x; 而语句if(x=y+5;)0) z=x; 是非法的语句,其中x=y+5; 本身就是一条语句,不能出现在表达式中,因为C语言的语法规定if后面的( )中只能是一个表示条件的表达式。 长江大学计算机科学学院 4.注意赋值表达式和赋值语句的区别长江大学计算机科学学院3.3 数据的输入与输出 把数据从计算机的内部送到计算机的外部设备上的操作称为“输出”。反之,从计算机的外部设备(如键

7、盘、磁盘等)上将数据送入到计算机内部的操作则称为“输入”。 在语言中,所有的数据输入输出操作都是通过对标准库函数的调用来完成的。本节的内容主要是介绍常用的printf函数、scanf函数、getchar函数和putchar函数。长江大学计算机科学学院3.3 数据的输入与输出 把数据长江大学计算机科学学院3.3.1 printf函数 printf函数的函数原型在头文件stdio.h中。但作为一个特例,Turbo C系统不要求在使用 printf 函数之前必须包含stdio.h文件。1printf函数的一般调用形式 printf(格式控制字符串,输出项表列)格式控制字符串可以包含以下三种形式的字符

8、:(1)格式说明。格式说明是以%开头的字符串,在%后面跟有格式字符及格式修饰符,用以说明输出数据的类型、形式、长度、小数位数等格式信息。 格式说明的一般形式如下: %标志宽度.精度h|l(2)转义字符。如:n、001等。(3)普通字符。如:printf(max=%dn , a ); 长江大学计算机科学学院3.3.1 printf函数 长江大学计算机科学学院例3.1 printf函数中的格式控制字符串。 main( ) int i=2858; float x=3.14159; printf(i=d,x=f,x+5=fn,i,x,x+5); 在上例的格式控制串中,”i=”按原样输出,在%d的位置上

9、输出整型变量i的值,接着按原样输出”,x=”,在%f的位置上输出实型变量x的值,接着又按原样输出”,x+5=”,在%f的位置上输出实型表达式x+5的值,最后的n是C语言中特定的转义字符,相当于一个回车符,使得屏幕上的光标或打印机的机头移到下一行的开头,用以改变下一个输出项的输出位置。 运行结果: i=2858, x=3.141590, x+5=8.141590 长江大学计算机科学学院例3.1 printf函数中的格式控长江大学计算机科学学院2. printf函数中常用的格式说明(1)格式字符(数据类型字符)%标志宽度.精度h|l长江大学计算机科学学院2. printf函数中常用的格式说明长江大

10、学计算机科学学院(2) 格式修饰符 %标志宽度.精度h|l格式修饰符加在和格式字符之间。长江大学计算机科学学院(2) 格式修饰符 %标志宽度长江大学计算机科学学院 数据类型修饰符h|l 以下三种情况需要用到数据类型修饰符 长整型:长整型数一定要用%ld(long)来输出; 短整型 可以用%hd来输出,ANSI C中不实用; Double 类型的实数可以用%lf 来输出, 也可以用%f 来输出。%标志宽度.精度h|l长江大学计算机科学学院 数据类型修饰符h|l 以下三种长江大学计算机科学学院 输出数据所占的宽度与精度(整数值) 在输出数据时,数据所占的宽度(域宽,即输出的数据在屏幕上所占的格数)

11、通常是由系统自动决定的,一般取决于数据本身的宽度,并采用右对齐的形式输出。 %标志宽度.精度h|l1) 在与格式字符之间用一个正整数来指定宽度 如果指定的输出宽度不够,以数据实际值的宽度作为输出宽度;如果指定的输出宽度多于数据实际所需宽度,数据右对齐,左边补以空格。长江大学计算机科学学院 输出数据所占的宽度与精度(整数值)长江大学计算机科学学院main ( )printf(%dn,42); /*输出结果:42*/ printf(%5dn,42); /*输出结果: 42*/ printf(%f,123.54); /*输出结果:123.540000*/ printf(%12fn,123.54);

12、/*输出结果: 123.540000*/ printf(%en,123.54); /*输出结果:1.235400e+02*/ printf(%13en,123.54); /*输出结果: 1.235400e+02*/ printf(%gn,123.5); /*输出结果:123.5*/ printf(%8gn,123.5); /*输出结果: 123.5*/ 例3.2 在printf函数中指定输出数据的宽度。长江大学计算机科学学院main ( )例3.2 在pri长江大学计算机科学学院2) 输出数据的精度 精度对于不同的格式字符具有不同的含义: ) 对于e、E或f:用精度来指定小数位数,缺省值为6;

13、 printf(8.3fn,123.55); 输出结果: 123.550 printf(8.1fn,123.55) ; 输出结果: 123.6 printf (8.0fn,123.55); 输出结果: 124 printf (8fn,123.55); 输出结果: 123.550000 当数据的小数位多于“精度”指定的位数时,截去多余的小数,并对截去的最高小数位做四舍五入处理;当数据的小数位少于“精度”指定的位数时,在右边添0补齐。 当数据的实际值较大,“宽度”指定的总宽度有可能不够用,系统会自动地对输出数据的小数位仍按上述规则处理,而对输出数据的整数部分则按数据实际值的宽度输出。 %标志宽度.

14、精度h|l长江大学计算机科学学院2) 输出数据的精度 精度对于不同的格长江大学计算机科学学院精度的不同含义2) 对于g或G:用精度来指定有效数字的位数,缺省值为6; printf(gn,123.56789) ; 输出结果:123.568 printf (.7gn,123.56789); 输出结果:123.5679 ) 对于整数:用精度来指定必须输出的数字个数,若输出的数字少于指定的个数,则在数字前面加0补足;若输出的数字多于指定的个数,按数字的实际宽度输出。 printf(8.5dn,42); 输出结果: 00042 ) 对于字符串: 用精度来指定最多输出的字符个数。 printf (%10.

15、5sn,abcdefg);输出结果: abcde长江大学计算机科学学院精度的不同含义2) 对于g或G:用精长江大学计算机科学学院 输出数据左对齐标志- 可以在指定输出宽度的同时指定数据左对齐。这可在宽度前加一个-号来实现。 例3.4 在printf函数中指定输出数据以左对齐的格式输出。main ( )printf(%5d#n,168); /*输出结果: 168#*/ printf(%-5d#n,168); /*输出结果:168 #*/ printf(%14.6lf#n,7.6855); /*输出结果: 7. 685500#*/ printf(%-14.6lf#n ,7.6855); /*输出结

16、果:7. 685500 #*/ printf(%14.6s#n ,abcdefgh); /*输出结果: abcdef#*/ printf(%-14.6s#n, abcdefgh); /*输出结果: abcdef #*/ 长江大学计算机科学学院 输出数据左对齐标志- 可长江大学计算机科学学院 在和格式字符间(或宽度前)加一个+号。 例如: printf(+d,+dn,100,-200); 输出结果为:+100,-200 使输出的数字总是带有正/负号 在输出数据前加前导0 在指定宽度的同时,在数据前面的多余空格处填以数字0。 例如: printf(05dn,59);输出结果为:00059 prin

17、tf(012.5fn,3.1415); 输出结果为:000003.14150长江大学计算机科学学院 在和格式字符间(或宽度前)加长江大学计算机科学学院 通常,在用格式字符o(x)按八进制数(十六进制数)的形式输出整数时,在数据的前面并不出现0(0 x),如果需要在输出的八进制数(十六进制数)前添加0(0 x),可在号与格式字符o或x之间插入一个#号(注意:#号对其它格式字符通常不起作用)。 例如:printf(%o,%#o,%x,%#xn ,31,31,31,31); 输出结果如下:37, 037, 1f, 0 x1f %,表示输出一个字符。 例如:printf(%d%n,60); 输出结果为

18、:60% 输出八(十六)进制数时添加前导0(0 x)长江大学计算机科学学院 通常,在用格式字符长江大学计算机科学学院3. 调用printf函数时的注意事项 (1) 格式控制串中的各个格式说明与输出项表列中的各个输出项,从左到右在类型上必须一一对应匹配。如果不匹配,将导致数据不能正确输出,这时,系统并不报错。特别是在输出长整型数据时,一定要使用%ld(或%lu、%lo、%lx等)格式说明。 (2) 在格式控制串中,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数,多余的输出项不予输出;如果格式说明的个数多于输出项的个数,则对于多余的格式说明将输出不确定的值(或0值)。 (3)

19、printf函数的返回值是一个整数值,通常是在本次调用过程中输出的字符个数,但这个值一般情况下没有多大的实际意义。长江大学计算机科学学院3. 调用printf函数时的注意事项长江大学计算机科学学院3.3.3 scanf函数 格式输入函数scanf 的函数原型在头文件stdio.h中。 1. scanf函数的一般调用形式 scanf (格式控制字符串,地址表列);格式控制字符串的一般形式为:%*输入数据宽度 h|l 地址表列中给出的是各变量的地址。 地址是由取地址运算符&后跟变量名组成的。 例如,scanf(%d %d, &a, &b); 其中&a, &b分别表示变量a和变量b 的地址。 sca

20、nf函数的返回值等于成功输入的数据的个数。长江大学计算机科学学院3.3.3 scanf函数 格式输入长江大学计算机科学学院2. scanf函数中常用的格式说明%*输入数据宽度 h|l长江大学计算机科学学院2. scanf函数中常用的格式说明长江大学计算机科学学院scanf函数的格式修饰符%*输入数据宽度 h|l长江大学计算机科学学院scanf函数的格式修饰符%*输长江大学计算机科学学院 (1) 格式控制中的数据类型与地址表列中的数据的类型,应该一一对应匹配。如果类型不匹配,系统并不给出错误信息,但不可能得到正确的数据。 例如下列程序在编译时没有任何错误,但在执行时输出的结果总是:y=0.000

21、000。 main ( ) float y; scanf(%d,&y); printf(y=%f n,y); scanf函数中格式控制的几点说明:长江大学计算机科学学院 (1) 格式控制中的数据类型与长江大学计算机科学学院 (2) 在程序运行时,当用户输入的数据少于输入项时,程序等待输入,直到满足要求为止,并且当用户从键盘输入完各项数据之后一定要按下回车键(Enter键),scanf函数才能接受到从键盘输入的数据。 当输入的数据多于输入项时,多余的数据并不消失,而是留作下一个输入操作时的输入数据。为了不影响下一个输入操作的正确进行,可以在下一个输入函数之前用清除函数fflush(stdin)

22、清除输入缓冲区中残余数据。 长江大学计算机科学学院 (2) 在程序运行时,当用户输长江大学计算机科学学院3. 通过scanf函数从键盘输入数据时需要注意的几个问题 (1) 数据项之间的间隔符 间隔符可以是空格符、制表符(Tab键)或回车符(CR 即Enter键),间隔符的数量不限。 例如,假设a、b、c为整型变量,若有以下输入语句: scanf(ddd,&a,&b,&c); 输入形式为:182838 (2) 指定输入的数据所占的宽度 如:scanf(%5d%4f,&a,&b ); 但某些C的编译系统并不要求必须按指定的宽度输入数据。 (3) 跳过输入数据的方法 例如: scanf(%d%*d%

23、d%d,&al,&a2,&a3); 当输入以下数据时:18 28 38 48 将把18赋给a1,跳过28,把38赋给a2,把48赋给a3。长江大学计算机科学学院3. 通过scanf函数从键盘输入数长江大学计算机科学学院 若在scanf的格式控制字符串中插入了其它字符,则在输入时要求按一一对应的位置原样输入这些字符。例如:int al,a2,a3; scanf(Input a1,a2,a3:ddd,&al,&a2,&a3); 要求按以下的形式输入: Input a1,a2,a3: 18 28 38(5) 输入双精度的实数一定要用%lf。(6) 字符型数据的输入 输入字符型数据时,各数据项之间不能

24、有间隔符,间隔符也会被当作一般字符输入到变量中去。当程序中既需要输入数值数据,又需要输入字符型数据时,最好分别用两个scanf函数来实现。 (4) 在格式控制串中插入其它字符长江大学计算机科学学院 若在scanf的格式控制字符串长江大学计算机科学学院例3.5 字符型数据的输入 #include stdio.h main ( ) char c1, c2; scanf(%c, &c1); /*只读取输入的第一个字符*/ /*fflush(stdin); 清除输入缓冲区的其它字符*/ scanf(%c, &c2); printf(c1 is %c, c2 is %c, c2, c2); 运行该程序时

25、,若在键盘上输入一个字符A后按回车键,则程序给变量c1赋值A,给变量c2赋值回车符。 fflush(stdin)可以清除输入缓冲区的多余的数据, 也可以连续输入AB两个字符后再按回车键。 程序的输出结果为: c1 is A, c2 is B。 长江大学计算机科学学院例3.5 字符型数据的输入 #in长江大学计算机科学学院3.3.2 putchar函数 putchar 函数是字符输出函数, 其功能是在显示器上输出单个字符。它的函数原型在头文件stdio.h中,使用本函数前必须要用文件包含命令:#include putchar 函数的一般形式为: putchar(ch); 其中ch可以是一个字符变

26、量或常量(含转义字符),也可以是一个整型变量或常量。例如: putchar (A); 或 putchar(65); 输出大写字母A。 putchar (x); 变量x可以是字符变量或整型变量。 putchar (n); 输出字符常量n,在屏幕上实现回车换行的功能。 长江大学计算机科学学院3.3.2 putchar函数 长江大学计算机科学学院3.3.4 getchar函数 getchar函数的功能是从键盘上输入一个字符,函数的返回值是所读取的字符的ASCII码值。使用本函数前必须包含文件stdio.h。 getchar函数的一般形式为:getchar(); 通常用法:char c; c=getc

27、har(); 注意:用户在键盘上键入一个字符后还必须键入回车键才能结束getchar函数并返回值。若要在程序中只需输入字符即可正确返回按键的值,可使用getche()函数(所键入的字符回显到显示屏上)和getch()函数(所键入的字符不回显到显示屏上) 。长江大学计算机科学学院3.3.4 getchar函数 长江大学计算机科学学院例3.6 输入一个小写字母,输出该字母及其ASCII码值。 #include stdio.hmain( )char c1,c2; printf(Input a lowercase letter: ); c1=getchar(); putchar(c1); printf

28、(,%dn,c1); c2=c1- 32; /*将大写字母转换成对应的小写字母*/ printf(%c,%dn,c2,c2);程序运行结果如下: Input a lowercase letter: aa,97A,65长江大学计算机科学学院例3.6 输入一个小写字母,输出该字母长江大学计算机科学学院3.4 顺序结构程序举例例3.7 编程从键盘输入圆的半径radius,输出圆的周长和圆的面积 main() float radius,length,area,pi=3.141592; printf(input radius: ); scanf(%f,&radius); length=2*pi*radi

29、us; /*求圆周长*/ area=pi*radius*radius; /*求圆面积*/ printf(radius=%fn ,radius); /*输出圆半径*/ printf(length=%7.2f,area=%7.2fn ,length,area); 程序运行结果如下: input radius: 1.5radius=1.500000length= 9.42,area= 7.07 长江大学计算机科学学院3.4 顺序结构程序举例例3.7 编程长江大学计算机科学学院例3.8 交换x和y的值并输出。 #include stdio.h main() int x , y, t ; printf(Enter x y:n ); scanf(%d%d, &x, &y); printf(x=%d y=%dn ,x,y); t = x; x = y ; y = t ; printf(x=%d y=%dn , x , y); 程序运行结果如下: Ente

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论