第4章-最简单的C程序设计顺序程序设计..ppt_第1页
第4章-最简单的C程序设计顺序程序设计..ppt_第2页
第4章-最简单的C程序设计顺序程序设计..ppt_第3页
第4章-最简单的C程序设计顺序程序设计..ppt_第4页
第4章-最简单的C程序设计顺序程序设计..ppt_第5页
免费预览已结束,剩余47页可下载查看

下载本文档

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

文档简介

第4章最简单的C程序设计顺序程序设计4.1C语句概述4.1.1C语言语句分类:1、操作运算语句:用于描述计算机要执行的操作运算(如算术运算、赋值、输出等),由于C语言的操作运算用表达式进行,这类语句又叫表达式语句。2、流程控制语句:控制操作运算的执行顺序(第5、6章介绍)。(1)形成流程控制结构的语句,a、选择结构控制语句:if语句、switch语句b、循环结构控制语句:while语句、dowhile语句、for语句(2)流程转向语句a、限定转向语句:break语句、continue语句、return语句b、自由转向语句:goto语句4.1.2C语言语句一览表:,赋值表达式语句简单表达式语句函数调用语句表达式语句空语句逗号表达式(复合表达式)语句单分支结构:if语句选择结构双分支结构:ifelse语句基本语句形成流程控制语句elseif嵌套语句控制结构多分支结构switch语句C的语句while语句语循环结构dowhile语句言流程控控制语句for语句语制语句break语句句限定转continue语句流程转向语句return语句向语句自由转向语句:goto语句复合语句(就是用把一些语句括起来),4.1.3表达式语句1、赋值语句(1)形成:将赋值表达式加上“;”号就构成了赋值语句;(2)由复合赋值运算符或自增、自减运算符组成的表达式也是赋值表达式。例如有如下一些赋值类表达式语句:a=b+c;a+=b;i+;-j;等等。,2、函数调用语句(由于表达式中可包含函数调用,单纯函数调用是表达式特例)形成:函数调用加“;”号,如scanf();printf();等等。,3、空语句:没有内容的语句,只有一个“;”。例如:;/*空语句*/作用:空语句不进行任何操作。是程序员为今后增加语句保留位置做的记号。4、逗号表达式语句:由逗号表达式加“;”组成,如:i=3,i+,+i,i+5;其实,在C语言中,所有表达式加“;”都构成表达式语句,只是有些表达式语句(如3;或者a+b*c;)没有什么实际意义而已。,4.1.4复合语句(语句块、分程序)1、构成:在函数的执行部分用一对花括号括起若干语句。如:a+;b*=a;printf(a=%d,b=%dn,a,b);注意:“”之后没有“;”!2、作用(1)当作一条语句使用,一般用在只能使用一条语句,却又必须使用多条语句的地方。例如作为选择结构的一个分支或作为循环结构的循环体。(2)当作函数中的一个独立部分,此时复合语句中除了有可执行语句外,在可执行语句的前面还可以有说明部分语句(如定义变量等),因此叫做“分程序”。例如:,main()inta=2;intb;b=3;printf(“%dn”,a+b);分程序注意:复合语句(分程序)中定义的变量只能在分程序中使用。,4.2顺序结构程序设计1、顺序结构的组成(1)表达式语句(2)复合语句2、顺序结构与选择、循环结构的关系:可相互嵌套。,4.3数据输入和输出及其在C语言中的实现1、C语言输入和输出都是通过系统的库函数来完成的。2、C输入、输出库函数:,(1)输入、输出字符函数:getchar()和putchar()(2)格式化输入、输出函数:scanf()和printf()(3)输入、输出字符串函数:gets()和puts()注:这些库函数均是通过标准的输入和输出设备(键盘和显示器)输入和输出的。都包含在头文件stdio.h中,故在源文件开头需要预编译命令:#include“stdio.h”或#include。,4.4字符数据的输入输出函数4.4.1字符输出函数putchar()1、调用格式:putchar(ch);/*ch是字符变量或字符常量*/2、作用:将字符ch输出到屏幕上。如:charc1=X;putchar(c1);putchar(Y);输出XY。,4.4.2字符输入函数getchar()1、调用的一般格式:ch=getchar();/*ch是字符变量*/2、作用:通过键盘输入字符,存入缓冲区,给变量赋值。读入的字符包括各种字符(含空格、Tab和回车等,因此注意输入时不要随意输入空格,并注意回车的处理,否则变量得不到正确的字符)。注意:如果在一个函数中要调用putchar()和getchar(),应该在该函数的前面(或文本开头)加上“包含命令”:#include,#includemain()intc;printf(Enteracharacter:);c=getchar();printf(%c-hex%xn,c,c);,运行结果:Enteracharacter:AA-hex41,4.5格式输入与输出4.5.1格式输出函数printf()1、一般调用格式:printf(格式控制字符串,输出项1,输出项2,)(1)“格式控制字符串”包括:a、格式说明:以%开头、格式字符(P32表3-2)结束,控制输出项的输出格式。b、普通字符:ASCII码字符、汉字,原样输出。如a=、最大值=等。c、转义字符,如n回车换行、t控制到下一个制表站等。(2)输出项:可以是常量、变量、函数调用和表达式。,2、格式说明(1)完整的格式说明%+0#整数1.整数2l或h格式字符指定输出数据类型格式终止符长度修正:l:对整型指long对实型指doubleh:指短整型整数1:域宽(输出总字符数)适用各种类型整数2:对实数为小数位数对整数为数字个数:大于实际个数前面补0小于实际个数按实际个数输出对字符串为输出字符的个数对格式字符o(八进制)数字前加0对格式字符x或X(十六进制)数字前加0 x或0X对数值输出,右对齐时左空位补0(缺省补空格)对数值输出,总输出符号(+号或号)缺省只输出号左对齐输出,缺省按域宽右对齐输出格式起始符,(2)补充说明a、实数的精度(有效数字)由输出项类型控制(float7位double16位),对float型输出项用%lf格式不能增加精度;输出实数的小数位数由“整数2”控制,增大“整数2”不能增加精度。,b、“整数1”表示域宽,“整数2”作用见上图两者均缺省情况下:对整数和字符串按实际字符数输出;对实数(float和double):小数型:整数部分原样输出,默认输出6位小数,多余小数四舍五入处理。指数型:正数默认输出1位非0整数(负数有负号)、小数点、6位小数、5位指数(e或E、+或号及3位指数)共13个字符(负数14个字符)。(vc环境,tc环境与上不同)指定域宽不足,按需增加域宽。指定域宽富余:缺省右对齐:无0控制:前加空格;有0控制:数值型前加0填齐;其它类型前加空格。有控制左对齐,按域宽后面加空格。,例inta=1234;floatf=123.456;floatb=54.35678432charch=a;printf(“%d,%f,%e”,a,f,b);printf(“%8d,%2dn”,a,a);printf(“%8f,%8.1f,%.2f,%.2e,%.8en”,f,f,f,f,f);printf(“%3cn”,ch);,例m.n(注:VC+中%m.nen指数值部分小数的位数),运行1234,123.456000,5.435684e+001结果:-1234,1234123.456000,-123.5,123.46,1.23e+002,1.23456000e+002-a,例staticchara=“Hello,world!”printf(“%sn%15sn%10.5sn%2.5sn%.3sn”,a,a,a,a,a);,运行结果:Hello,world!-Hello,world!-HelloHelloHel,例inta=1234;floatf=123.456;staticcharc=“Hello,world!”;printf(“%8d,%-8dn”,a,a);printf(“%10.2f,%-10.1fn”,f,f);printf(“%10.5s,%-10.3sn”,c,c);,运行结果:-1234,1234-123.46,123.5-Hello,Hel-,例-,例inta=1234;floatf=123.456;printf(“%08dn”,a);printf(“%010.2fn”,f);printf(“%+08dn”,a);printf(“%+010.2fn”,f);,例0、+,例inta=123;printf(“%o,%#6o,%X,%#6Xn”,a,a,a,a);,例#,/00001234,/0000123.46,/+0001234,/+000123.46,/173,-0173,7B,-0X7B,3、输出:从右向左计算输出项后,按格式说明的顺序、类型和要求对应输出。(1)格式说明和输出项的个数应相同,如不匹配系统并不报错,将不能正确输出。a、格式说明的个数少于输出项的个数,多余的输出项将不输出;b、格式说明的个数多于输出项的个数,多余的格式说明将输出随机的值。(2)在“格式控制字符串”中可用%输出一个%。,4.5.2格式输入函数scanf()1、一般调用形式:scanf(格式控制字符串,地址1,地址2,)(1)“格式控制字符串”包括:a、格式说明:控制输入项的类型等。b、数据分隔符,如“,”、空格等。用了分隔符在输入时就必须用该字符分隔数据,否则出错;可以不用数据分隔符,此时在输入数值数据时必须用空格(Tab键或回车)分隔数据,输入字符数据不能用空格(Tab键或回车)!,(2)变量“地址”形式为:执行的结果是:通过键盘输入2个十进制有符号整数,例如:123-456分别送到变量a、b的内存地址中去。,2、格式控制字符串(1)输入一个数据的较完整的格式说明:%*整数l或h格式字符指定输入数据类型(P37表3-3)格式终止符(一般只能用小写)长度修正:l:对整型指long(l必须增加)对实型指double(l必须增加)h:指短整型(l必须增加)输入域宽说明(注意:无小数位数)赋值抑制符,跳过对应本项输入的数据格式说明起始符,例intk;floatf;scanf(“%3d%*4d%f”,输入12345678765.43则123k,8765.43f,例charc1,c2;scanf(“%3c%2c”,输入abcde则ac1,dc2,(2)注意事项a、在格式控制字符串中,格式说明的类型与输入项的类型应一一对应匹配。如果类型不匹配,系统并不报错,但得不到正确的数据。b、在格式控制字符串中,格式说明的个数应与输入项的个数相同。若格式说明的个数少于输入项的个数,按格式说明的个数输入前面的输入项,多余的输入项没有输入数据;若格式说明的个数多于输入项的个数,按格式说明的个数输入完后结束输入,多余的数据留给下次输入用。,3、分隔输入数据的方法:a、按格式字符取得数据,当遇到类型不符的输入时,认为一数据项结束。,例、main()inta;charb;floatc;printf(inputabc:);scanf(%d%c%f,运行时输入及结果为:inputabc:1234r1234.567输出:a=1234,b=r,c=1234.567017,b、当格式说明中有域宽时,按域宽分隔出数据项。例、main()inta;floatb,c;scanf(%2d%3f%4f,运行时输入:123456.78987654321输出:a=12,b=345.000000,c=6.780000,c、用分隔符分隔数据在格式控制字符串中没有分隔符,输入时可用空格、Tab键、回车键分隔数据(均为默认分隔符,无须在格式控制字符串中加入);注意:字符型数据。在格式控制字符串中有分隔符(如逗号等),输入时要原样输入,如果输错,将不能得到正确的数据。,例scanf(“%d,%d”,c1=getchar();printf(%c,%dn,c1,c1);c2=c1+32;printf(%c,%dn,c2,c2);,输入:A输出:A,65a,97,例交换x、y的值main()intx,y,t;printf(“Enterx,变量交换,可不用中间变量,用如下方法:(1)a=a+b;b=a-b;a=a-b;(2)a=ab;b=ab;a=ab;,【例3-18】分析下面程序的运行结果(P45),#includemain()intx=1,y=5;printf(x=%d,y=%d,x,y);,【例3-19】分析下面程序的运行结果(P45),#includemain()inta,b;a=0 x41;/*65*/b=+a;/*66*/printf(%d,%dn,a-,-b);printf(%c,%cn,+a,b+);,实验三1、使用函数getchar()与putchar()编写将B,e,i,j,i,n,g以单个字符赋给变量后显示beijing的程序2、使用函数printf()编制程序显示下面图形abbbccccc3、用下面的scanf函数输入数据,使a=10,b=20,c1=A,c2=a,x=1.5,y=-3.75,z=67.8,请问在键盘上如何输入数据?并用printf函数将各个变量输出scanf(“%5d%5d%c%c%f%f%*f%f”,习题课,1、scanf(“%c%c%c”,若输入abc则ac1,c2,bc3,2、intx;charch;scanf(“%d”,执行:123输出:x=123,ch=10,3、已知intk1,k2,k3,k4,为使k1=10,k3=10且k2=20,k4=20,则对应下列scanf函数调用语句的正确输入方式是()scanf(“%d%d”,A.1020B.10_20102010_20C.10,20D.10_2010,2010,20,4、已知charch;intk;为了使ch=c,k=555,正确的scanf函数调用语句和相应的数据输入是()A.scanf(“%3c%3d”,12_555_c,5、已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A,B,当从第一列开始输入数据时,正确的数据输入方式是()inta1,a2;charc1,c2;scanf(“%d%d”,1020ABB.10-20ABC.10-20-ABD.10-20AB,6、根据定义和数据的输入方式,输入语句的正确形式为()已有定义:floatf1,f2;数据的输入方式:4.523.5scanf(“%f,%f”,7、执行以下程序时,若从第一列开始输入数据,为使变量a=3,b=7,x=8.5,y=71.82,c1=A,c2=a,正确的数据输入形式是:main()inta,b;floatx,y;charc1,c2;scanf(“a=%d-b=%d”,8、以下程序不用第三个变量,实现将两个数进行对调的操作,请填空#includemain()inta,b;scanf(“%d%d”,(1)A.a+bB.a-bC.a*bD.a/b(2)A.a+bB.a-bC.b-aD.a*b(3)A.a+bB.a-bC.b-aD.a/b,9、以下C程序正确的运行结果是:main()longy=-43456;printf(

温馨提示

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

评论

0/150

提交评论