第4章 控制结构程序设计_第1页
第4章 控制结构程序设计_第2页
第4章 控制结构程序设计_第3页
第4章 控制结构程序设计_第4页
第4章 控制结构程序设计_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

1、第第4章章控制结构程序设计控制结构程序设计-2-第第4 4章章 控制结构程序设计控制结构程序设计本本 章章 内内 容容1.1.ifif语句和条件运算符语句和条件运算符 2.2.switch-caseswitch-case语句语句3.3.whilewhile循环语句循环语句4.4.dodowhilewhile循环语句循环语句5.5.forfor循环语句循环语句6.6.三种循环比较及循环嵌套三种循环比较及循环嵌套7.7.标号语句与标号语句与gotogoto语句、语句、breakbreak语句和语句和continuecontinue语句语句-3-第第4 4章章 控制结构程序设计控制结构程序设计4.1

2、 4.1 if语句和条件运算符语句和条件运算符 if if语句语句 if语句根据给定的条件决定执行的操作,是语句根据给定的条件决定执行的操作,是“二选一二选一”的分支结构。的分支结构。 if语句有三种形式:语句有三种形式: 1第一种形式第一种形式 if(条件表达式条件表达式) 语句语句 2第二种形式第二种形式 if (条件表达式条件表达式) 语句语句1 else 语句语句2 3第三种形式第三种形式 if(条件表达式条件表达式1) 语句语句1 else if(条件表达式条件表达式2) 语句语句2 else if(条件表达式条件表达式3) 语句语句3 else if(条件表达式条件表达式n) 语句

3、语句n else 语句语句n+1-4-第第4 4章章 控制结构程序设计控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符IfIf语句语句 1 1第一种形式第一种形式 if(if(条件表达式条件表达式) ) 语句语句 例如:例如:if(xy) printf(%d“,xif(xy) printf(%d“,x); );条件条件语句语句假(假(0)真(真(0)图图4-1(a) if 语句第一种形式的流程图语句第一种形式的流程图 -5-第第4 4章章 控制结构程序设计控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符IfIf语句语句 2 2第二种形式第二种形式 if

4、(if (条件表达式条件表达式) ) 语句语句1 else 1 else 语句语句2 2 例如:例如: if (xy) printf(%d,xif (xy) printf(%d,x); ); else printf(%d,y else printf(%d,y); );条条件件语句语句语句语句真(真(0)假(假(0) 图图4-1(b) if 语句第二种形式的流程图语句第二种形式的流程图-6-第第4 4章章 控制结构程序设计控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符IfIf语句语句 3.3.第三种形式第三种形式 if(if(条件表达式条件表达式1) 1) 语句语句1 1

5、else if( else if(条件表达式条件表达式2) 2) 语句语句2 2 else if( else if(条件表达式条件表达式3) 3) 语句语句3 3 else if( else if(条件表达式条件表达式n) n) 语句语句n n else else 语句语句n+1n+1例如:例如:if(numif(num500) cost=0.15;500) cost=0.15;else if(numelse if(num300) cost=0.10;300) cost=0.10;else if(numelse if(num100) cost=0.075;100) cost=0.075;els

6、e if (num50) cost=0.05;else if (num50) cost=0.05;else cost=0; else cost=0; -7-第第4 4章章 控制结构程序设计控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符IfIf语句语句条件条件语句语句语句语句n条件真真真真真真假假假假假假 图图4-2 if 语句(第三种形式)实现多分支流程图语句(第三种形式)实现多分支流程图-8-第第4 4章章 控制结构程序设计控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符在使用在使用if if语句时,应注意以下几点:语句时,应注意以下几点: 无论什么

7、形式的无论什么形式的ifelseifelse语句,在语句,在if if后面都有后面都有“ “ 表达式表达式”,且需要用圆括号括起来。且需要用圆括号括起来。 ifelse ifelse后边的内嵌语句可以是单语句,也可以是复合语句,后边的内嵌语句可以是单语句,也可以是复合语句,当为复合语句时,需要用大括号当为复合语句时,需要用大括号“”将其括起来。将其括起来。 在使用多层在使用多层ifelseifelse嵌套形式时,注意嵌套形式时,注意elseelse总是与最靠近它的总是与最靠近它的if if配对。配对。 语言对语言对if if后面的后面的“表达式表达式”(条件)没有什么限制,可(条件)没有什么限

8、制,可以是常量、变量、函数、指针或任何类型的表达式。实际应以是常量、变量、函数、指针或任何类型的表达式。实际应用时,一般采用关系表达式或逻辑表达式。无论其表达式是用时,一般采用关系表达式或逻辑表达式。无论其表达式是什么形式,什么形式,if if语句总是首先计算表达式的值,然后根据其值语句总是首先计算表达式的值,然后根据其值是零还是非零决定下面的选择操作。是零还是非零决定下面的选择操作。-9-第第4 4章章 控制结构程序设计控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符【例【例4-14-1】输入两个整数,输出其中的大数。】输入两个整数,输出其中的大数。 main()main

9、() int x,y int x,y; ; scanf scanf(d dd,&x,&yd,&x,&y);); if(xy) printf if(xy) printf(d,xd,x);); else printf else printf(d,yd,y);); -10-第第4 4章章 控制结构程序设计控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符【例【例4-24-2】输入三个数】输入三个数a a,b b,c c,要求按由小到大的顺序输出。,要求按由小到大的顺序输出。 输入输入3 3个数个数a a、b b、c cababt=at=a;a=ba=

10、b;b=tb=t;acact=at=a;a=ca=c;c=tc=t;bcbct=bt=b;b=cb=c;c=tc=t;按顺序输出按顺序输出a a,b b,c cY YN NN NN NY YY Y图图4-3 4-3 三个数排序流程图三个数排序流程图-11-第第4 4章章 控制结构程序设计控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符#include #include mainmain()() float a,b,c,t float a,b,c,t; ; scanf scanf(f ff ff,&a,&b,&cf,&a,&b,&

11、;c); ); if(ab if(ab) t=a;a=b;b) t=a;a=b;b=t; =t; * *如果如果abab,则交换,则交换a a和和b b* * if(ac) t=a;a=c;c=t; if(ac) t=a;a=c;c=t; * *如果如果acac,则交换,则交换a a和和c c* * if(bc) t=b;b=c;cif(bc) t=b;b=c;c=t; =t; * *如果如果bcbc,则交换,则交换b b和和c c* * printfprintf(5.3f,5.3f,5.3f,5.3f,5.3f,a,b,c);5.3f,a,b,c); -12-第第4 4章章 控制结构程序设计

