c语言第4章 顺序程序设计.ppt

上传人:思*** 文档编号:1080143 上传时间:2019-09-22 格式:PPT 页数:66 大小:875.50KB
返回 下载 相关 举报
c语言第4章 顺序程序设计.ppt_第1页
第1页 / 共66页
c语言第4章 顺序程序设计.ppt_第2页
第2页 / 共66页
点击查看更多>>
资源描述

《c语言第4章 顺序程序设计.ppt》由会员分享,可在线阅读,更多相关《c语言第4章 顺序程序设计.ppt(66页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1,第4章 顺序程序设计,C程序设计,2,本章要点,C语句概述 赋值语句 数据输入输出的概念 字符数据的输入输出 格式输入与输出 顺序结构程序设计举例,3,4.1 C语句概述,一、C程序的组成,4,5,程序的执行部分是由语句组成的。 程序的功能也是由执行语句实现的。C语句可分为以下五类: 控制语句 函数调用语句 表达式语句 空语句 复合语句,程序的语句,二、程序的语句,6,1.控制语句 控制语句用于控制程序的流程, 以实现程序的各种结构方式。它们由特定的语句定义符组成。语言有九种控制语句。 可分成以下三类:(1) 条件判断语句 if语句,switch语句(2) 循环执行语句 do while语

2、句,while语句,for语句(3) 转向语句 break语句,goto语句,continue语句,return语句,7,2.函数调用语句 由一个函数调用加一个分号“;”组成。 其一般形式为: 函数名(实际参数表); 执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,求取函数值。或完成函数的功能。例如: printf(C Program); 调用库函数,输出字符串。,注意: 调用标准库函数必须包含相应的头文件。,8,例如: x=y+z; 赋值语句 y+z; 加法运算语句,但计算结果不能保留,无实际意义 i+; 自增1语句,i值增1,3.表达式语句 表达

3、式语句由表达式加上分号“;”组成。 其一般形式为: 表达式; 执行表达式语句就是计算表达式的值。,思考:如何交换两个变量的值?,9,10,11,4.空语句 只有分号“;”组成的语句称为空语句。 空语句是什么也不执行的语句。 在程序中空语句可用来作空循环体。例如 while(getchar()!=n);,本语句的功能:只要从键盘输入的字符不是回车则重新输入。这里的循环体为空语句。,12,5.复合语句 把多个语句用括号 括起来组成的一个语句称复合语句。 复合语句对内部来说有多条语句,对外部来说它又是一个整体,算是一个语句.例如 x=y+z; a=b+c; printf(“%d%d”,x,a); 是

4、一条复合语句。复合语句内的各条语句都必须以分号“;”结尾。 注意:(1)在复合语句中说明的变量,是局部变量, 仅在复合语句中有效。(2)复合语句的 之后,不能有分号。,13,复合语句(程序块) 示例,main( ) int x=1; int x=2; int x=3; printf(“x=%d”, x); printf(“x=%d”, x); printf(“x=%d”, x);,14,4.2 赋值语句 赋值语句是由赋值表达式再加分号构成的表达式语句。 其一般形式为: 变量=表达式; 赋值语句的功能和特点都与赋值表达式相同。 它是程序中使用最多的语句之一。 在赋值语句的使用中需要注意以下几点:

5、 1. 赋值符“=”右边的表达式也可以又是一个赋值表达式,因此,下述形式 变量=(变量=表达式); 是成立的,从而形成嵌套的情形。其展开之后的一般形式为: 变量=变量=表达式; 例如: a=b=c=d=e=5;按照赋值运算符的右接合性,因此实际上等效于: e=5; d=e; c=d; b=c; a=b;,15,2. 注意在变量说明中给变量赋初值和赋值语句的区别。给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。 3. 在变量说明中,不允许连续给多个变量赋初值。 如下述说明是 错误的: int a=b=c=5 必须写为: int

6、a=5,b=5,c=5; 而赋值语句允许连续赋值。 4. 注意赋值表达式和赋值语句的区别。赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。 下述语句是合法的: if(x=y+5)0) z=x; 语句的功能是,若表达式x=y+5大于0则z=x。 下述语句是非法的: if(x=y+5;)0) z=x; 因为x=y+5;是语句,不能出现在表达式中。,16,4.3 数据输入/输出的概念一、数据输入/输出的概念,stdio是standard input &outupt的意思。,考虑到printf和scanf函数使用频繁,系统允许在使用这两个函数时可不加 #include

