第4章简单程序设计_第1页
第4章简单程序设计_第2页
第4章简单程序设计_第3页
第4章简单程序设计_第4页
第4章简单程序设计_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

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

文档简介

1、 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 1 第第4章章 程序控制结构程序控制结构4.1 C4.1 C语言的执行语句语言的执行语句4.2 4.2 顺序结构顺序结构 4.3 4.3 选择结构选择结构4.4 4.4 循环结构循环结构 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 2 4.1 C C语言的执行语句语言的执行语句C程序组成程序组成C C程序程序源程序文件源程序文件1 1源程序文件源程序文件2 2源程序文件源程序文件3 3预处理命令预处理命令函数函数n n函数函数1 1数据声明数据声明函数首部函数首部函数体函数体数

2、据声明数据声明执行语句执行语句 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 3 4.1 C语言的执行语句语言的执行语句C语句的分类:语句的分类:表达式语句表达式语句空语句空语句复合语句复合语句1.控制语句控制语句 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 4 表达式语句表达式语句赋值语句:变量赋值语句:变量 = 表达式表达式 ; 功能:将功能:将“=”右侧表达式的值赋给左侧右侧表达式的值赋给左侧变量的值。变量的值。函数调用语句;函数调用语句; 例如例如 putchar(ch); C语言语言程序设计程序设计 第第4 4章章

3、 程序控制结构程序控制结构 Page 5 空语句和复合语句空语句和复合语句空语句:仅由一个分号构成的语句,在执行时空语句:仅由一个分号构成的语句,在执行时不产生任何指令。不产生任何指令。复合语句:用一对花括号复合语句:用一对花括号 将多个语句括起来将多个语句括起来构成一个整体。构成一个整体。 注意:注意: 1)复合语句中的每个语句必须以分号;结束)复合语句中的每个语句必须以分号;结束但右花括号但右花括号后不能有分号后不能有分号 2)复合语句中可以有自己的数据说明)复合语句中可以有自己的数据说明 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 6 控制语句控制语句

4、条件选择语句:条件选择语句:if开关分支语句:开关分支语句:switch当循环语句:当循环语句:while直到循环语句:直到循环语句:do while计数循环语句:计数循环语句:for中止本次循环语句:中止本次循环语句:continue中止整个循环语句:中止整个循环语句:break函数返回语句:函数返回语句:return无条件转移语句:无条件转移语句:goto C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 7 顺序结构顺序结构顺序结构程序:由两个或两个以上的语句组成,顺序结构程序:由两个或两个以上的语句组成,先执行先执行 A 操作,然后再执行操作,然后再执行

5、B 操作。操作。 传统流程图传统流程图 N-S流程图流程图 A B A B C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 8 顺序结构程序设计举例顺序结构程序设计举例 例例4.1 输入任意两个整数,求它们的和及平均值。要求平输入任意两个整数,求它们的和及平均值。要求平均值取两位小数输出。均值取两位小数输出。#include int main() int num1,num2; float sum,aver; printf(Please input two integers: n); scanf(%d,%d,&num1,&num2); sum=(float)num

6、1+num2; /*求累计和求累计和*/ aver=sum/2.0; /*求平均值求平均值*/ printf(sum=%.0f,aver=%.2fn,sum,aver); return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 9 顺序结构程序设计举例顺序结构程序设计举例例例4.2 给定一个三位正整数,分别输出它的个位数、十位数给定一个三位正整数,分别输出它的个位数、十位数和百位数。和百位数。#include int main() int m,m0,m1,m2; printf(Input a number(100999): ); scanf(%d,&

7、m); m0=m%10; m1=(m/10)%10; m2=m/100; printf(The three digits are); printf(%d,%d,%d n,m0,m1,m2); return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 10 顺序结构程序设计举例顺序结构程序设计举例例例4.4 求方程求方程ax2+bx+c=0的根。的根。a、b、c由键盘输入,由键盘输入,a0且且b2-4ac0。#include #include int main() float a,b,c,d,x1,x2; printf(Input a,b,c: ); s