12、控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符ifif语句的嵌套语句的嵌套 if的内嵌语句可以是另一个的内嵌语句可以是另一个if语句,这就构成了语句,这就构成了if语句的嵌套。语句的嵌套。 内嵌的内嵌的if语句既可以嵌套在语句既可以嵌套在if子句中,也可以嵌套在子句中,也可以嵌套在else子句中。子句中。 完整的嵌套格式为:完整的嵌套格式为: if(条件表达式条件表达式1) if(条件表达式条件表达式2) 语句语句1 else 语句语句2 e1se if(条件表达式条件表达式3) 语句语句3 else 语句语句4 可以根据实际情况使用上面格式中的一部分,还可以进行可以根据

13、实际情况使用上面格式中的一部分,还可以进行if if语句的多语句的多重嵌套。重嵌套。 内嵌if 内嵌if -13-第第4 4章章 控制结构程序设计控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符【例【例4-34-3】在三个不相等的整数】在三个不相等的整数a a、b b、c c中,找出大小处于中间的一个。中,找出大小处于中间的一个。main( )main( ) int a,b,cint a,b,c; ;scanf(%d %d %d,&a,&b,&cscanf(%d %d %d,&a,&b,&c); ); printf(aprin

14、tf(a= =d b=d b=d c=d c=dn,a,b,cdn,a,b,c););if(aif(ab)b)if(aif(ac)c)c)printf(bprintf(b is the middle.n); is the middle.n);elseelse-14-第第4 4章章 控制结构程序设计控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符printf(cprintf(c is the middle.n); is the middle.n);else ifelse if(acac)printf(aprintf(a is the middle.n); is the mid

15、dle.n);else ifelse if(bcbc)printf(cprintf(c is the middle.n); is the middle.n);elseelseprintfprintf(b is the middle.nb is the middle.n); ; 第一次运行,输入:第一次运行,输入:12 5 712 5 7输出:输出:a=12 b=5 c=7a=12 b=5 c=7c is the middle.c is the middle.第二次运行,输入:第二次运行,输入:12 7 512 7 5输出:输出:a=12 b=7 c=5a=12 b=7 c=5b is the

16、middle.b is the middle.第三次运行,输入:第三次运行,输入:7 712 512 5输出:输出:a=7 b=12 c=5a=7 b=12 c=5a is the middle.a is the middle.-15-第第4 4章章 控制结构程序设计控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符【例【例4-44-4】设有分段函数】设有分段函数: : 输入一个输入一个x x值,计算相应的值,计算相应的y y值。值。main() int x,y;scanf(d,&x);if(x0) y=x; *当当x0时,将时,将x*x+l赋给变量赋给变量y*pri