7、或 #include ”stdio.h”,17,4.4 字符数据的输入/输出,getchar(),字符型数据,字符型数据,putchar(),18,4.4 字符数据的输入/输出一、字符输出函数putchar() putchar 函数是字符输出函数, 其功能是在显示器上输出单个字符。 其一般形式为: putchar(字符变量) 例如: putchar(A); 输出大写字母A putchar(x); 输出字符变量x的值 putchar(n); 换行 对控制字符则执行控制功能,不在屏幕上显示。 * 使用本函数前必须要用文件包含命令: #include stdio.h,19,二、字符输入函数getch

8、ar( ) 函数getchar函数的功能是从键盘上输入一个字符。 其一般形式为: 字符变量=getchar();如: #include void main() char c; printf(input a charactern); c=getchar(); putchar(c); 使用getchar函数还应注意几个问题:,20,1.getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符,多余的字符存入到键盘的缓冲区,若有下一个getchar函数语句,由直接从键盘的缓冲区读一个字符。 #include main() char c1,c2; c1=getch

9、ar(); c2= getchar(); putchar(c1);putchar(c2) 当程序运行后:输入ABCDEF ,输出为: 2.使用本函数前必须包含文件“stdio.h”。,21,4.5 格式输入/输出一、格式输出函数printf(),1. printf函数的一般格式为: printf(格式控制,输出表列) 括弧内包括两部分: (1) “格式控制”是用双引号括起来的字符串,也称“转换控制字符串”,它包括两种信息: 格式说明,由“”和格式字符组成,如%d, %f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“”字符开始的。 普通字符,即需要原样输出的字符。 (2)“输出

10、表列”是需要输出的一些数据,可以是表达式。,22,下面是一个例子: printf(“%d %d ”, a,b ); 格式说明 输出表列 printf(“a%d b=%d”,a,b); 格式说明 输出表列,23,2. 格式字符,(1)d格式符:用来输出十进制整数d:按整型数据的实际长度输出md:按m所指定的长度输出。若实际长度小于m,则在左端补空格;若实际长度大于m,则按实际长度输出; -md:在右端补空格例:int a=123,b=12345; printf(a=%4d,a=%-4d,b=%4d,a,a,b);结果:a=123,a=123,b=12345ld:输出长整型数据 mld或-mld

11、:按m指定的长度输出长整型数例:long a=1234567; printf(a=%ldn,a); printf(a=%8ld,a);结果:a=1234567 a= 1234567,24,对long型数据应当用ld格式输出。对长整型数据也可以指定字段宽度,一个int型数据可以用d或ld格式输出。,(2)o格式符:以八进制形式输出整数 将整数的补码转换成八进制,输出的数值不带符号形式:omo或-mo lomlo或-mlo 例:int a=1,b=-1; printf(a=%d,b=%dn,a,b); printf(a=%o,b=%on,a,b); printf(a=%4o,b=%4o,a,b);

12、结果:a=1,b=-1 a=1,b=177777 a= 1,b=177777,25,(3)x格式符:以十六进制形式输出整数 将整数的补码转换成十六进制,输出数值不带符号形式:xmx或-mx lxmlx或-mlx (若x为大写则输出的十六进制数中的字母也为大写)例:int a=-1; printf(d,o,x,X,a,a,a,a);结果: -1,177777,ffff,FFFF,26,(4)u格式符:以十进制形式输出无符号型(unsigned)整数形式:umu或-mu lumlu或-mlu 例:unsigned int a=65535; printf(%u,%d,a,a);结果: 65535,-

13、1,main() int x, y; x=32767; y = x + 1; printf(“x=%d, y=%d”, x, y); ,x=32767, y=-32768,28,To understand: “ 无符号整型 ”,unsigned int a;,0 65535,unsigned int a, b; a=65535; b=a + 1; printf(“b=%un”, b);,0,main() int k=11; printf(“k=%d, k=%o, k=%xn”, k,k,k); ,A) k=11,k=12,k=11 B) k=11,k=13,k=13 C) k=11,k=013

14、,k=0xb D) k=11,k=13,k=b,main() int k=011; printf(“k=%d, k=%o, k=%xn”, k,k,k); ,k=9,k=11,k=b,main() int x= -1; printf(“%d, %u, %on”, x,x,x); ,A) -1, -1, -1 B) -1, 32767, -177777 C) -1, 32768, -177777 D) -1, 65535, 177777,EXAMPLE:,32,1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,原码,反码,补码,1 1 1 1 1 1 1 1 1 1 1 1 1 1

15、 1 0,1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,main() int x=-1; printf(“%d, %u, %on”, x,x,x); ,65535,-1,177777,main() int x=-1; printf(“%d, %u, %on”, x,x,x); ,A) -1, -1, -1 B) -1, 32767, -177777 C) -1, 32768, -177777 D) -1, 65535, 177777,34,(5)c格式符:输出字符型数据 在0255范围内的整数可以用字符形式输出 字符型数据也可以用整数形式(ASCII值)输出形式:cmc或-m