8、canf(%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); return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 11 4.3 选择结构选择结构 C语言的选择控制结构语句有:语言的选择控制结构语句有:if语句和语句和switch语句语句if 语句是用来判断所给定的条件是否满语句是用来判断所给定的条件是否满足,根据判定的结果足,根据判定的结果(

9、真或假真或假)决定执行决定执行给定的某种操作之一。给定的某种操作之一。 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 12 if 语句的形式语句的形式1单分支结构单分支结构 格式格式: if (表达式表达式) 语句语句 执行过程:执行过程:语句语句成立成立表达式表达式不成立不成立 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 13 if语句举例语句举例1例例 输入两个实数,按升序输出两个实数。输入两个实数,按升序输出两个实数。解法一:解法一:#include int main( ) float a,b; scanf(%f%f,

10、&a,&b); if ( ab) printf(%f,%fn,b,a); return 0;单边条件单边条件(条件判断(条件判断两次)两次) C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 14 if 语句的形式语句的形式2双分支结构双分支结构 格式格式: if (表达式表达式) 语句语句1 else 语句语句2 执行过程:执行过程:不成立不成立语句语句1语句语句2成立成立表达式表达式 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 15 if语句举例语句举例1例例 输入两个实数,按升序输出两个实数。输入两个实数,按升序输出两个实

11、数。解法二:解法二:#include int main ( ) float a,b; scanf(%f%f,&a,&b); if (ab) printf(%f, %fn,b,a); else printf(%f,%fn,a,b); return 0;双边条件双边条件(条件判断(条件判断一次)一次) C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 16 if语句举例语句举例1解法三:解法三:#include int main( ) float a,b,t; scanf(%f%f,&a,&b); if( ab) t=a; a=b; b=t; /*两个变量交换数据两个

12、变量交换数据*/ printf(%f,%fn,a,b); return 0;单边条件单边条件(条件判断(条件判断一次)一次)3个语句用花括号个语句用花括号括起来构成括起来构成1个复个复合语句合语句若不使用复合语句,若不使用复合语句,则可用则可用t=a, a=b, b=t; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 17 if 语句的形式语句的形式3多分支结构多分支结构 格式格式: if (表达式表达式1) 语句语句1 else if (表达式表达式2) 语句语句2 else if (表达式表达式3) 语句语句3 : : else if (表达式表达式n)

13、语句语句n else 语句语句n+1假假语句语句1真真表达式表达式1 1表达式表达式2 2表达式表达式3 3表达式表达式n n语句语句n+1语句语句n语句语句3语句语句2真真真真真真假假假假假假 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 18 if语句举例语句举例2 例例 根据所输入的根据所输入的x之值,求之值,求解法一:用多分支解法一:用多分支if 语句语句 #include int main ( ) int x,y; scanf(%d,&x); if(x0) y=1; else if(x=0) y=0; else y=-1; printf(x=%d,y

14、=%dn,x,y); return 0; 1 (x0)y= 0 (x=0) -1 (x0) C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 19 if语句举例语句举例2解法二:用多个单分支解法二:用多个单分支if 语句语句#include int main ( ) int x,y; scanf(%d,&x); if(x0) y=1; if(x=0) y=0; if(x0) y=-1; printf(x=%d,y=%dn,x,y); return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 20 if语句举例语句举例2解法

15、三:用双分支解法三:用双分支if 语句的嵌套语句的嵌套 #include int main ( ) int x,y; scanf(%d,&x); if (x=0) if (x0) y=1; else y=0; else y=-1; printf(x=%d,y=%dn,x,y); return 0;这是一个这是一个嵌套结构嵌套结构 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 21 if 语句的嵌套语句的嵌套 在在if 语句中又包含一个或多个语句中又包含一个或多个if 语句语句,称为称为if 语句语句的嵌套的嵌套 一般形式一般形式: if (条件条件1 ) if

16、 (条件条件2 ) 语句语句1 else 语句语句2 else if (条件条件3) 语句语句3 else 语句语句4if 与与 else 的配对关系:从最内层开始的配对关系:从最内层开始, else 总是与总是与它上面最近的且尚未配对的它上面最近的且尚未配对的 if 配对。配对。 为了使逻辑关系清晰,为了使逻辑关系清晰,建议采用建议采用“分层缩进书分层缩进书写格式写格式”。 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 22 在内嵌在内嵌if语句中要注意配对关系语句中要注意配对关系 结合右图,观察以下程序:结合右图,观察以下程序:#include int m