17、ntf(y=dn,y); )0()0(0)0( 12xxxxxy-16-第第4 4章章 控制结构程序设计控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符也可以将上面程序的也可以将上面程序的ifif语句语句( (程序第程序第4 46 6行行) )改为:改为:if(xif(x=0) =0) if(xif(x0) y=x0) y=x* *x+1;x+1;else y=0;else y=0;else y=x;else y=x;错误:错误:y=x;if(x!=0) if(x0) y=x*x+1;else y=0; 错误:错误:y=0;if(x=0)if(x0) y=x*x+l;els

18、e y=x;-17-第第4 4章章 控制结构程序设计控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符条件运算符条件运算符 条件运算符是条件运算符是C C语言中唯一的三目运算符。语言中唯一的三目运算符。 一般格式为:一般格式为: 表达式表达式1? 1? 表达式表达式2 2 :表达式:表达式3 3 执行过程是:先求解表达式执行过程是:先求解表达式1 1,当值为非,当值为非0( 0(真真) )时,表达式时,表达式2 2的值就是整个条件表达式的值;的值就是整个条件表达式的值;否则表达式否则表达式3 3的值是整个条件表达式的值。的值是整个条件表达式的值。-18-第第4 4章章 控制结

19、构程序设计控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符【例【例4-54-5】中输出两个数中的大数】中输出两个数中的大数可以用条件运算符实现:可以用条件运算符实现:main()main() int x,y,t int x,y,t; ; scanf(%d%d,&x,&y scanf(%d%d,&x,&y);); t=xy?x:y t=xy?x:y; ; printf(max=%dn,tprintf(max=%dn,t);); 或者更简单:或者更简单:main() int x,y; scanf(%d%d,&x,&y); prin

20、tf(max=%dn,xy?x:y);-19-第第4 4章章 控制结构程序设计控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符 条件运算符的优先级高于赋值运算符,条件运算符的优先级高于赋值运算符,但是低于关系运算符和算术运算符。但是低于关系运算符和算术运算符。 条件运算符的结合性为自右至左。条件运算符的结合性为自右至左。 例如:例如: abab?a a:cdcd?c c:d d 相当于相当于 abab?a a:(cd(cd?c c:d) d)-20-第第4 4章章 控制结构程序设计控制结构程序设计4.1 4.1 if语句和条件运算符语句和条件运算符【例【例4-64-6】将大

21、写字母转换为小写字母。】将大写字母转换为小写字母。#include stdio.hmain( ) char ch;scanf(%c,&ch); /* 输入一个字符,赋给变量输入一个字符,赋给变量ch*/ch=(ch=A& ch=A&ch=Z)?(ch+32):ch; */printf(%c,ch);-21-第第4 4章章 控制结构程序设计控制结构程序设计4.2 switch-case语句语句If If语句特点:只提供两路选择,在解决多路选择时要用语句特点:只提供两路选择,在解决多路选择时要用if if嵌嵌套,很不方便;套,很不方便;switchswitch语句在解决多路

22、选择很方便;语句在解决多路选择很方便;switchswitch语句的一般格式:语句的一般格式: switch(switch(表达式表达式) ) case case 常量表达式常量表达式1 1:语句组:语句组1 break;1 break; case case 常量表达式常量表达式2 2:语句组:语句组2 break;2 break; case case 常量表达式常量表达式n n :语句组:语句组n break;n break; default default :语句组:语句组n+1 break;n+1 break; -22-第第4 4章章 控制结构程序设计控制结构程序设计4.2 switch

23、-case语句语句语句序列语句序列1语句序列语句序列n n语句序列语句序列n-1n-1语句序列语句序列2 2表达式表达式常量表达式常量表达式1常量表达式常量表达式 常量式常量式常量表达式常量表达式n-1 default 图图4-4 switch语句流程图语句流程图-23-第第4 4章章 控制结构程序设计控制结构程序设计4.2 switch-case语句语句说明:说明: switch switch后面的表达式,可以为任何类型,但必须与常量后面的表达式,可以为任何类型,但必须与常量表达式类型匹配。表达式类型匹配。当表达式的值与某一个当表达式的值与某一个casecase后面的常量表达式相等时,就后面

24、的常量表达式相等时,就执行此执行此casecase后面的语句,没有匹配的常量表达式,就执行后面的语句,没有匹配的常量表达式,就执行defaultdefault后面的语句。后面的语句。 每一个常量表达式的值都是唯一的,即常量表达式不能每一个常量表达式的值都是唯一的,即常量表达式不能重复出现。重复出现。casecase和和defaultdefault的次序是任意的。的次序是任意的。-24-第第4 4章章 控制结构程序设计控制结构程序设计4.2 switch-case语句语句 case case后面的语句结束时,继续考察下一个后面的语句结束时,继续考察下一个casecase。要跳到。要跳到switc

25、hswitch语句外面,必须借助语句外面,必须借助breakbreak语句。例如:语句。例如:switch(表达式表达式C)case a:x+;case b:x+;default:total+; 在此开关语句中,如果表达式在此开关语句中,如果表达式C C的取值为的取值为aa,则,则3 3个分个分支都执行;如果表达式支都执行;如果表达式C C的取值是的取值是bb,则只执行后面的两个,则只执行后面的两个分支;如果表达式分支;如果表达式C C的取值既不是的取值既不是a a也不是也不是bb,则只执行最,则只执行最后的一个分支后的一个分支total+total+。-25-第第4 4章章 控制结构程序设计

26、控制结构程序设计4.2 switch-case语句语句 尽管最后一个分支之后的尽管最后一个分支之后的breakbreak语句可以省略,但是在最语句可以省略,但是在最后一个分支之后有后一个分支之后有breakbreak语句是程序设计的一个良好习惯,语句是程序设计的一个良好习惯,建议保留它。建议保留它。 default default是可选项,即当未找到匹配的是可选项,即当未找到匹配的casecase常量表达式时,常量表达式时,会跳到会跳到switchswitch外。也就是说,如果没有外。也就是说,如果没有defaultdefault部分,则当部分,则当表达式的值与各表达式的值与各casecase

27、的判断值都不一致时,则程序不执行的判断值都不一致时,则程序不执行该结构中的任何部分。该结构中的任何部分。 例如:例如:switch(表达式表达式C) case 0:x+=2;break;case 1:y+=2;break;case 2:z+=2;break;-26-第第4 4章章 控制结构程序设计控制结构程序设计4.2 switch-case语句语句 当表达式当表达式C C的值既不是的值既不是0 0,也不是,也不是1 1或或2 2时,则程时,则程序不执行该开关分支中的任何语句。为了使程序能序不执行该开关分支中的任何语句。为了使程序能进行错误检查或逻辑检查,应该使用进行错误检查或逻辑检查,应该使

28、用defaultdefault分支。分支。例如:例如:switch(ch)case x:printf(OK!n);break;case y:printf(NO!n);break;default :printf(errorn);break; 当当ch的值是的值是x时,输出时,输出“OK!”,ch的值为的值为y时,输出时,输出“NO!”,其他字符时,其他字符时,输出输出error。-27-第第4 4章章 控制结构程序设计控制结构程序设计4.2 switch-case语句语句 case case后面的语句块可以不要花括号。后面的语句块可以不要花括号。 在在swtichswtich分支结构中,如果对表

29、达式的多个取值都执行分支结构中,如果对表达式的多个取值都执行相同的语句组时,则对应的多个相同的语句组时,则对应的多个casecase语句可以共用同一个语句可以共用同一个语句组。语句组。switch(grade) case a: case b: case c:printf(pass!n);break;*前前3个个case共用一个共用一个printf语句语句* case d:printf(no pass!n);break; default:printf(error!n);break; 左边程序段中,左边程序段中,“case a”、“case b”、“case c”均均共用共用“case c”的语句

30、。的语句。-28-第第4 4章章 控制结构程序设计控制结构程序设计4.2 switch-case语句语句【例【例4-74-7】为某运输公司编制计算运费的程序。运行程序时,为某运输公司编制计算运费的程序。运行程序时,由用户输入运输距离由用户输入运输距离s s和运量和运量w w,程序输出单价,程序输出单价p p和总金额和总金额t t。运费标准为:运费标准为:当当s500kms500km时,没有优惠,单价为时,没有优惠,单价为5 5元元( (吨吨. .公里公里) );当当500kms1000km500kms1000km时,优惠时,优惠2 2: 当当1000kms2000km1000kms2000km

31、时,优惠时,优惠5 5;当当2000kms3000km2000kms3000km时,优惠时,优惠8 8: 当当s3000kms3000km时,优惠时,优惠1010。-29-第第4 4章章 控制结构程序设计控制结构程序设计4.2 switch-case语句语句使用开关语句使用开关语句swtichswtichcasecase编写程序如下:编写程序如下:#include main() int s,w,g; float p,t; printf(input the distance and weight:); scanf(dd,&s,&w); g=s500; switch(g) case

32、 0:p=5; break; case 1:p=5*0.98; break; -30-第第4 4章章 控制结构程序设计控制结构程序设计4.2 switch-case语句语句case 2:case 3:p=5*0.95;break;case 4:case 5:p=5*0.92;break;default:p=5*0.9;break; t=p*w*s; printf(the unit price is .3f n the total price is .3f n,p,t);-31-第第4 4章章 控制结构程序设计控制结构程序设计4.3 while循环语句循环语句whilewhile循环语句用来描述

33、循环语句用来描述whilewhile型重复控制结构,型重复控制结构,它的一般形式为:它的一般形式为: whilewhile(表达式)(表达式) 语句语句; ; 其中其中“表达式表达式”称为控制表达式,是语言允许的称为控制表达式,是语言允许的任何表达式,语句(循环体)可以是任何单个语句、空语任何表达式,语句(循环体)可以是任何单个语句、空语句或复合语句。句或复合语句。-32-第第4 4章章 控制结构程序设计控制结构程序设计4.3 while循环语句循环语句whilewhile循环语句功能循环语句功能 计算表达式的值,值为非时,执行语句一次;再重计算表达式的值,值为非时,执行语句一次;再重复上述过

34、程,直至表达式的值为时,退出复上述过程,直至表达式的值为时,退出whilewhile语句。语句。 whilewhile循环语句特点循环语句特点 在每次循环开始之前,要首先判断在每次循环开始之前,要首先判断“表达式表达式”是否为是否为,若为,则不执行语句(循环体)。即先判断后执行。,若为,则不执行语句(循环体)。即先判断后执行。所以循环体可能一次也不被执行。所以循环体可能一次也不被执行。whilewhile语句的控制流程图语句的控制流程图 表达式语 句YN图4-5 while 语句执行过程YN-33-第第4 4章章 控制结构程序设计控制结构程序设计4.3 while循环语句循环语句【例【例4-8

35、4-8】利用】利用 求求 的近似值,要求的近似值,要求精确到精确到 。 本题的核心是求:本题的核心是求: 的和,求和的每的和,求和的每一项用一项用termterm表示,符号位用表示,符号位用signsign表示,各项的分子均表示,各项的分子均为为1 1,首项分母,首项分母n=1n=1,其余各项的分母为其前一项分,其余各项的分母为其前一项分母的值加母的值加2 2,迭代公式为:,迭代公式为:term= -signterm= -sign* *1/float(n+2)1/float(n+2),直到某一项的绝对值小于直到某一项的绝对值小于 。715131141047151311104-34-第第4 4章

36、章 控制结构程序设计控制结构程序设计4.3 while循环语句循环语句#include stdio.h#include math.h main( ) float term=1.0,pi=0.0; int n=1,sign=1;while(fabs(term)=1e-4)pi+=term;n+=2; sign=-sign;term=sign/(float)n; pi*=4;printf (pi=%10.8fn,pi);开始开始term=1.0;pi=0.0;n=1;sign=1;term=1.0;pi=0.0;n=1;sign=1;fabsfabs (term)=1e-4 (term)=1e-4

37、pi+=-sign/(float)(n+2);pi+=-sign/(float)(n+2);pipi* *=4;=4;YN结束结束图图4-6 例例4-8流程图流程图运行结果:运行结果:pi=3.14139724-35-第第4 4章章 控制结构程序设计控制结构程序设计4.3 while循环语句循环语句 while while 循环为当型循环,当条件成立时,执行循循环为当型循环,当条件成立时,执行循环体;条件不成立时退出循环。环体;条件不成立时退出循环。 whilewhile循环条件可以为任何合法的表达式;循环条件可以为任何合法的表达式;例如例如:while(x!=0) 也可写作也可写作while

38、(x) while(x=0) 也可写作也可写作while(!x)-36-第第4 4章章 控制结构程序设计控制结构程序设计4.3 while循环语句循环语句【例【例4-94-9】读入班级学生考试成绩,求考试平均成绩。】读入班级学生考试成绩,求考试平均成绩。main() int sum,count,count1; sum=0; count=0; while (1) printf(input count10: quit ! n););sacnf(%d,count1);if(count10)(n0)#includestdio.hmain()int n,m,t;scanf(%d,&n);m=1;