16、c例:char c=a; putchar(c); printf(%4c,%5d,c,c);结果: aa,97,35,(6)s格式符:输出一个字符串 形式:s:按字符串实际长度输出 ms或-ms:按m指定的宽度输出 m.ns:共占m列,取字符串左端n个字符,左补空格 -m.ns:共占m列,取字符串左端n个字符,右补空格 .ns:没指定m,m自动取n的值例: printf(3s,7.2sn,china,china); printf(.4s,-5.3sn,china,china); 结果: china,ch chin,chi,36,(7)f格式符:以小数形式输出单、双精度实数 形式:f:不指定宽度,

17、整数部分全部输出,小数部分隐含保留6位 m.nf:共占m列,小数部分占n列,左补空格 -m.nf:共占m列,小数部分占n列,右补空格(8)e格式符:以指数形式输出 形式:e:不指定宽度,按规范化指数形式输出,本书保留6位小数,5位指数部分(如e+002)m.ne或-m.ne(若e为大写则输出的指数中的字母也为大写E)例:float f123.456; printf(f,E,10.2e,.2e,-10.2fn,f,f,f,f,f); 运行结果:123.456001,1.234560E+002,1.23e+002,1.23e+002,123.46,37,(9)g格式符:输出实数,自动选用f和e格式

18、中输出宽度较短的一种格式,不输出无意义的0 形式:g或G 例: float f123.468; printf(f,e,gn,f,f,f); 结果: 123.468000,1.234680e+002,123.468,38,下面程序的运行结果是( )。main( )float x, y; x=12.34; y=0.00045; printf(%f,%f,x,y);A12.34,0.00045B12.340000,0.000450C12.34 0.00045D12.340000 0.000450,39,3.格式符小结,printf格式字符,40,41,printf的附加格式说明字符,42,使用pri

19、ntf函数时,还需注意以下几点,(1)除了X,E,G外,其他格式字符必须用小写字母,如d不能写成D。(2)可以在printf函数中的“格式控制”字符串内包含“转义字符”,如“n”, “ t”, “ b”, “ r”, “ f”,“377”等。(3)上面介绍的d、o、x、u、c、s、f、e、g等字符,如用在“”后面就作为格式符号。一个格式说明以 “”开头,以上述9个格式字符之一为结束,中间可以插入附加格式字符(也称修饰符)。,43,printf(“ c=%cf=%fs=%s”,c,f,s);,格式说明,第一个格式说明为“c”而不包括其后的f,第二个格式说明为“f”,不包括其后的S,第三个格式说明