17、ain ( ) int x,y; scanf(%d,&x); y= -1; if (x!=0) if (x0) y=1; else y=0; printf(x=%d,y=%dn,x,y); 输入输入 0 输出结果:输出结果:x=0,y= -1真正的配对真正的配对结果错误结果错误假假y=1真真 x!=0 x!=0 x0 x0y=-1y=0真真假假 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 23 在内嵌在内嵌if语句中要注意配对关系语句中要注意配对关系在内嵌在内嵌if语句中加花括号改变配对关系语句中加花括号改变配对关系#include int main ( )

18、 int x,y; scanf(%d,&x); y=-1; if (x!=0) if (x0) y=1; else y=0; printf(x=%d,y=%dn,x,y); return 0;结论:如果内层结论:如果内层if 语句为单边结构,要加花括号语句为单边结构,要加花括号花括号改变配花括号改变配对关系对关系结果正确结果正确正确配对正确配对 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 24 条件运算符的应用条件运算符的应用例:输入一个字符,判断它是否大写字母,若是例:输入一个字符,判断它是否大写字母,若是将其转换为小写;否则原样输出。将其转换为小写;否则

19、原样输出。 #include int main( ) char ch ; scanf(%c,&ch); ch=(ch=A & ch=Z)? ch+32:ch; printf (%cn,ch) return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 25 switch 语句(多分支选择语句,开关语句)语句(多分支选择语句,开关语句) switch 语句的格式语句的格式: switch (表达式表达式) case 常量表达式常量表达式1 : 语句语句1; break; case 常量表达式常量表达式2 : 语句语句2; break; case 常量表达式

20、常量表达式3 : 语句语句3; break; case 常量表达式常量表达式n : 语句语句n;break; default : 语句语句n+1 执行过程:执行过程: 先计算先计算switch后面表达式的值,后面表达式的值,如果与某个如果与某个case后的常量值相等,则执行其后后的常量值相等,则执行其后的语句;若所有的语句;若所有case中的常量值都不能与之匹中的常量值都不能与之匹配,则执行配,则执行default后的语句后的语句n+1。根据此表达式的根据此表达式的值找入口值找入口一般为常量,一般为常量,VC要要求为求为int或或char型型 C语言语言程序设计程序设计 第第4 4章章 程序控

21、制结构程序控制结构 Page 26 switch 语句流程图(无语句流程图(无break语句)语句)注意注意: 执行完入口语句后执行完入口语句后,则自动转到下一个则自动转到下一个case后面的语句执行;后面的语句执行;表达式表达式语句语句1语句语句2语句语句3语句语句n语句语句n+1=常量常量3=常量常量2=常量常量1=其它其它=常量常量n C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 27 switch 语句流程图(有语句流程图(有break语句)语句)注意注意: 如果语句中有如果语句中有break;,则执行完一个入,则执行完一个入口语句后跳出口语句后跳出s

22、witch选择结构。选择结构。 表达式表达式语句语句1语句语句2语句语句3语句语句n语句语句n+1=常量常量3=常量常量2=常量常量1=其它其它=常量常量n C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 28 switch语句举例语句举例例:输入成绩等级例:输入成绩等级,打印出百分制分数段。打印出百分制分数段。#include int main( ) char c; printf(Please enter a charn); c=getchar( ); c=(c=a & c=z)?c-32:c; switch(c) case A : printf(“90100

23、n); break; case B : printf(“8089n); break; case C : printf(“7079n); break; case D : printf(“6069n); break; case E : printf(60n); break; default : printf(errorn); return 0;注意:注意:case后面应为字后面应为字符常量符常量A、B等,不等,不能为变量能为变量A、B等。等。 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 29 switch语句举例(无语句举例(无break语句的效果)语句的效果)

24、例例4.9:输入成绩等级:输入成绩等级,打印出百分制分数段。打印出百分制分数段。#include int main( ) char c; printf(Please enter a charn); c=getchar( ); c=(c=a & c=z)?c-32:c; switch(c) case A : printf(“90100n); case B : printf(“8089n); case C : printf(“7079n); case D : printf(“6069n); case E : printf(60n); default : printf(errorn); return

25、 0;去掉去掉break语句,程序语句,程序运行后,从键盘上输入运行后,从键盘上输入b,则程序运行,则程序运行的顺序和结果如下:的顺序和结果如下: 8089 70796069 60 error C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 30 switch 语句使用说明语句使用说明 各个分支中如果没有各个分支中如果没有break语句,则执行了相语句,则执行了相应的操作后,会自动转到下一个应的操作后,会自动转到下一个case后面的语后面的语句执行。句执行。case后面的常量值不能相同。后面的常量值不能相同。各个分支中允许有多个语句,可以不用各个分支中允许有多个