39、t=n;结果:结果: 5!= 120 while (n=1) m=m*n;n;printf(%d!=%dn,t,m);-38-第第4 4章章 控制结构程序设计控制结构程序设计4.3 while循环语句循环语句【例【例4-114-11】无循环体的】无循环体的whilewhile的循环问题。的循环问题。#includestdio.hmain()int p=0,j=0;while (j=A)&(ch=a)&(ch=0)&(ch=9)dig_num+;while(ch ! =);printf(ch_num =%dn,ch_num);printf(dig_num=%dn,dig_

40、num);第一次运行,输入:第一次运行,输入: Cprogram输出结果是:输出结果是:ch_num =9 dig_num =0第二次运行,输入:第二次运行,输入:AaghLPIMM qwe789输出结果是:输出结果是:ch_num =13 dig_num =3-49-第第4 4章章 控制结构程序设计控制结构程序设计4.4 dowhile循环语句循环语句【例【例4-174-17】输出】输出1.0e+001.0e+00,1.0e+011.0e+01,1.0e+051.0e+05的平方根。的平方根。#include stdio.h#include math.hmain() float s=1.0;

41、 do printf(%e,%en,s,sqrt(s); s=s*10; while(s1e6);运行输出结果为:运行输出结果为:1.000000e00/1.000000e001.000000e01/3.162278e001.000000e02/1.000000e011.000000e03/3.162278e011.000000e04/1.000000e021.000000e05/3.162278e02-50-第第4 4章章 控制结构程序设计控制结构程序设计4.4 dowhile循环语句循环语句使用使用dodowhilewhile循环时要注意几点:循环时要注意几点: 在在dodowhilewh

42、ile循环中,循环中,whilewhile(表达式)后面的分号(表达式)后面的分号“;”不能省略,它表明不能省略,它表明dodowhilewhile循环结构在循环结构在“;”处结束。处结束。 dodowhilewhile循环中的表达式与循环中的表达式与whilewhile循环中的表达式相同。循环中的表达式相同。-51-第第4 4章章 控制结构程序设计控制结构程序设计4.5 for循环语句循环语句forfor循环语句的一般格式:循环语句的一般格式: forfor(表达式(表达式; ;表达式表达式; ;表达式)表达式) 语句语句; ;forfor语句的执行过程是:语句的执行过程是: 计算表达式,为

43、控制变量赋初值。计算表达式,为控制变量赋初值。 计算表达式,并判断其值为或非,若其值非,计算表达式,并判断其值为或非,若其值非,转去执行步骤转去执行步骤; ;否则,结束否则,结束forfor循环语句。循环语句。 执行语句(循环体),然后计算表达式(对控制变量执行语句(循环体),然后计算表达式(对控制变量进行增量或减量操作)。进行增量或减量操作)。 转去执行步骤转去执行步骤。-52-第第4 4章章 控制结构程序设计控制结构程序设计4.5 for循环语句循环语句执行流程图执行流程图 : :由由for for 循环的控制流程可知:循环的控制流程可知: 表达式:表达式:一般为赋值表达一般为赋值表达式,

44、它为循环控制变量赋初式,它为循环控制变量赋初值。值。 表达式:表达式:一般为关系表达一般为关系表达式或逻辑表达式,作为控制式或逻辑表达式,作为控制循环结束条件。循环结束条件。 表达式:表达式:一般为赋值表达一般为赋值表达式,为循环控制变量增量或式,为循环控制变量增量或减量。减量。for for 中的语句是循环中的语句是循环体,它可以是任何可执行的体,它可以是任何可执行的语句。语句。图图4-8 for循环语句流程图循环语句流程图 -53-第第4 4章章 控制结构程序设计控制结构程序设计4.5 for循环语句循环语句【例【例4-184-18】求】求s =1+2+3+s =1+2+3+100+100

45、的值。的值。#includestdio.hmain()()int j,sum=0;for(j =1;j=100;j+)sum=sum+j;printf(%dn,sum);-54-第第4 4章章 控制结构程序设计控制结构程序设计4.5 for循环语句循环语句【例【例4-194-19】计算】计算n! n! 。#includestdio.hmain()int j,n,m=1;scanf(d,&n);for(j=1;j=n;j+)m=m*j;printf(n!=%dn,m);-55-第第4 4章章 控制结构程序设计控制结构程序设计4.5 for循环语句循环语句【例【例4-204-20】计算】计

46、算1919的平方。的平方。#includestdio.hmain()int j,i;for(j=1,i=1;j10;j+,i+)printf(%d*%d=%dn,i,j,i*j);此程序还可以改写成如下的情形:此程序还可以改写成如下的情形:#includestdio.hmain() int i=1; for(;i10;) printf(%d*%d=%dn,i,i,i*i); i+; -56-第第4 4章章 控制结构程序设计控制结构程序设计4.5 for循环语句循环语句【例【例4-214-21】相传古代印度国王舍罕要褒奖他聪明能干的宰相达】相传古代印度国王舍罕要褒奖他聪明能干的宰相达依尔(国际象

47、棋的发明者),问他要什么,达依尔回答说,依尔(国际象棋的发明者),问他要什么,达依尔回答说,“国王只要在国际象棋的棋盘上第一个格子放一粒麦子,第国王只要在国际象棋的棋盘上第一个格子放一粒麦子,第二个格子放两粒,第三个格子放四粒,以此类推,每一格加二个格子放两粒,第三个格子放四粒,以此类推,每一格加一倍,一直放到一倍,一直放到64 64 格,我就感恩不尽了格,我就感恩不尽了”。国王答应了他的。国王答应了他的要求,结果全印度的粮食都用完了还不够。国王很纳闷,怎要求,结果全印度的粮食都用完了还不够。国王很纳闷,怎么也算不清这笔帐。现在,我们编写一个么也算不清这笔帐。现在,我们编写一个C C语言程序来

