C语言程序控制结构.pptx
《C语言程序控制结构.pptx》由会员分享,可在线阅读,更多相关《C语言程序控制结构.pptx(100页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、l 主要内容4.1 C4.1 C语言的执行语句语言的执行语句4.2 4.2 顺序结构顺序结构4.3 4.3 选择结构选择结构4.4 4.4 循环结构循环结构第1页/共100页4.1C语言的执行语句 C语言的语句分为声明语句和执行语句。第3章介绍的变量定义语句是最常见的声明语句,声明语句在编译时处理,在程序运行时不产生相应的操作。执行语句的作用是在程序运行时向计算机系统发出操作命令,使计算机执行特定的操作.C语句:以“;”作结束符,编译后产生机器指令。C语句分类:u表达式语句u空语句u控制语句u复合语句第2页/共100页4.1.1表达式语句表达式语句是在表达式的末尾加上分号构成的语句。z=x+s
2、in(y);a-=a*a;赋值语句i+;自增1语句x=0,y=1;逗号表达式语句x+y;无意义printf(“This is a C program.n”);函数调用语句赋值语句和函数调用语句是使用最多的表达式语句如:如:printf(This is a C printf(This is a C statement.);statement.);func(a,5);func(a,5);y=max(a,b);y=max(a,b);第3页/共100页4.1.2空语句仅由一个“;”构成的语句只是在逻辑上起到一个语句的作用,在编译时不产生任何指令,在执行时不产生任何操作。作用:构成标号语句,标示流程的转
3、向点;构成循环语句中空循环体。例如:while(getchar()!=n);只要从键盘上输入的字符不是回车则重新输入。第4页/共100页4.1.3复合语句用 括起来的一组语句。一般形式:执行语句;说明:说明:“”后不加分号后不加分号 其中最后一个语句后也要加分号其中最后一个语句后也要加分号 语法上和单一语句相同语法上和单一语句相同 复合语句可嵌套复合语句可嵌套如:如:z=x+y;z=x+y;t=z/100;t=z/100;printf(%f,t)printf(%f,t);如:如:z=x+y;z=x+y;t=z/100;t=z/100;printf(%f,t)printf(%f,t);第5页/共
4、100页4.1.4控制语句控制语句:完成一定的控制功能。辅助控制辅助控制if()else if()else switchswitchfor()for()while()while()dowhile()dowhile()continuecontinuebreakbreakgotogotoreturnreturn分支分支循环循环如:如:if (xy)z=x;if (xy)z=x;else z=y;else z=y;第6页/共100页4.2顺序结构流程图流程图是表示算法的一种工具,用一些图框来表示各种操作。一个流程图包括以下几部分:表示相应操作的框;带箭头的流程线;框内外必要的文字说明。如,顺序结构流
5、程图:如,顺序结构流程图:A AB B第7页/共100页顺序结构常用的流程图符号:起止框判断框处理框输入/输出框注释框流向线连接点 N-SN-S流程图:完全去掉了流程线流程图:完全去掉了流程线,算法的每一步都用矩算法的每一步都用矩形框描述形框描述,把一个个矩形框按执行的次序连接起来就是一,把一个个矩形框按执行的次序连接起来就是一个完整的算法描述。个完整的算法描述。第8页/共100页顺序结构结构化程序的三种基本结构顺序结构:按书写顺序执行的语句构成的程序段ABAB流程图N-S图 选择结构选择结构 循环结构循环结构第9页/共100页例4.1 输入任意两个整数,求它们的和及平均值。要求平均值取两位小
6、数输出。/例例4.14.1#include#include#include#includevoid main()void main()int num1,num2;int num1,num2;float float sum,aver;sum,aver;printf(Please input two integers:n);printf(Please input two integers:n);scanf(%d,%d,&num1,&num2scanf(%d,%d,&num1,&num2););sum=(float)num1+num2;sum=(float)num1+num2;/*求累计和求累计和*
7、/aver=sum/2.0;aver=sum/2.0;/*求平均值求平均值*/printf(sum=%.0f,aver=%.2fn,sum,printf(sum=%.0f,aver=%.2fn,sum,aver);aver);运行情况:运行情况:3000030000,5005 5005 sum=35005,aver=17502.50sum=35005,aver=17502.50开始开始输入两整数输入两整数计算计算sumsum计算计算averaver结束结束第10页/共100页例4.2 给定一个三位正整数,分别输出其个位数、十位数和百位数。#include#include void main()
8、void main()int m,m0,m1,m2;int m,m0,m1,m2;printf(“Input a number(100999):”);printf(“Input a number(100999):”);scanf(%d,&m);scanf(%d,&m);m0=m%10;m0=m%10;m1=(m/10)%10;m1=(m/10)%10;m2=m/100;m2=m/100;printf(%d,%d,%dn,m0,m1,m2);printf(%d,%d,%dn,m0,m1,m2);运行结果:运行结果:Input a number(100999)Input a number(1009
9、99):263 263 输出:输出:3,6,23,6,2第11页/共100页例4.3 取一个16位的二进制数a的7、6、5、4四个位,如图4-2中加阴影的部分。void main()unsigned a,b,c,d;scanf(%x,&a);/*以十六进制形式输入整数a*/b=a4;c=(04);d=b&c;printf(%xn%xn,a,d);/*以十六进制输出a和结果d*/第12页/共100页例4.4 求ax2+bx+c=0方程的根。a,b,c由键盘输入,设 。一元二次方程式的根为 x1=x2=可以将上面的分式分为两项:p=,q=,则 x1=p+q,x2=p-q。顺序结构第13页/共100
10、页#include#include#include#include void main()void main()float a,b,c,disc,x1,x2,p,q;float a,b,c,disc,x1,x2,p,q;scanf(a=%f,b=%f,c=%f,&a,&b,&c);scanf(a=%f,b=%f,c=%f,&a,&b,&c);disc=b disc=b*b-4b-4*a a*c;c;p=-b/(2 p=-b/(2*a);a);q=sqrt(disc)/(2 q=sqrt(disc)/(2*a);a);x1=p+q;x2=p-q;x1=p+q;x2=p-q;printf(nx1=
11、%5.2fnx2=%5.2fn,x1,x2);printf(nx1=%5.2fnx2=%5.2fn,x1,x2);运行情况:运行情况:输入:输入:a=1,b=3,c=2 a=1,b=3,c=2 输出:输出:x1=-1.00 x1=-1.00 x2=-2.00 x2=-2.00第14页/共100页4.3选择结构选择结构是指在程序执行过程中,根据指定条件的当前值在两条或多条路径中选择一条执行。C语言的选择控制语句有两条:条件选择语句:if语句开关分支语句:switch语句第15页/共100页4.3.1 if语句表达式语句1真(非0)假(0)1、if 格式(单分支语句)if (判断表达式)语句1;语
12、句 1可以是一条语句或复合语句。注意:满足条件时想要执行多条语句一定要用复合语句 当判断表达式值不为零(即”真”),则执行语句1,再执行其后继语句;否则,不执行语句 1,执行其后继语句。第16页/共100页单分支语句判断表达式应该是具有一定意义、有实用价值的表达式,因此,最常用关系表达式和逻辑表达式来表达,例如:if(a=b)if(a=0)等价于if(!a)if(a!=0)等价于if(a)if(a=5&a=10)例:输入一个整数,求绝对值.main()int i;scanf(%d,&i);if (i 0)i=-i;printf(%d,i);例:执行下列程序段后 a 的值是_。int a=3;i
13、f(2)a=5;第17页/共100页单分支语句#include main()char c;printf(input a letter:);c=getchar();if(c=A&c=z)c=c+32;printf(%cn,c);例4.5 从键盘输入一个字母,以小写字母形式输出该字母第18页/共100页单分支语句例4.6从键盘输入两个整数,按升序输出这两个数。#include#includevoid main()void main()int a,b,t;int a,b,t;scanf(%d%d,&a,&b);scanf(%d%d,&a,&b);if(ab)if(ab)t=a;/t=a;/交换两数交
14、换两数 a=b;a=b;b=t;b=t;printf(%d,%dn,a,b);printf(%d,%dn,a,b);T TF Fababt=at=aa=ba=bb=tb=t第19页/共100页例:输入三个数a,b,c,要求按由小到大的顺序输出。If ab 将a和b对换If ac 将a和c对换If bc 将b和c对换abacbca和b交换a和c交换c和b交换yyynn单分支语句第20页/共100页单分支语句#include#include void main()void main()float a,b,c,t;float a,b,c,t;scanf(scanf(%f%f%f%f%f%f,&a,&
15、b,&c);,&a,&b,&c);if(ab)if(ab)t=a;t=a;a=b;a=b;b=t;b=t;if(ac)if(ac)t=a;t=a;a=c;a=c;c=t;c=t;if(bc)if(bc)t=b;t=b;b=c;b=c;c=t;c=t;printf(%5.2f,%5.2f,%5.2fn,a,b,c);printf(%5.2f,%5.2f,%5.2fn,a,b,c);必不可少,否必不可少,否则,会出现逻辑则,会出现逻辑错误!错误!第21页/共100页2、if(表达式)语句1 else 语句2 条件 语句1 语句2YN双分支if-else语句各有一个分号;但属于一个语句各有一个分号;
16、但属于一个语句例:例:if(xy)if(xy)printf(“%d”,x);printf(“%d”,x);else else printf(“%d”,y);printf(“%d”,y);第22页/共100页双分支if-else语句说明:在if和else后面可以只含有一条语句,也可以含有用花括号 括起来的复合语句。如:if(a+b)c&(b+c)a&(c+a)b)s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(area=%6.2f,area);else printf(it is not a trilateral.);第23页/共100页例:输
17、入两个数并判断两数是否相等。#include void main()int a,b;printf(Enter integer a:);scanf(%d,&a);printf(Enter integer b:);scanf(%d,&b);if(a=b)printf(a=bn);else printf(a!=bn);运行结果:运行结果:Enter integer a:12Enter integer a:12 Enter integer b:12Enter integer b:12 a=b a=b 运行结果:运行结果:Enter integer a:12Enter integer a:12 Ente
18、r integer b:9Enter integer b:9 a!=b a!=b 双分支if-else语句第24页/共100页分析以下程序的输出结果:(1)(1)#include#include void main()void main()int a,b;int a,b;scanf(%d,&a);scanf(%d,&a);b=1;b=1;if(a=5)if(a=5)b=a+3;b=a+3;b=6;b=6;printf(%dn,b);printf(%dn,b);(2)(2)#include#include void main()void main()int a,b,t;int a,b,t;sca
19、nf(%d%d,&a,&b);scanf(%d%d,&a,&b);if(ab)if(ab)t=a;a=b;b=t;t=a;a=b;b=t;printf(a=%d,b=%dn,a,b);printf(a=%d,b=%dn,a,b);getch();getch();第25页/共100页(3)(3)#include#include void main()void main()int x,y;int x,y;scanf(%d,&x);scanf(%d,&x);y=-1y=-1;if(if(x!=0 x!=0)y=1;y=1;if(x0)y=1;if(x0)y=1;else else y=0;y=0;(
20、4)(4)程序输出结果程序输出结果#include#include void main()void main()int x,y;int x,y;scanf(%d,&x);scanf(%d,&x);y=0;y=0;if(x=0)if(x=0)if(x0)y=1;if(x0)y=1;elseelse y=-1;y=-1;printf(%dn,y);printf(%dn,y);第26页/共100页3.多分支语句几种形式:if(if(表达式表达式1)1)if(if(表达式表达式2)2)语句语句1 1 elseelse 语句语句2 2 内嵌内嵌if if if(if(表达式表达式1)1)语句语句1 1e
21、lseelse if(if(表达式表达式2)2)语句语句3 3 else else 语句语句4 4内嵌内嵌if if if(if(表达式表达式1)1)if(if(表达式表达式2)2)语句语句1 1 else else 语句语句2 2elseelse if(if(表达式表达式3)3)语句语句3 3 else else 语句语句4 4内嵌内嵌if if内嵌内嵌if if if(if(表达式表达式1)1)if(if(表达式表达式2)2)语句语句1 1 else else 语句语句2 2内嵌内嵌if if第27页/共100页3、if(表达式1)语句1 else if(表达式2)语句2 else if(
22、表达式3)语句3 else if(表达式m)语句m else 语句n多分支语句第28页/共100页例:if(number500)cost=0.15;else if(number300)cost=0.10;else if(number100)cost=0.075;else if(number50)cost=0.05;else cost=0;多分支语句第29页/共100页多分支语句匹配规则:Else总是与它上面的,最近的,统一复合语句中的,未配对的if语句配对。当if和else数目不同时,可以加花括号来确定配对关系。例:例:if(aif(a=b)b)if(b if(b=c)c)printf(“a
23、printf(“a=b b=c”);c”);else else printf(“a!=b”);printf(“a!=b”);修改:修改:if(aif(a=b)b)if(b if(b=c)c)printf(“a printf(“a=b b=c”);c”);else else printf(“a!=b”);printf(“a!=b”);第30页/共100页 -1 (x0)算法1:算法1:输入x 输入x若x0,则y=-1 若x0,则y=1 若x=0,则y=0输出y 若x0,则y=1 输出y 多分支语句第31页/共100页程序程序#include#includevoid main()void main
24、()int x,y;int x,y;scanf(“%d”,&x);scanf(“%d”,&x);if(x0)if(x=0)if(x=0)if(x0)y=1;if(x0)y=1;else y=0;else y=0;else y=-1;else y=-1;正确?正确?第32页/共100页程序1:程序2:if(x=0)y=-1;if(x0)y=1;else else y=0;if(x=0)y=0;else y=-1;else y=1;程序3:程序4:y=-1;y=0;if(x!=0)if(x=0)if(x0)y=1;if(x0)y=1;else y=0;else y=-1;正确正确上例中的程序段有四
25、个,请判断哪个是正确的?X=90)printf(An);else if(score=80)printf(Bn);else if(score=70)printf(Cn);else if(score=60)printf(Dn);else printf(En);第35页/共100页多分支语句例4.8 分段函数定义如右:根据所输入的x的值,求函数值。main()float x,y;scanf(%f,&x);if(x0)y=0;else if(x=50)y=x;else y=x*x;printf(x=%f,y=%fn,x,y);第36页/共100页4.3.2 switch语句switch语句的格式:sw
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序控制 结构
限制150内