26、语句,可以不用 括起括起来。来。各个各个case和和default分支的顺序可以改变,但分支的顺序可以改变,但default总是最后考虑的入口。如果各个分支中总是最后考虑的入口。如果各个分支中均有均有break语句,各个分支的出现次序不影响语句,各个分支的出现次序不影响执行结果。执行结果。可以使多个可以使多个case共用同一组执行语句。共用同一组执行语句。 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 31 例例4.10 输入百分制成绩,要求输出相应的五级制成绩。输入百分制成绩,要求输出相应的五级制成绩。百分制成绩与五级制成绩之间的转换标准为:百分制成绩与五级

27、制成绩之间的转换标准为:90分以分以上为上为“A”,80-89分为分为“B”,70-79分为分为“C”,60-69分分为为“D”,60分以下为分以下为“E”。#include int main ( ) int score; scanf(%d,&score); switch (score/10) case 10: case 9: printf(An);break; case 8: printf(Bn);break; case 7: printf(Cn);break; case 6: printf(Dn);break; default: printf(En); return 0; switch 语

28、句举例语句举例 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 32 上题也可用多分支上题也可用多分支if语句实现,见课本语句实现,见课本P71例例4.7。#include int main ( ) int score; scanf(%d,&score); if (score=90) printf(An); else if (score=80) printf(Bn); else if (score=70) printf(Cn); else if (score=60) printf(Dn); else printf(En); return 0; C语言语言程序设计

29、程序设计 第第4 4章章 程序控制结构程序控制结构 Page 33 选择结构程序设计举例选择结构程序设计举例 判断字母、数字判断字母、数字 分段函数值的计算分段函数值的计算 三个数中求最大数三个数中求最大数 求三角形面积求三角形面积判断闰年判断闰年计算器程序计算器程序求一元二次方程的根求一元二次方程的根 对三个数进行升序排序对三个数进行升序排序 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 34 例例1:从键盘上输入一个字符判断是数字、字母:从键盘上输入一个字符判断是数字、字母或其它字符。课本或其它字符。课本P81 例例4.13 #include int ma

30、in( ) char c; c=getchar( ) ; if ( c=A&c=a & c=0 & c=9 ) printf(digitn); else printf(othern); return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 35 例例2:计算分段函数。课本:计算分段函数。课本P73 例例4.8#include int main ( ) float x,y; scanf(%f,&x); if(x0) y=0; else if(xmax,则,则max改为改为b; v 将将c与与max进行比较,若进行比较,若cmax,则,则max改为改为

31、c. 于于是变量是变量max中存放的就是三个数中的最大数。中存放的就是三个数中的最大数。 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 37 解解1) #include int main( ) int a,b,c,t; scanf(%d,%d,%d, &a,&b,&c); if(ab) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; printf(“max=%dn,a); return 0;解解2) #include int main( ) int a,b,c,max; scanf(%d,%d,%d, &a,&b,&c); max=a; if

32、(bmax) max=b; if(cmax) max=c; printf(“max=%dn,max); return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 38 例:对三个数进行升序排序例:对三个数进行升序排序 思路:思路:1.先将先将a、b进行比较,将二者之中的较小者放入进行比较,将二者之中的较小者放入变量变量a中,较大者放入中,较大者放入b中,这样中,这样a中就是中就是a、b中较小数;中较小数;2.再将变量再将变量a与变量与变量c进行比较,将进行比较,将a、c中的较小中的较小者放到者放到a中,较大者放到中,较大者放到c中,这样,变量中,这样,

33、变量a中存中存放的就一定是三个数中的最小数;放的就一定是三个数中的最小数;3.最后将最后将b和和c进行比较,将二者之中较小者放入进行比较,将二者之中较小者放入变量变量b中,较大者放入变量中,较大者放入变量c中,就完成了对三中,就完成了对三个数的升序排序。个数的升序排序。 也就是说,对三个数进行排序,需要进行也就是说,对三个数进行排序,需要进行3次比较。次比较。 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 39 #include int main( ) int a,b,c,t; scanf(%d,%d,%d,&a,&b,&c); if(ab) t=a;a=b;

34、b=t; if(ac) t=a;a=c;c=t; if(bc) t=b;b=c;c=t; printf(%d,%d,%dn,a,b,c); return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 40 例例4 输入三角形三边长,求三角形面积。课本输入三角形三边长,求三角形面积。课本P82 例例4.14#include #include int main() float a,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*(

