《【精品】C语言-程序控制结构精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】C语言-程序控制结构精品ppt课件.ppt(112页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言-程序控制结构 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构第第4章章程序控制结构程序控制结构4.1 4.1 C C语言的执行语句语言的执行语句4.2 4.2 顺序结构顺序结构4.3 4.3 选择结构选择结构v上机任务上机任务4 44.4 4.4 循环结构循环结构v上机任务上机任务5 5v上机任务上机任务6 6v上机任务上机任务7 72 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构4.1C C语言的执行语句语言的执行语句C程序组成程序组成C C程序程序源程序文件源程序文件1 1源程序文件源程序文件2 2源程序文件源程序文件3 3预处理命令预
2、处理命令函数函数n n函数函数1 1数据声明数据声明函数首部函数首部函数体函数体数据声明数据声明执行语句执行语句3 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构4.1C语言的执行语句语言的执行语句C语句的分类:语句的分类:v表达式语句表达式语句v空语句空语句v复合语句复合语句v控制语句控制语句4 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构表达式语句表达式语句赋值语句:变量赋值语句:变量=表达式表达式;功能:将功能:将“=”右侧表达式的值赋给左侧右侧表达式的值赋给左侧变量的值。变量的值。函数调用语句;函数调用语句;如:如:putchar(ch);
3、5 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构4.2顺序结构顺序结构顺序结构程序:由两个或两个以上的语句组成,顺序结构程序:由两个或两个以上的语句组成,先执行先执行A操作,然后再执行操作,然后再执行B操作。操作。传统流程图传统流程图N-S流程图流程图 A B AB8 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构顺序结构程序设计举例顺序结构程序设计举例例例4.1输入任意两个整数,求它们的和及平均值。要求平输入
4、任意两个整数,求它们的和及平均值。要求平均值取两位小数输出。均值取两位小数输出。#includevoidmain()intnum1,num2;floatsum,aver;printf(“Pleaseinputtwointegers,suchas(5,3):n);scanf(%d,%d,&num1,&num2);sum=(float)num1+num2;/*求累计和求累计和*/aver=sum/2.0;/*求平均值求平均值*/printf(sum=%.0f,aver=%.2fn,sum,aver);9 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构顺序结构程序设计举例顺序结
5、构程序设计举例#includevoidmain()intm,m0,m1,m2;printf(Inputanumber(100999):);scanf(%d,&m);m0=m%10;m1=(m/10)%10;m2=m/100;printf(“Thethreedigitsare:);printf(%d,%d,%dn,m0,m1,m2);例例4.2给定一个三位正整数,分别输出它的个位数、给定一个三位正整数,分别输出它的个位数、十位数和百位数。十位数和百位数。10 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构顺序结构程序设计举例顺序结构程序设计举例例例4.4求方程求方程ax2+
6、bx+c=0的根。的根。a、b、c由键盘输入,由键盘输入,假设假设a0且且b2-4ac0。#include#includevoidmain()floata,b,c,d,x1,x2;printf(Inputthreefloats(a,b,c):);scanf(%f,%f,%f,&a,&b,&c);d=b*b-4*a*c;/*求判别式的值赋给求判别式的值赋给d*/x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(x1=%.4fnx2=%.4fn,x1,x2);11 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构4.3选择结构选择
7、结构C语言的选择控制结构语句有:语言的选择控制结构语句有:if语句和语句和switch语句语句if语句是用来判断所给定的条件是否满足,根语句是用来判断所给定的条件是否满足,根据判定的结果据判定的结果(真或假真或假)决定执行给定的某种操决定执行给定的某种操作之一。作之一。12 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构if语句的形式语句的形式1单分支结构单分支结构格式格式:if(表达式表达式)语句语句执行过程:执行过程:语句语句成立成立表达式表达式入口入口入口入口出口出口出口出口不成立不成立13 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构if语
8、句的形式语句的形式2双分支结构双分支结构格式格式:if(表达式表达式)语句语句1else语句语句2执行过程:执行过程:不成立不成立语句语句1语句语句2成立成立表达式表达式入口入口入口入口出口出口出口出口14 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构if语句举例语句举例1例例4.6:输入两个实数,按升序输出两个实数。输入两个实数,按升序输出两个实数。解法一:解法一:#includevoidmain()floata,b,t;scanf(%f%f,&a,&b);if(ab)printf(%f,%fn,b,a);单边条件单边条件(条件判断(条件判断两次)两次)15 C语言语
9、言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构if语句举例语句举例1解法二:解法二:#includevoidmain()floata,b;scanf(%f%f,&a,&b);if(ab)printf(%f,%fn,b,a);elseprintf(%f,%fn,a,b);双边条件双边条件(条件判断(条件判断一次)一次)16 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构if语句举例语句举例1解法三:解法三:#includevoidmain()floata,b,t;scanf(%f%f,&a,&b);if(ab)t=a;a=b;b=t;/*两个变量交换数据两个变
10、量交换数据*/printf(%f,%fn,a,b);单边条件单边条件(条件判断(条件判断一次)一次)3个语句用花括号个语句用花括号括起来构成括起来构成1个复个复合语句合语句若不使用复合语句,若不使用复合语句,则可用则可用t=a,a=b,b=t;17 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构if语句的形式语句的形式3多分支结构多分支结构格式格式:if(表达式表达式1)语句语句1elseif(表达式表达式2)语句语句2elseif(表达式表达式3)语句语句3:elseif(表达式表达式n)语句语句nelse语句语句n+1假假语句语句1真真表达式表达式1 1表达式表达式2
11、 2表达式表达式3 3表达式表达式n n语句语句n+1语句语句n语句语句3语句语句2真真真真真真假假假假假假入口入口入口入口出口出口出口出口18 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构if语句举例语句举例2解法一:用多分支解法一:用多分支if语句语句#includevoidmain()intx,y;scanf(%d,&x);if(x0)y=1;elseif(x=0)y=0;elsey=-1;printf(x=%d,y=%dn,x,y);1(x0)y=0(x=0)-1(x0)例例4.8:根据所输入的:根据所输入的x之值,求之值,求19 C语言语言程序设计程序设计 第
12、第4 4章章 程序控制结构程序控制结构if语句举例语句举例2解法二:用多个单分支解法二:用多个单分支if语句语句#includevoidmain()intx,y;scanf(%d,&x);if(x0)y=1;if(x=0)y=0;if(x0)y=-1;printf(x=%d,y=%dn,x,y);20 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构if语句举例语句举例2解法三:用双分支解法三:用双分支if语句的嵌套语句的嵌套#includevoidmain()intx,y;scanf(%d,&x);if(x=0)if(x0)y=1;elsey=0;elsey=-1;pri
13、ntf(x=%d,y=%dn,x,y);这是一个这是一个嵌套结构嵌套结构21 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构if语句的嵌套语句的嵌套在在if语句中又包含一个或多个语句中又包含一个或多个if语句语句,称为称为if语句语句的嵌套的嵌套一般形式一般形式:if(条件条件1)if(条件条件2)语句语句1else语句语句2elseif(条件条件3)语句语句3else语句语句4if与与else的配对关系:从最内层开始的配对关系:从最内层开始,else总是与总是与它上面最近的且尚未配对的它上面最近的且尚未配对的if配对。配对。为了使逻辑关系清晰,为了使逻辑关系清晰,建议采
14、用建议采用“分层缩进书写分层缩进书写格式格式”。22 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构在内嵌在内嵌if语句中要注意配对关系语句中要注意配对关系结合右图,观察以下程序,能否实现例结合右图,观察以下程序,能否实现例4.8的功能:的功能:#includevoidmain()intx,y;scanf(%d,&x);y=-1;if(x!=0)if(x0)y=1;elsey=0;printf(x=%d,y=%dn,x,y);输入输入0输出结果:输出结果:x=0,y=-1真正的配对真正的配对结果错误结果错误假假y=1真真 x!=0 x!=0 x0 x0y=-1y=0真真假
15、假23 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构在内嵌在内嵌if语句中要注意配对关系语句中要注意配对关系在内嵌在内嵌if语句中加花括号改变配对关系语句中加花括号改变配对关系#includevoidmain()intx,y;scanf(%d,&x);y=-1;if(x!=0)if(x0)y=1;elsey=0;printf(x=%d,y=%dn,x,y);结论:如果内层结论:如果内层if语句为单边结构,要加花括号语句为单边结构,要加花括号花括号改变配花括号改变配对关系对关系结果正确结果正确正确配对正确配对24 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程
16、序控制结构条件运算符的应用条件运算符的应用例例4.5:输入一个字符,判断它是否大写字母,若是:输入一个字符,判断它是否大写字母,若是将其转换为小写;否则原样输出。将其转换为小写;否则原样输出。#includevoidmain()charch;scanf(%c,&ch);ch=(ch=A&ch=Z)?ch+32:ch;printf(%cn,ch)25 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构switch语句(多分支选择语句,开关语句)语句(多分支选择语句,开关语句)switch语句的格式语句的格式:switch(表达式表达式)case常量表达式常量表达式1:语句语句1
17、;break;case常量表达式常量表达式2:语句语句2;break;case常量表达式常量表达式3:语句语句3;break;case常量表达式常量表达式n:语句语句n;break;default:语句语句n+1执行过程:执行过程:先计算先计算switch后面表达式的值,如果后面表达式的值,如果与某个与某个case后的常量值相等,则执行其后的语句;若所后的常量值相等,则执行其后的语句;若所有有case中的常量值都不能与之匹配,则执行中的常量值都不能与之匹配,则执行default后的后的语句语句n+1。根据此表达式的根据此表达式的值找入口值找入口一般为常量,一般为常量,TCTC要要求为求为int
18、int或或charchar型型26 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构switch语句流程图(无语句流程图(无break语句)语句)注意注意:执行完入口语句后执行完入口语句后,则自动转到下一个则自动转到下一个case后面的语句执行;后面的语句执行;表达式表达式语句语句1语句语句2语句语句3语句语句n语句语句n+1=常量常量3=常量常量2=常量常量1=其它其它=常量常量n27 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构switch语句流程图(有语句流程图(有break语句)语句)注意注意:如果语句中有如果语句中有break;,则执行完一
19、个入,则执行完一个入口语句后跳出口语句后跳出switch选择结构。选择结构。表达式表达式语句语句1语句语句2语句语句3语句语句n语句语句n+1=常量常量3=常量常量2=常量常量1=其它其它=常量常量n28 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构switch语句举例语句举例例例4.9:输入成绩等级:输入成绩等级,打印出百分制分数段。打印出百分制分数段。#includevoidmain()charc;printf(Pleaseenteracharn);c=getchar();c=(c=a&c=z)?c-32:c;switch(c)caseA:printf(“90100
20、n);break;caseB:printf(“8089n);break;caseC:printf(“7079n);break;caseD:printf(“6069n);break;caseE:printf(60n);break;default:printf(errorn);注意:注意:casecase后面应为字后面应为字符常量符常量AA、BB等,不等,不能为变量能为变量A A、B B等。等。29 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构switch语句举例(无语句举例(无break语句的效果)语句的效果)例例4.9:输入成绩等级:输入成绩等级,打印出百分制分数段。打
21、印出百分制分数段。#includevoidmain()charc;printf(Pleaseenteracharn);c=getchar();c=(c=a&c=z)?c-32:c;switch(c)caseA:printf(“90100n);caseB:printf(“8089n);caseC:printf(“7079n);caseD:printf(“6069n);caseE:printf(60n);default:printf(errorn);去掉去掉breakbreak语句,程序运语句,程序运行后,从键盘上输入行后,从键盘上输入bb,则程序运行的顺,则程序运行的顺序和结果如下:序和结果如下
22、:80897079606960error30 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构switch语句使用说明语句使用说明各个分支中如果没有各个分支中如果没有break语句,则执行了相应的操作语句,则执行了相应的操作后,会自动转到下一个后,会自动转到下一个case后面的语句执行。后面的语句执行。case后面的常量值不能相同。后面的常量值不能相同。各个分支中允许有多个语句,可以不用各个分支中允许有多个语句,可以不用括起来。括起来。各个各个case和和default分支的顺序可以改变,但分支的顺序可以改变,但default总是总是最后考虑的入口。如果各个分支中均有最后考
23、虑的入口。如果各个分支中均有break语句,各语句,各个分支的出现次序不影响执行结果。个分支的出现次序不影响执行结果。可以使多个可以使多个case共用同一组执行语句。共用同一组执行语句。31 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构例例4.10输入百分制成绩,要求输出相应的五级制输入百分制成绩,要求输出相应的五级制成绩。百分制成绩与五级制成绩之间的转换标成绩。百分制成绩与五级制成绩之间的转换标准为:准为:90分以上为分以上为“A”,80-89分为分为“B”,70-79分为分为“C”,60-69分为分为“D”,60分以下为分以下为“E”。switch语句举例语句举例#
24、includevoidmain()intscore;scanf(%d,&score);switch(score/10)case10:case9:printf(An);break;case8:printf(Bn);break;case7:printf(Cn);break;case6:printf(Dn);break;default:printf(En);32 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构上题也可用多分支上题也可用多分支if语句实现,见课本语句实现,见课本P71例例4.7。#includevoidmain()intscore;scanf(%d,&score)
25、;if(score=90)printf(An);elseif(score=80)printf(Bn);elseif(score=70)printf(Cn);elseif(score=60)printf(Dn);elseprintf(En);switch语句举例语句举例33 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构选择结构程序设计举例选择结构程序设计举例判断字母、数字判断字母、数字分段函数值的计算分段函数值的计算三个数中求最大数三个数中求最大数求三角形面积求三角形面积判断闰年判断闰年计算器程序计算器程序求一元二次方程的根求一元二次方程的根对三个数进行升序排序对三个数进
26、行升序排序34 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构例例1:从键盘上输入一个字符判断是数字、字母:从键盘上输入一个字符判断是数字、字母或其它字符。课本或其它字符。课本P81例例4.13#includevoidmain()charc;c=getchar();if(c=A&c=a&c=0&c=9)printf(digitn);elseprintf(othern);35 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构例例2:计算分段函数。课本:计算分段函数。课本P73例例4.8#includevoidmain()floatx,y;scanf(%f
27、,&x);if(x0)y=0;elseif(x=50)y=x;elsey=x*x;printf(x=%f,y=%fn,x,y);36 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构例例3:从三个数中找出最大的数。从三个数中找出最大的数。#includevoidmain()inta,b,c,max;scanf(%d,%d,%d,&a,&b,&c);max=a;if(bmax)max=b;if(cmax)max=c;printf(“max=%dn,max);37 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构例例4输入三角形三边长,求三角形面积。课本输入
28、三角形三边长,求三角形面积。课本P82例例4.14#include#includevoidmain()floata,b,c,s,area;scanf(%f,%f,%f,&a,&b,&c);if(a+bc&a+cb&b+ca)s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(area=%7.2fn,area);elseprintf(Notatriangle.n);38 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构例例5:判断闰年算法,闰年的条件:判断闰年算法,闰年的条件:能被能被4整除,整除,但不能被但不能被100整除;整除
29、;能被能被100整除,又能被整除,又能被400整除。整除。(year%4=0&year%100!=0)|(year%400=0)39 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构#includevoidmain()intyear,leap;scanf(%d,&year);if(year%4=0&year%100)|(year%400=0)printf(%disaleapyearn,year);elseprintf(%disnotaleapyearn,year);40 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构例例6计算器程序。用户输入运算数和四
30、则运计算器程序。用户输入运算数和四则运算符,输出运算结果。当输入运算符不是算符,输出运算结果。当输入运算符不是“+”、“-”、“*”或或“/”时提示出错,当输入时提示出错,当输入除数为除数为0时也提示出错。时也提示出错。课本课本P80例例4.12#include#includevoidmain()floata,b;charc;scanf(%f%c%f,&a,&c,&b);接下页接下页41 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构switch(c)case+:printf(=%fn,a+b);break;case-:printf(=%fn,a-b);break;cas
31、e*:printf(=%fn,a*b);break;case/:if(b=0)printf(Divisionbyzero!n);elseprintf(=%fn,a/b);break;default:printf(Operatorerror!n);42 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构例例7求一元二次方程的根算法。课本求一元二次方程的根算法。课本P86例例4.17输入输入a,b,ca=0输出输出“非二非二次方程次方程”disc=b2-4acdisc=0输出两个实根输出两个实根输出两个复根输出两个复根43 C语言语言程序设计程序设计 第第4 4章章 程序控制结构
32、程序控制结构#includevoidmain()floata,b,c,disc,x1,x2,real,imag;scanf(%f,%f,%f,&a,&b,&c);if(fabs(a)=1e-6)printf(“notaquadraticn);elsedisc=b*b-4*a*c;if(fabs(disc)0)x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf(distinctrealroots:%8.4fand%8.4f,x1,x2);elsereal=-b/(2*a);imag=sqrt(-disc)/(2*a);printf(com
33、plexroots:n);printf(%8.4f+%8.4fin,real,imag);printf(%8.4f-%8.4fin,real,imag);45 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构例例8:对三个数进行升序排序:对三个数进行升序排序思路:思路:1.先将先将a、b进行比较,将二者之中的较小者放入变量进行比较,将二者之中的较小者放入变量a中,中,较大者放入较大者放入b中,这样中,这样a就是就是a、b中较小数;中较小数;2.再将变量再将变量a与变量与变量c进行比较,将进行比较,将a、c中的较小者放到中的较小者放到a中,较大者放到中,较大者放到c中,这样,
34、变量中,这样,变量a中存放的就一定是三中存放的就一定是三个数中的最小数;个数中的最小数;3.最后将最后将b和和c进行比较,将二者之中较小者放入变量进行比较,将二者之中较小者放入变量b中,中,较大者放入变量较大者放入变量c中,就完成了对三个数的升序排序。中,就完成了对三个数的升序排序。即对三个数进行排序,需要进行即对三个数进行排序,需要进行3次比较。次比较。46 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构#includevoidmain()inta,b,c,t;scanf(%d,%d,%d,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=
35、c;c=t;if(bc)t=b;b=c;c=t;printf(%d,%d,%dn,a,b,c);47 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构习题习题4.84.8参考答案参考答案输入一个年份和一个月份,输出该年的这个月有多少天。输入一个年份和一个月份,输出该年的这个月有多少天。#includevoidmain()unsignedy,m,d;scanf(%u-%u,&y,&m);switch(m)case1:case3:case5:case7:case8:case10:case12:d=31;break;case2:if(y%4=0&y%100!=0|y%400=0)
36、d=29;elsed=28;break;case4:case6:case9:case11:d=30;break;printf(Thereare%udaysthismonth.n,d);48 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构4.4循环结构循环结构C语言的循环结构共有下列三种:语言的循环结构共有下列三种:vwhile语句语句vdo-while语句语句vfor语句语句49 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构4.4循环结构循环结构例例4.18求求1100之间所有整数的和之间所有整数的和开始开始0sum1ii=100sum+isumi
37、+1i否否是是输出输出sum的值的值;开始开始0sum1ii=100sum+isumi+1i否否是是输出输出sum的值的值;当当型型循循环环直直到到型型循循环环50 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构while语句语句格式:格式:while(表达式表达式)语句语句语句语句循环体循环体假假(0)真真(非非0)表达式表达式注:循环体可能一注:循环体可能一次也不执行。次也不执行。当表达式为真时当表达式为真时语句语句(循环体)(循环体)51 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构while语句语句例例4.18用用while语句求语句求11
38、00之间整数和之间整数和语句语句sum=sum+i;和语句和语句i+;能否能否改变位置?程序的哪些地方应作改变位置?程序的哪些地方应作相应的改动?相应的改动?循循环环#includevoidmain()inti,sum;sum=0;i=1;while(i=100)sum=sum+i;i+;printf(i=%d,sum=%dn,i,sum);52 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构do-while语句语句格式:格式:do语句语句while(表达式表达式);语句语句循环体循环体假假(0)真真(非非0)表达式表达式注:循环体至少执行一次。注:循环体至少执行一次。用
39、用do-while语句实语句实现直到现直到循环循环 循环体循环体当条件成立时当条件成立时53 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构do-while语句语句例例4.18用用do-while语句求语句求100以内正整数的和以内正整数的和#includevoidmain()inti,sum;sum=0;i=1;dosum=sum+i;i+;while(i=100);printf(i=%d,sum=%dn,i,sum);循环循环分号不可缺少分号不可缺少54 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构for语句语句格式格式:for(表达式表达式1
40、;表达式表达式2;表达式表达式3)语句语句语句语句(循环体循环体)假假(0)真真(非非0)表达式表达式2求解表达式求解表达式1求解表达式求解表达式3实质是当型循环!实质是当型循环!55 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构for语句语句在在for语句中,通常表达式语句中,通常表达式1用来为循环变量赋用来为循环变量赋初值;表达式初值;表达式2一般用来设置循环条件;表达一般用来设置循环条件;表达式式3一般用于循环变量增值。一般用于循环变量增值。for语句的最常用格式:语句的最常用格式:for(for(循环变量赋初值循环变量赋初值;循环条件循环条件;循环变量增值循环变
41、量增值)语句语句56 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构for语句语句例例4.18用用for语句求语句求1100之间的整数之和之间的整数之和#includevoidmain()inti,sum;sum=0;for(i=1;i=100;i+)sum=sum+i;printf(i=%d,sum=%dn,i,sum);57 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构while语句语句例例4.19根据公式计算圆周率根据公式计算圆周率的值。的值。部分程序:部分程序:inti=1,n;doublepi=0;scanf(%d,&n);while(i
42、1e-6);pi=pi*4;printf(pi=%10.6fn,pi);59 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构for语句语句例例4.26统计从键盘输入一行字符的个数,以回车统计从键盘输入一行字符的个数,以回车结束。结束。#includevoidmain()intn;charc;printf(Inputastring:n);n=0;while(c=getchar()!=n)n+;printf(%d,n);60 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构for语句语句例例4.27编程输出编程输出“斐波那契数列斐波那契数列”的前的前20项
43、。项。#includevoidmain()inti,x1=1,x2=1;for(i=1;i=10;i+)printf(%10d%10d,x1,x2);if(i%2=0)printf(n);x1=x1+x2;x2=x2+x1;61 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构for语句的灵活使用语句的灵活使用循环之前的赋初值语句可以放在表达式循环之前的赋初值语句可以放在表达式1中,中,中间用逗号间隔。中间用逗号间隔。表达式表达式3可缺省(但其前的分号不能省略),可缺省(但其前的分号不能省略),将表达式将表达式3作为语句放到循环体的末尾。作为语句放到循环体的末尾。循环体中的
44、内容可以放在表达式循环体中的内容可以放在表达式3中,但要在中,但要在for语句圆括号的后面加一个分号。语句圆括号的后面加一个分号。表达式表达式1、表达式、表达式3可同时缺省,但表达式可同时缺省,但表达式2前前后的分号都不能省略。后的分号都不能省略。62 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构for语句的灵活使用语句的灵活使用表达式表达式2可缺省,放在循环体之中,但可缺省,放在循环体之中,但for语句语句中的两个分号都不能省略;且判断与退出放在中的两个分号都不能省略;且判断与退出放在循环体中。循环体中。inti,sum;sum=0;for(i=1;i+)if(i=1
45、00)sum=sum+i;elsebreak;/*退出循环退出循环*/printf(i=%d,sum=%dn,i,sum);63 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构几种循环的比较几种循环的比较1)while循环、循环、dowhile循环、循环、for循环都可以用循环都可以用来处理同一个问题,一般可以互相代替。来处理同一个问题,一般可以互相代替。2)在)在while和和do-while循环的循环体中,应包括循环的循环体中,应包括使循环趋于结束的语句使循环趋于结束的语句。3)用)用while和和do-while循环时,循环变量初始化循环时,循环变量初始化的操作应在
46、的操作应在while和和do-while语句之前完成,语句之前完成,而而for语句可以在表达式语句可以在表达式1中实现循环变量的初中实现循环变量的初始化。始化。4)三种循环均可用)三种循环均可用break语句跳出循环,用语句跳出循环,用continue语句结束本轮循环。语句结束本轮循环。5)for语句功能最强。语句功能最强。示例示例64 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构break语句和语句和continue语句语句break语句语句v格式格式:break;v功能功能:提前结束循环提前结束循环,从循环体中无条件跳转从循环体中无条件跳转到循环语句后面执行。到循环
47、语句后面执行。v可用于可用于switch语句和循环结构中。语句和循环结构中。continue语句语句v格式格式:continue;v功能功能:结束本次循环结束本次循环,即在本次循环中,不再即在本次循环中,不再执行循环体中执行循环体中continue后面的语句。后面的语句。v只能用于循环结构。只能用于循环结构。65 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构break语句的使用语句的使用例例4.28将数字将数字512表示成两个数的和,这两个数分别为表示成两个数的和,这两个数分别为15和和13的倍数。的倍数。!(512-i*15)%13)等价于等价于(512-i*15)%
48、13=0#includevoidmain()inti;for(i=1;i=512/15;i+)if(!(512-i*15)%13)break;printf(%d+%d=512n,i*15,512-i*15);for(i=1;i+)66 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构continue语句的使用语句的使用例例4.29输出输出100200之间所有能够被之间所有能够被7或或9整除的数。整除的数。#includevoidmain()inti,n=0;for(i=100;i=200;i+)if(i%7!=0)&(i%9!=0)continue;printf(%5d,i
49、);n+;if(n%5=0)printf(n);/*当当n被被5整除时换行,即一行输出整除时换行,即一行输出5个数个数*/67 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构break与与continue的区别的区别分析以下两个程序,程序一:分析以下两个程序,程序一:#includevoidmain()inti;for(i=1;i=10;i+)if(i%3=0)continue;printf(%3d,i);printf(n);结果输出结果输出12457810break;结果输出结果输出12示例示例68 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构循
50、环嵌套循环嵌套一个循环体中又包含了另一个完整的循环结构,一个循环体中又包含了另一个完整的循环结构,叫做循环的嵌套。叫做循环的嵌套。三种循环结构可以互相嵌套。三种循环结构可以互相嵌套。循环嵌套的执行过程是:外循环执行一次,内循环嵌套的执行过程是:外循环执行一次,内循环执行一个全过程。循环执行一个全过程。69 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构举例:输出一个图形举例:输出一个图形*/*外循环控制输出图形的行数外循环控制输出图形的行数*/*内循环控制每行输出内循环控制每行输出的字符的字符*/#includevoidmain()inti,j;for(i=1;i=4;i