20、为“s”。其他的字符为原样输出的普通字符。,(4)如果想输出字符“”,则应该在“格式控制”字符串中用连续两个表示,如 printf (“%f%”,1.0/3); 输出:0.333333%,44,二、Scanf 函数(格式输入函数,1.一般形式scanf(格式控制,地址表列) “格式控制”的含义同 printf函数; “地址表列”是由若干个地址组成的表列, 可以是变量的地址,或字符串的首地址。,45,2.例子 用scanf函数输入数据#include void main()int a,b,c;scanf(%d%d%d, ,运行时按以下方法输入a、b、c的值:3 |_| 4|_| 53,4,5&a

21、,&b,&c中的“&”是“地址运算符”,&a指a在内存中的地址。,46,说明: “ ddd”表示按十进制整数形式输入数据。输入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键、跳格健tab。,用“ddd”,格式输入数据时,不能用逗号作两个数据间的分隔符。,3.格式说明 与printf函数中的格式说明类似,以开始,以一个格式字符结束,中间可以插入附加字符。,47,Scanf格式字符,48,Scanf的附加格式说明字符,49,说明:(1)对unsigned型变量所需的数据, 可以用u,d或o,x格式输入。,(2)可以指定输入数据所占列数, 系统自动按它截取所需数据。 scanf(“%3d

22、%3d”,思考:若输入12 |_| 3456 ,则a和b分别的值为多少?,说明:(1)对unsigned型变量所需的数据, 可以用u,d或o,x格式输入。,(2)可以指定输入数据所占列数, 系统自动按它截取所需数据。 scanf(“%3d%3d”,50,例如,scanf(“%2d %*3d %2d”,&a,&b);如果输入如下信息:12 |_| 345 |_| 67将12赋给a,%*3d表示读入3位整数但不赋给任何变量。然后再读入2位整数67赋给b。也就是说第2个数据“345”被跳过。在利用现成的一批数据时,有时不需要其中某些数据,可用此法“跳过”它们。,51,(4) 输入数据时不能规定精度,

23、例如,scanf(%72f,&a);是不合法的,不能企图用这样的scanf函数并输入以下数据而使a的值为1234567。1234567,52,5.使用scanf函数时应注意的问题,(1) scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名。,(2)如果在“格式控制”字符率中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。例如 scanf(”d,d”,&a,&b);输入时应用如下形式: 3,4,53,如果是 scanf(”d |_| |_| d”,&s,&b);输入时两个数据间应空2个或更多的空格字符。如: 10 |_| |_| 34或 10 |_| |_|

24、 |_| 34,如果是 scanf(”d:d:d”,&h,&m,&s);输入应该用以下形式: 12:23:36,54,(3)在用“c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入: scanf(“%c%c%c”,如输入: a |_| b|_| c 字符a送给c1,字符|_| 送给c2,字符b送给c3,因为c只要求读入一个字符,后面 不需要用空格作为两个字符的间隔,因此|_| 作为下一个字符送给c2。,思考:以下程序若输入a b,得到什么结果#include main()char ch1, ch2;scanf(%c, ,55,(4)scanf()函数接收输入数据时,若格式控制串中没有

25、非格式字符作输入数据之间的间隔,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。 遇空格,或按“回车”或“跳格”(Tab)键。 按指定的宽度结束,如“3d”,只取3列。 遇非法输入。(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束,如scanf(%d%c%f,&a,&b,&c); 若输入 1234a123o.26 a b c,56,例1 输入三角形的三边长,求三角形面积。 为简单起见,设输入的三边长a、b、c能构成三角形。从数学知识已知求三角形面积的公式为 area=s(s-a)(s-b)(s-c)其中s=(

26、a+b+c)/2 据此编写程序如下:,3.3顺序结构程序设计举例,57,#include main( ) float a,b,c,s,area; scanf(“%f,%f,%f”, ,运行情况如下:3,4,6 a= |_| |_| |_| 3.00, |_| |_| b= |_| |_| |_| 4.00, |_| |_| |c= |_| |_| |_| 6.00, |_| |_| |6.50 area= |_| |_| |_| 5.33,58,程序中第7行中sqrt()是求平方根的函数。由于要调用数学函数库中的函数,必须在程序的开头加一条 #include命令,把头文件“math.h”包含到

27、程序中来。 请注意,以后凡在程序中要用到数学函数库中的函数,都应当“包含”math.h头文件。,59,例2 从键盘输入一个大写字母,要求改用小写字母输出 #include main( ) char c1,c2; c1=getchar( ); printf (“%c,%dn”,c1,c1); c2=c1+32; printf (“%c,%dn”,c2,c2); ,运行情况如下:AA,65a,97,60,用getchar函数得到从键盘上输入的大写字母A,赋给字符变量c1。将c1分别用字符形式(A)和整数形式(65)输出。再经过运算得到小写字母a,赋给字符变量 c2,将c2分别用字符形式(a)和整数

28、形式(97)输出。,返回,61,本章小结 1.程序中执行部分最基本的单位是语句。语言的语句可分为五类: (1)表达式语句 (2)函数调用语句 (3)控制语句 (4)复合语句 (5)空语句 2.语言中没有提供专门的输入输出语句,所有的输入输出都由调用标准库函数中的输入输出函数来实现的。,62,(1)scanf和getchar函数是输入函数,接收来自键盘的输入数据。 scanf是格式输入函数, 可按指定的格式输入任意类型数据, getchar函数是字符输入函数, 只能接收单个字符。 (2)printf和putchar函数是输出函数,向显示器屏幕输出数据。 printf是格式输出函数,可按指定的格式

29、显示任意类型的数据。 putchar是字符显示函数,只能显示单个字符。,63,练习,运行下面程序时若从键盘输入:123 |_| 45 |_| 6789 输出结果是( )。main( ) int a, b, c; scanf(%3d%3d%3d,Aa=123, b=45, c=678Ba=123 b=454 c=678C123, 45, 678Da=123, b=456, c=789,64,已有定义intx;floaty;且执行scanf(%3d%f,A) 1020AB B) 1020ABC)1020AB D) 1020AB,65,语句printf(“%f%”,1.0/3);的输出结果为: A.0.333333 B.0.333333% C.0.333333% D.出错要使doublex;longa;获得数据,正确的输入语句是() A.scanf(“%d,%f”,66,以下程序若a=12, b=45, c=3467, 正确的数据输入方法是( )。main( )int a, b, c; scanf(a=%db=%dc=%d,Aa=12 |_| b=45c=3467B12 |_| 45 |_| 3467Ca=12b=45c=3467Da=12 |_| b=45 |_| c=3467,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com