35、s-a)*(s-b)*(s-c); printf(area=%7.2fn,area); else printf(Not a triangle.n); return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 41 例例5:判断闰年算法,闰年的条件:能被:判断闰年算法,闰年的条件:能被4整除,整除,但不能被但不能被100整除;能被整除;能被100整除,又能被整除,又能被400整除。整除。 否否输出输出year不不是闰年是闰年 是是year%4!=0 year%100!=0 year%400!=0 输出输出year是是闰年闰年 输出输出year不不是闰年是

36、闰年 输出输出year是是闰年闰年 是是是是否否否否 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 42 解解1)用多边)用多边if语句实现语句实现 #include int main() int year; scanf(%d,&year); if (year%4!=0) printf (%d is not a leap yearn,year); else if (year%100!=0) printf (%d is a leap yearn,year); else if (year%400!=0) printf (%d is not a leap yearn

37、,year); else printf (%d is a leap yearn,year); return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 43 解解2)多边)多边if语句语句+用变量用变量leap标识是否闰年标识是否闰年 #include int main( ) int year,leap; scanf(%d,&year); if (year%4!=0) leap=0; else if (year%100!=0) leap=1; else if (year%400!=0) leap=0; else leap=1; if (leap) pr

38、intf(%d is a leap yearn,year); else printf(%d is not a leap yearn,year); return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 44 解解3)直接用复合条件判断闰年)直接用复合条件判断闰年 #include int main( ) int year,leap; scanf(%d,&year); if (year%4=0&year%100!=0) | (year%400=0) printf(%d is a leap yearn,year); else printf(%d is n

39、ot a leap yearn,year); return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 45 例例6 计算器程序。用户输入运算数和四则运算符,输出运计算器程序。用户输入运算数和四则运算符,输出运算结果。当输入运算符不是算结果。当输入运算符不是“+”、“-”、“*”或或“/”时时提示出错,当输入除数为提示出错,当输入除数为0时也提示出错。时也提示出错。课本课本P80 例例4.12#include #include int main() float a,b; char c; scanf(%f%c%f,&a,&c,&b); switch(c)

40、 case +: printf(=%fn,a+b);break; case -: printf(=%fn,a-b);break; case *: printf(=%fn,a*b);break; case /: if( b=0 ) printf(Division by zero!n); else printf(=%fn,a/b); break; default: printf(Operator error!n); return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 46 例例7 求一元二次方程的根算法。课本求一元二次方程的根算法。课本P85 例例4

41、.17输入输入 a,b,c a=0 输出输出“非非二次方程二次方程”disc=b2-4ac disc=0 输出两个实根输出两个实根 输出两个复根输出两个复根 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 47 #include int main( ) float a,b,c,disc,x1,x2,real,imag; scanf(%f,%f,%f,&a,&b,&c); if( fabs(a)=1e-6) printf(“not a quadraticn); else disc=b*b-4*a*c; if( fabs(disc)0) x1=(-b+sqrt(di

42、sc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(distinct real roots: %8.4f and %8.4f, x1,x2); else real=-b/(2*a); imag=sqrt(-disc)/(2*a); printf(complex roots: n); printf(%8.4f+%8.4fin,real,imag); printf(%8.4f-%8.4fin,real,imag); return 0;表示表示a等于等于0表示表示disc等于等于0注意注意a= =0 这种这种表示不够准确!表示不够准确! C语言语言程序设计程序设计

43、第第4 4章章 程序控制结构程序控制结构 Page 48 4.4 循环结构循环结构C语言的循环结构共有下列三种:语言的循环结构共有下列三种:v while 语句语句 v do-while 语句语句 v for 语句语句 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 49 4.4 循环结构循环结构举例举例 求求1100之间所有整数的和之间所有整数的和 开始开始0sum1ii=100sum+isumi+1i否否是是输出输出sum的值的值;开始开始0sum1ii=100sum+isumi+1i否否是是输出输出sum的值的值;当当型型循循环环直直到到型型循循环环 C语

44、言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 50 while 语句语句 格式:格式: while (表达式表达式) 语句语句 语句语句循环体循环体假假(0)真真(非非0)表达式表达式注:循环体可能一注:循环体可能一次也不执行。次也不执行。当表达式为真时当表达式为真时 语句语句 (循环体)(循环体) C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 51 while 语句语句例例4.18 用用while语句求语句求1100之间整数和之间整数和#include int main( ) int i,sum; sum=0; i=1; whi