48、帮国王语言程序来帮国王算这笔帐算这笔帐。 上述问题转化成数学问题就是要求上述问题转化成数学问题就是要求 ,若,若1 1立方米小麦大约为立方米小麦大约为1.421.42* * 粒,求出所需小麦的体积。粒,求出所需小麦的体积。 22222633210108-57-第第4 4章章 控制结构程序设计控制结构程序设计4.5 for循环语句循环语句main( ) int n; double v,sum=0.0,t=1.0; for(n=0;n3;i-) if(i%3)i-; -i;-i; printf(%d,i); 输出结果是:输出结果是:7 4-59-第第4 4章章 控制结构程序设计控制结构程序设计4.

49、6 三种循环比较及循环嵌套三种循环比较及循环嵌套 三种循环比较三种循环比较 while while和和forfor都是先判断条件后执行循环体,都是先判断条件后执行循环体,dodowhilewhile是是先执行循环体后判断条件。先执行循环体后判断条件。 while while和和dodowhilewhile语句的条件表达式只有一个,起到控语句的条件表达式只有一个,起到控制循环的作用。制循环的作用。forfor语句有三个表达式,不仅起到控制循环语句有三个表达式,不仅起到控制循环的作用,还可以赋初值,使循环变量增值。的作用,还可以赋初值,使循环变量增值。 三种循环之间可以相互嵌套,嵌套层数不限三种循

