C语言C程序的基本控制结构.pptx
《C语言C程序的基本控制结构.pptx》由会员分享,可在线阅读,更多相关《C语言C程序的基本控制结构.pptx(96页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 程序设计语言有顺序、选择、循环三种基本的控制结构。1用流程图表示(1)顺序结构 表示先执行A,再执行B。BAab第1页/共96页(2)选择结构 如果P条件成立,执行A,否则执行B,然后转向后面的语句。abab第2页/共96页(3)循环结构 有两种形式。while 结构(当型循环)表示先判断条件表达式P,当P成立,即为“真”,反复执行循环体A;直到P不成立,即为“假”,转向其后面的语句。注意:注意:如果如果P一开始就不成立,一开始就不成立,则则A一次也不执行,一次也不执行,直接转到下一条语句。直接转到下一条语句。ab第3页/共96页 do-while结构(直到型循环)先执行循环体语句A,然后判
2、断条件表达式P。注意:注意:不管条件不管条件P 成立与否,循环体成立与否,循环体A至至少执行一次。少执行一次。ab第4页/共96页三种基本结构的共同特点1.只有一个入口;2.只有一个出口;3.结构内的每一部分都有可能被执行到;4.结构内不存在“死循环”。第5页/共96页3.1.1 C程序的语句C语言的语句可分为以下四类:1.表达式语句2.函数调用语句 3.控制语句 4.复合语句 5.空语句 简单语句第6页/共96页1.表达式语句由一个表达式加上一个分号构成。其一般形式为:表达式;如:x=y+z;y+z;i+;2.函数调用语句由函数调用表达式加分号构成.如:printf(“C Program”)
3、;scanf(“%d”,&a);第7页/共96页3.控制语句用于控制程序的流程,以实现程序的各种结构方式。语言有九种控制语句,可分成以下三类。(1)条件判断语句:if语句,switch语句。(2)循环执行语句:do while语句,while语句,for语句。(3)转向语句:break语句,goto语句,continue语句,return语句。第8页/共96页4.4.复合语句复合语句 把多个语句用大括号括起来组成的一个语句称复合语句。例如:花括号中的语句,可以是简单语句、空语句、复合语句、流程控制语句,所有这些语句括在一起,在语法上看成是一条语句,执行时顺序执行花括号中的每条语句。复合语句多用
4、于流程控制语句中。x=y+z;a=b+c;printf(“%d%d”,x,a);复合语句内的各条语句都必须以分号复合语句内的各条语句都必须以分号“;”结尾,结尾,在括号在括号“”外不能加分号。外不能加分号。第9页/共96页5.空语句只有分号组成的语句称为空语句。例如:while(getchar()!=n);第10页/共96页3.1.2 数据输出函数printf()和putchar一printf()函数(格式输出函数)1.调用的一般形式 printf(“格式控制字符串”,输出表列)其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在
5、%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。可以是常量、变量、可以是常量、变量、表达式表达式1.格式字符2.转义字符3.普通字符第11页/共96页【练一练】void main()int a=88,b=89;printf(%d%dn,a,b);printf(%d,%dn,a,b);printf(%c,%cn,a,b);printf(a=%d,b=%dn,a,b);程序运行输出结果:88 8988,89X,Ya=88,b=89第12页/共96页2格式字符串 格式字符串的一般形式为:3.1 3.1 顺序结构顺序结构第13页/共96页格式转换说明符(格式字符)功能%c 输出一
6、个字符%d 输出十进制整数,按实际位数输出%f 定点格式输出浮点数,整数部分取实际位数,小数部分保留6位%e 指数格式-m.ddddde+nn输出浮点数%g 选择%f和%e格式中,输出宽度较小的一种%s输出字符串,按实际位数输出%u输出十进制无符号整数,按实际位数输出%o输出八进制无符号整数,按实际位数输出%x输出十六进制无符号整数,按实际位数输出%输出一个%p输出指针值第14页/共96页对于格式转换说明符可以进行以下三类修饰:1.1.指定字段宽度指定字段宽度(1)%m.nd其中:m 规定输出字段的最小宽度;n 规定输出最小有效位数。例如,printf(“%3d,%6d,%6.5dn”,123
7、4,1234,1234);输出结果为1234,1234,01234(2)%m.nf其中:m 规定输出字段的最小宽度;n 规定输出小数位数。第15页/共96页例如,printf(“%10f,%10.2f,%.2fn”,123.456,123.456,123.4);输出结果为123.456000,123.46,123.40(3)%m.ne其中:m 规定输出最小宽度;(n-1)为尾数部分的小数位数。例如,printf(“%10e,%10.4e,%.3en”,123.456,123.456,123.4);输出结果为1.23456e+02,1.235e+02,1.23e+02第16页/共96页注意:(1
8、)无论是无论是%m.nf%m.nf 还是还是%m.ne%m.ne 格式,对舍去的小数最高格式,对舍去的小数最高位都四舍五入。位都四舍五入。例如,例如,printf(printf(“%04d,%010.2f,%010.3en%04d,%010.2f,%010.3en”,125,12.3,123.5);,125,12.3,123.5);输出结果为:输出结果为:0125,0000012.30,001.24e+020125,0000012.30,001.24e+02(2)对以上三种情况,如果在对以上三种情况,如果在“%”和和 m.n m.n 之间加一个之间加一个 0 0,则在规定字段宽度内左边多余的空
9、位以则在规定字段宽度内左边多余的空位以 0 0 来填充,而不来填充,而不是空格。是空格。第17页/共96页(4)%m.ns2.2.左对齐左对齐 如果在“%”之后加一个负号(即“-”),则在规定的宽度内输出内容向左对齐,右面补空格或“0”。例如,printf(“%3s,%15s,%10.5s,%.4sn”,”China”,”Beijing”,”Beijing”,”China”);其中:m 的含义与前面相同;n 规定截取输出字符串左面的字符个数,字符串长度小于 n 时,按实际长度输出(n不起作用)。输出结果为 China,Beijing,Beiji,Chin第18页/共96页例如,printf(“
10、%-3d,%-6d,%-6.5dn”,1234,1234,1234);printf(“%-10f,%-10.2f,%-.2fn”,123.456,123.456,123.4);printf(“%-3s,%-15s,%-10.5s,%-.4sn”,”China”,”Beijing”,”Beijing”,”China”);输出结果为1234,1234 ,01234123.456000,23.46 ,123.40China,Beijing ,Beiji ,Chin第19页/共96页3.3.类型修饰类型修饰(2)在类型说明符 f、e、g 前面可以加字母 l,表示输出double 型数据。(1)在类型说
11、明符 d、u、o、x、i 前面可以加字母“l”或“h”,分别表示输出 long 或 short 型的数据。例如,printf(“%d,%ldn”,7000,70000l,);例如,printf(“%15.8lf,%16.9len”,12.34567889,12.34567889);输出结果为 12.34567889,1.234567889e+01第20页/共96页关于格式输出的几点说明:-1和65535例如,printf(“%d,%u,%o,%xn”,-1,-1,-1,-1);printf(“%d,%u,%o,%xn”,65534u,65534u,65534u,65534u);(1)对于任何一
12、种形式的整数都可以用 d、i、o、u、x(或“X”)格式输出,其中 d、i 输出带符号十进制形式,而 u、o、x格式输出无符号整数。输出结果为-1,65535,177777,ffff-2,65534,177776,fffe-2和655341 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0假设一个基本整假设一个基本整型数据在内存占型数据在内存占2B第21页/共96页(2)如果 printf()函数中有多个表达式时,不同系统求值顺序不同。Turbo C 系统的求值顺序是自右至左的。而Visual C+6.0在从右到左进行时,
13、还按运算符不同分批运算。例如,printf(“%d,%d,%dn”,2+3,3*4,6/2);void main()int i=8;printf(%dn,+i);printf(%dn,-i);printf(%dn,i-);printf(%dn,i+);printf(%dn,-i-);例3-1 printf函数输出表列中的求值顺序运行输出结果:9887-8第22页/共96页void main()int i=8;printf(%dn%dn%dn%dn%dn,+i,-i,i-,i+,-i-);Turbo C中的结果:7687-8Visual C+6.0中的结果8788-8 因为不同的系统对这种问题的
14、处理方式采用不同的规则。所以,应该尽可能在printf语句内输出变量的值,不建议输出表达式的值。第23页/共96页例3-2:使用printf函数输出如下信息:*好好学习,天天向上*#include void main()printf(“*n”);printf(好好学习,天天向上好好学习,天天向上n);printf(*n);输出结果:*好好学习,天天向上*第24页/共96页例3-3:使用printf函数输出如下信息:姓名 外语 数学王丽 60 70程序:#include void main()printf(姓名t外语t数学n);printf(“王丽t60t70n”);第25页/共96页二字符输出
15、函数putchar()一般调用形式为:putchar(字符参数)其功能是在显示器上输出单个字符。例如:设char x=B;int i=66;putchar(A);输出大写字母Aputchar(x);输出字符变量x的值字母Bputchar(101);输出字符Aputchar(n);换行putchar(65);输出大写字母Aputchar(i);输出变量i的值为ASCII码的字母B字符型常量、变量或整型常量、变量注意:使用本函数前必须要用文件包含命令:#include第26页/共96页3.1.3数据输入函数scanf()和getchar 一 scanf函数(格式输入函数)一般调用形式 scanf(
16、“输入格式控制串”,输入变量地址清单);格式转换说明符格式转换说明符其他字符其他字符例如,int k;float x;char ch;scanf(“%d,%f,%c”,&k,&x,&ch);第27页/共96页格式转换说明符功能%c 输入一个字符%d 输入十进制整数%f 输入浮点数,不能指定小数位数%e 输入浮点数,不能指定小数位数%s输入字符串,遇空格、制表符或回车符结束%u输入十进制无符号整数%o输入八进制无符号整数%x输入十六进制无符号整数第28页/共96页关于 scanf()函数使用的几点说明:1 1 输入数据的分隔符输入数据的分隔符:空格、制表符或回车键例如,scanf(“%d%d%d
17、”,&i,&j,&k);输入形式可以是:3 4 5 3 4 5 3 4 5第29页/共96页2 2 输入数据类型输入数据类型1)输入长整型数据时,可以用%ld、%lo、%lx 或%lu,而且用整型格式控制整型变量输入时,从键盘输入的必须是整数。例如,scanf(“%d%d”,&a,&b);如果输入12.56 23结果 a=12,而变量 b 没有得到值。2)当用%f 或%e 格式控制float和double型变量的输入时,输入的数据可以是小数形式、指数形式或整数。不能指定小数位数。第30页/共96页3)对于用%c 格式输入 char 型数据时,不需加单引号。如果连续输入多个字符时,不需要使用分隔
18、符。例如,scanf(“%c%c%c”,&c1,&c2,&c3);如输入ABC则有 c1=A,c2=B,c3=C而如输入A B C则有 c1=A,c2=,c3=B第31页/共96页4.4.限制输入数据的宽度(限制输入数据的宽度(“m”m”)例如,scanf(“%5d%4d%4d”,&a,&b,&c);scanf(“%10s”,str);如果输入1234567890good morning则各变量的值:a=12345,b=6789,c=0字符型数组 str 得到的值是“good”第32页/共96页二getchar()函数一般形式为:getchar()功能:是从键盘上输入一个字符。通常把输入的字符
19、赋予一个字符变量,构成赋值语句,如:#includevoid main()char c;printf(input a charactern);c=getchar();putchar(c);注意:使用本函数前必须要用文件包含命令:#include第33页/共96页3.1.4顺序结构程序举例例3-1:编写程序,要求输入以华氏度表示的温度值,输出以摄氏度表示的温度值。【提示】表示温度的单位有两种:摄氏度和华氏度。由华氏度转换为摄氏度的转换公式为:C=5/9(F-32)其中C代表摄氏度,F代表华氏度。第34页/共96页测试(运行)输入华氏温度:75.5摄氏温度为:24.2C程序如下:#includev
20、oid main()float f,c;printf(输入华氏温度:n);scanf(%f,&f);c=5.0/9.0*(f-32);printf(摄氏温度为:%5.1fCn,c);第35页/共96页3.1.5 常见错误(自修)第36页/共96页3.2.1关系运算1.关系运算符 运算符含 义运算级别结合性小于优先级相同(高)左结合大于=大于或等于=等于优先级相同!=不等于(低)3.2 3.2 选择结构选择结构第37页/共96页2.关系表达式 用关系运算符将两个表达式连接起来所构成的表达式。一般形式为:关系表达式的值:“真”和“假”两种,分别用“1”和“0”表示。例如,设有定义:int a=3,
21、b=4,c=5,d=6,i=-8,j=1,k=2,x=0;计算下列各表达式的值。1.a+bc-d 2.x3/2 3.a+1(bc)6.a!=(c=d)7.abc1001110第38页/共96页3.2.2逻辑运算1.逻辑运算符 语言中提供了三种逻辑运算符。逻辑运算符含 义运算级别结合性!逻辑非(高)右结合&逻辑与左结合|逻辑或(低)第39页/共96页2逻辑表达式 用逻辑运算符将任意C表达式连接起来构成的表达式。一般形式为:3逻辑运算的值 在C语言中分别用“1”和“0”来表示“真”和“假”。参加逻辑运算的表达式以“非0”和“0”代表“真”和“假”。aba&ba|b!a!b0000110非00110
22、非000101非0非01100第40页/共96页 int a=5;float b=3.5;!a ()!(a b)()a&b ()!a&b()!a&!b ()!(a&b)()a b ()!a|b ()!a|!b ()!(a|b)()(a 0)()(a 0)()例如011000110001第41页/共96页1 if-else语句一般格式:if(表达式)语句1;else 语句2;功能:如果表达式的值为真,则执行语句功能:如果表达式的值为真,则执行语句1 1,否则执行语句否则执行语句2 2。语言的if语句有两种基本形式。第42页/共96页例 输入两个整数,求最大数。#include void main
23、()/*主函数*/int a,b;int max;printf(n 请输入两个数:);scanf(%d%d,&a,&b);if(ab)/*判断表达式*/max=a;/*语句1*/else max=b;/*语句2*/printf(max=%dn,max);请输入两个数:8 9max=9第43页/共96页3.2.3 if语句和条件运算符省略else分支的if语句 一般形式:if(表达式)语句1 或 if(表达式)语句1 功能:如果表达式的值为真,则执行其后的“语句1”,否则不执行“语句1”。第44页/共96页例 输入两个整数,求最大数。#include void main()/*主函数*/int
24、a,b;int max;printf(n 请输入两个数:);scanf(%d%d,&a,&b);max=a;if(maxb)/*判断表达式*/max=b;/*语句1*/printf(max=%dn,max);请输入两个数:8 9max=9第45页/共96页#include void main()int a,b,t;scanf(“%d,%d”,&a,&b);if(a b)t=a;a=b;b=t;printf(“Result:%d,%d”,a,b);例3-5:输入两个整数,按从小到大顺序输出。第46页/共96页2 if-else-if形式(当有多个分支选择时采用)一般形式为:if(表达式1)语句1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序 基本 控制 结构
限制150内