45、le( i=100) sum=sum+i; i+; printf(i=%d,sum=%dn,i,sum); return 0;语句语句sum=sum+i;和语句和语句i+;能否能否改变位置?程序的哪些地方应作改变位置?程序的哪些地方应作相应的改动?相应的改动? 如果在如果在while语句之前对变量语句之前对变量sum赋初值为赋初值为1,是否可以?程序的哪,是否可以?程序的哪些地方应作相应的改动?些地方应作相应的改动?循循环环 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 52 while 语句语句例例4.19 根据公式计算圆周率根据公式计算圆周率的值。的值。部

46、分程序:部分程序:int i=1,n;double pi=0;scanf(%d,&n);while(i=n) pi+=1.0/(i*i); i+; pi=sqrt(pi*6);2222n1312116 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 53 do-while 语句语句 格式:格式:do 语句语句 while (表达式表达式) ; 语句语句循环体循环体假假(0)真真(非非0)表达式表达式 循环体循环体当表达式为真当表达式为真注:循环体至少执行一次。注:循环体至少执行一次。用用do-while语句实语句实现直到现直到循环循环 C语言语言程序设计程序设计

47、 第第4 4章章 程序控制结构程序控制结构 Page 54 do-while 语句语句例例4.18 用用do-while语句求语句求100以内正整数的和以内正整数的和#include int main( ) int i,sum; sum=0; i=1; do sum=sum+i; i+; while( i1e-6);pi=pi*4;printf(pi=%10.6fn,pi);71513114 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 56 for 语句语句 格式格式: for (表达式表达式1;表达式表达式2;表达式表达式3) 语句语句 语句语句 (循环体

48、循环体)假假(0)真真(非非0)表 达 式表 达 式2求解表达式求解表达式1求解表达式求解表达式3实质是当型循环!实质是当型循环! C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 57 for 语句语句在在for语句中,通常表达式语句中,通常表达式1用来为循环用来为循环变量赋初值;表达式变量赋初值;表达式2一般用来设置循环一般用来设置循环条件;表达式条件;表达式3一般用于循环变量增值。一般用于循环变量增值。for 语句的最常用格式:语句的最常用格式: for (for (循环变量赋初值循环变量赋初值; ;循环条件循环条件; ;循环变量增值循环变量增值) ) 语句

49、语句 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 58 for 语句语句例例4.18 用用for语句求语句求1100之间的整数之和之间的整数之和#include int main( ) int i,sum; sum=0; for ( i=1; i=100; i+ ) sum=sum+i; printf(i=%d,sum=%dn,i,sum); return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 59 for 语句语句例例4.26 统计从键盘输入一行字符的个数,以回车统计从键盘输入一行字符的个数,以回车结束。结束

50、。#include int main() int n; char c; printf(Input a string: n); for(n=0;(c=getchar()!=n;n+); printf(%d,n); return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 60 for 语句语句例例4.27 编程输出编程输出“斐波那契数列斐波那契数列”的前的前20项。项。#includeint main() int i,x1=1,x2=1; for(i=1;i=10;i+) printf(%10d %10d ,x1,x2); if(i%2=0) print

51、f(n); x1=x1+x2; x2=x2+x1; return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 61 for 语句的灵活使用语句的灵活使用 循环之前的赋初值语句可以放在表达式循环之前的赋初值语句可以放在表达式1中,中,中间用逗号间隔。中间用逗号间隔。 表达式表达式3可缺省(但其前的分号不能省略),可缺省(但其前的分号不能省略),将表达式将表达式3作为语句放到循环体的末尾。作为语句放到循环体的末尾。循环体中的内容可以放在表达式循环体中的内容可以放在表达式3中,但要在中,但要在for语句圆括号的后面加一个分号。语句圆括号的后面加一个分号。 表

52、达式表达式1、表达式、表达式3可同时缺省,但表达式可同时缺省,但表达式2前前后的分号都不能省略。后的分号都不能省略。 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 62 for 语句的灵活使用语句的灵活使用表达式表达式2可缺省,放在循环体之中,但可缺省,放在循环体之中,但for语句语句中的两个分号都不能省略;且判断与退出放在中的两个分号都不能省略;且判断与退出放在循环体中。循环体中。 int i,sum; sum=0; for ( i=1; ; i+) if ( i=100 ) sum=sum+i; else break; /*退出循环退出循环*/ print