50、环之间可以相互嵌套,嵌套层数不限 三种循环都能用三种循环都能用gotogoto、breakbreak跳出循环,用跳出循环,用continuecontinue开始开始下一轮循环。下一轮循环。 对于同一问题,三种循环语句可相互替代。对于同一问题,三种循环语句可相互替代。此外,还可以用此外,还可以用if if语句和语句和gotogoto语句构成循环,但不符合结构化程序设计原语句构成循环,但不符合结构化程序设计原则,建议不要使用这种方法则,建议不要使用这种方法-60-第第4 4章章 控制结构程序设计控制结构程序设计4.6 三种循环比较及循环嵌套三种循环比较及循环嵌套循环嵌套循环嵌套 在一个循环内又包含

51、另一个循环结构,称为循环嵌套。在一个循环内又包含另一个循环结构,称为循环嵌套。 内层循环体中又包含新的循环结构。称为多重循环嵌套。内层循环体中又包含新的循环结构。称为多重循环嵌套。 在在C C语言中,三种循环结构可以任意组合嵌套。语言中,三种循环结构可以任意组合嵌套。 -61-第第4 4章章 控制结构程序设计控制结构程序设计4.6 三种循环比较及循环嵌套三种循环比较及循环嵌套例如:例如:for(j=1;j100;j+ )while()() -62-第第4 4章章 控制结构程序设计控制结构程序设计4.6 三种循环比较及循环嵌套三种循环比较及循环嵌套【例【例4-244-24】求】求10010050