53、f(i=%d,sum=%dn,i,sum); return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 63 几种循环的比较几种循环的比较 1)while循环、循环、do while循环、循环、for循环都可以用循环都可以用来处理同一个问题,一般可以互相代替。来处理同一个问题,一般可以互相代替。2)在)在while和和do-while循环的循环体中,应包括循环的循环体中,应包括使循环趋于结束的语句。使循环趋于结束的语句。3)用)用while和和do-while循环时,循环变量初始化循环时,循环变量初始化的操作应在的操作应在while和和do-while

54、语句之前完成,语句之前完成,而而for语句可以在表达式语句可以在表达式1中实现循环变量的中实现循环变量的初始化。初始化。4)三种循环均可用)三种循环均可用break语句跳出循环,用语句跳出循环,用continue语句结束本轮循环。语句结束本轮循环。5)for语句功能最强。语句功能最强。 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 64 break语句和语句和continue语句语句 break 语句语句v格式格式: break;v功能功能: 提前结束循环提前结束循环,从循环体中无条件跳转从循环体中无条件跳转到循环语句后面执行。到循环语句后面执行。v可用于可用

55、于switch语句和循环结构中。语句和循环结构中。continue语句语句 v格式格式: continue; v功能功能: 结束本次循环结束本次循环,即在本次循环中,不再即在本次循环中,不再执行循环体中执行循环体中continue后面的语句。后面的语句。 v只能用于循环结构。只能用于循环结构。 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 65 break语句的使用语句的使用 例例4.28 将数字将数字512表示成两个数的和,这两个数分别为表示成两个数的和,这两个数分别为15和和13的倍数。的倍数。 #include int main() int i; for

56、(i=1;i+) if(!(512-i*15)%13) break; printf(%d+%d=512n,i*15,512-i*15); return 0; !(512-i*15)%13) 等价于等价于 (512-i*15)%13=0 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 66 continue语句的使用语句的使用 例例4.29 输出输出100200之间所有能够被之间所有能够被7或或9整除的数。整除的数。 #include int main( ) int i,n=0; for(i=100;i=200;i+) if(i%7!=0)&(i%9!=0) co

57、ntinue; printf(%5d ,i); n+; if(n%5=0) printf(n); /*当当n被被5整除时换行,即一行输出整除时换行,即一行输出5个数个数*/ return 0; C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 67 break与与continue的区别的区别分析以下两个程序,程序一:分析以下两个程序,程序一:#include int main()int i; for(i=1;i=10;i+) if (i%3=0) continue; printf(%3d,i); printf (n); return 0; 结果输出结果输出 1 2

58、 4 5 7 8 10 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 68 break与与continue的区别的区别程序二:程序二:#include int main()int i; for(i=1;ik 假假 输出输出m是素数是素数 输出输出m不是素数不是素数 或者或者i=k+1 循环结束后根循环结束后根据据 i的值来决定的值来决定m是否为素数是否为素数 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 71 #include #include int main( ) int m,i,k; scanf(%d,&m); k=sq

59、rt(m); for ( i=2 ; i=k ; i+ ) if (m%i=0) break; if (i=k+1) printf(n%d是素数是素数n,m); else printf(n%d不是素数不是素数n,m); return 0;for 语句有两个出口:语句有两个出口:i=k+1 和和 break 不是结构化程序!不是结构化程序!判断整数判断整数m是否为素数程序是否为素数程序1 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 72 判断整数判断整数m是否为素数程序是否为素数程序2 #include #include int main( ) int m,i

60、,k; scanf(%d,&m); k=sqrt(m); for ( i=2 ; ik| m%i=0 是结构化程序是结构化程序 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Page 73 循环嵌套循环嵌套 一个循环体中又包含了另一个完整的循环结构,一个循环体中又包含了另一个完整的循环结构,叫做循环的嵌套。叫做循环的嵌套。 三种循环结构可以互相嵌套。三种循环结构可以互相嵌套。 循环嵌套的执行过程是:外循环执行一次,内循环嵌套的执行过程是:外循环执行一次,内循环执行一个全过程。循环执行一个全过程。 C语言语言程序设计程序设计 第第4 4章章 程序控制结构程序控制结构 Pa

温馨提示

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

评论

0/150

提交评论