52、0500以内的全部素数,每行输出以内的全部素数,每行输出1010个。个。#includestdio.h#include math.h main() int k,i,n=0; /*n 用于控制输出格式,每十个数据一行用于控制输出格式,每十个数据一行*/ for(k=100;k=500; k+) for(i=2;isqrt(k) printf(%6d,k); /*素数输出素数输出*/ -63-第第4 4章章 控制结构程序设计控制结构程序设计4.6 三种循环比较及循环嵌套三种循环比较及循环嵌套 n+; /*已输出素数的个数已输出素数的个数*/ if(n%10=0) printf(n); /*保证输出

53、素数时每行保证输出素数时每行10个个*/ 程序执行结果:程序执行结果: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467

54、479 487 491 499-64-第第4 4章章 控制结构程序设计控制结构程序设计4.6 三种循环比较及循环嵌套三种循环比较及循环嵌套【例【例4-254-25】打印九九乘法表。】打印九九乘法表。#includestdio.hmain()() int i,j,k; printf(*); for(i=1;i=9;i+) printf(%5d,i); printf(n); for(i=1;i=9;i+) printf(%5d,i);-65-第第4 4章章 控制结构程序设计控制结构程序设计4.6 三种循环比较及循环嵌套三种循环比较及循环嵌套 for(j=1;j=i;j+) k=j*i; print

55、f(%5d,k); printf(“n”); 执行结果为:执行结果为:* 1 2 3 4 5 6 7 8 912 43 6 94 8 12 165 10 15 20 246 12 18 24 30 367 14 21 28 35 42 498 16 24 32 40 48 56 649 18 27 36 45 54 63 72 81-66-第第4 4章章 控制结构程序设计控制结构程序设计4.6 三种循环比较及循环嵌套三种循环比较及循环嵌套【例【例4-264-26】两个】两个forfor循环嵌套的例。循环嵌套的例。#includestdio.hmain()() int j,i,n;for(i=0

56、;i10;i+) for(j=0;j10;j+) n+; printf(n=%d n,n);-67-第第4 4章章 控制结构程序设计控制结构程序设计4.7 标号语句与标号语句与goto语句、语句、break语句和语句和continue语句语句标号语句标号语句 标号语句主要提供一个程序的转移去向。标号语句主要提供一个程序的转移去向。标号语句的形式为:标号语句的形式为: 标号:语句标号:语句; ; 标号语句主要提供给标号语句主要提供给gotogoto语句的转移去向。使用标号语语句的转移去向。使用标号语句时应注意以下几点:句时应注意以下几点: 标号的命名规则同标示符,它是一个文字标号,它一般标号的命

57、名规则同标示符,它是一个文字标号,它一般由由1818个字符组成,首字符必须是字母或下画线个字符组成,首字符必须是字母或下画线“_”_”。对。对标号不必先说明,因为标号本身就是一种说明,它表示程标号不必先说明,因为标号本身就是一种说明,它表示程序中某个位置。序中某个位置。 标号后的冒号不能省略。标号后的冒号不能省略。 在同一个函数内,不允许出现相同的标号。在同一个函数内,不允许出现相同的标号。 -68-第第4 4章章 控制结构程序设计控制结构程序设计4.7 标号语句与标号语句与goto语句、语句、break语句和语句和continue语句语句 标号语句主要作为标号语句主要作为gotogoto语句

58、的转向的目标,在其他任何语句的转向的目标,在其他任何场合下遇到标号语句,只执行该语句而不考虑标号。场合下遇到标号语句,只执行该语句而不考虑标号。 标号语句可以是空、空语句或其他语句。标号语句可以是空、空语句或其他语句。如:如:loop:loop: ;loop:y=x+;这些都是合法的标号语句。这些都是合法的标号语句。-69-第第4 4章章 控制结构程序设计控制结构程序设计4.7 标号语句与标号语句与goto语句、语句、break语句和语句和continue语句语句无条件转移语句无条件转移语句gotogoto goto语句的一般格式为:语句的一般格式为: gotogoto 标号标号; ; got

59、o语句的功能:使程序控制无条件转去执行标号所语句的功能:使程序控制无条件转去执行标号所标志的那个语句。标志的那个语句。 -70-第第4 4章章 控制结构程序设计控制结构程序设计4.7 标号语句与标号语句与goto语句、语句、break语句和语句和continue语句语句【例【例4-274-27】用】用gotogoto语句实现循环求语句实现循环求s=1+2+3+4+s=1+2+3+4+100+100的值。的值。main() int j=1,s=0; loop: if(j=100) s+=j;j+; goto loop; printf(sum=%dn,s);-71-第第4 4章章 控制结构程序设计控制结构程序设计4.7 标号语句与标号语句与goto语句、语句、break语句和语句和continue语句语句 goto goto语句总是从里层结构跳到外层或有条件的在同层之语句总

温馨提示

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

评论

0/150

提交评论