《最新四章节程序流程控制语句PPT课件》由会员分享,可在线阅读,更多相关《最新四章节程序流程控制语句PPT课件(76页珍藏版)》请在金锄头文库上搜索。
1、四章节程序流程控制语句四章节程序流程控制语句第四章第四章 程序流程控制语句程序流程控制语句 C C语言的基本语句语言的基本语句 上机调试程序的方法上机调试程序的方法 基本的程序设计方法基本的程序设计方法 输出简单图形输出简单图形 穷举法穷举法本本 章章 要要 点点24-24-2 注释语句注释语句- -实例实例l实例实例 # #include stdio.hinclude stdio.hmain( )main( ) printf(Hello !n); printf(Hello !n); /*/* printf(Thanks !n); printf(Thanks !n); */*/ l合法的注释合
2、法的注释x = y+5;x = y+5; /*/* x is integer number, xx is integer number, x是整型是整型 */*/x = 10 +x = 10 + /*/* 合法的注释但不是好的注释合法的注释但不是好的注释 */*/ 5;5;l不合法的注释不合法的注释swiswi/*/* 不能在标识符中间插入注释不能在标识符中间插入注释 */*/tch(c) .tch(c) ./*/* this is an outer commentthis is an outer comment x = y/a; x = y/a; /*/* 注释不允许嵌套注释不允许嵌套 */
3、*/ */*/94-3 4-3 复合语句复合语句l复合语句格式复合语句格式 用用 和和 括起来的若干合法的括起来的若干合法的C C语句。语句。l复合语句的目的复合语句的目的语法上语法上等价等价于于单一单一语句。因此在语言中,语句。因此在语言中,凡是可以使用单一语句的地方,均可使用复凡是可以使用单一语句的地方,均可使用复合语句。合语句。明确层次关系明确层次关系l复合语句的使用方法复合语句的使用方法复合语句允许嵌套,且嵌套层次没有限制复合语句允许嵌套,且嵌套层次没有限制对于复合语句,右花括号对于复合语句,右花括号“”的后面不必的后面不必再跟一个分号(再跟一个分号(;)104-3 4-3 复合语句复
4、合语句- -实例实例l例例C3_3001.C: C3_3001.C: 判断输入整数的正负性和奇偶性。判断输入整数的正负性和奇偶性。1.1.main( )main( )2.2. int x;int x;3. 3. printf(Enter a integer:); scanf(%d,&x); printf(Enter a integer:); scanf(%d,&x); 4.4.if if (x!=0)(x!=0)5. 5. /* /* 处理处理x x不等于不等于0 0的情况的情况 */ */6. 6. ifif (x0) (x0) /* /* 若若x x大于大于0 0成立成立 */ */7.
5、7. x = x%2; x = x%2; /* /* 则计算则计算x x除以除以2 2的余数的余数 */ */8. 8. if (x=0) printf(”Is a plus even.n);if (x=0) printf(”Is a plus even.n);9. else printf(”Is a plus odd numbern);9. else printf(”Is a plus odd numbern);10. 10. 11. 11. else else /* /* 否则,处理否则,处理x x为负数的情况为负数的情况 */ */12. 12. x = x%2; x = x%2; /*
6、 /* 计算计算x x除以除以2 2的余数的余数 */ */13. 13. if (x=0) printf(”Is a minus even.n);if (x=0) printf(”Is a minus even.n);14. else printf(”Is a minus odd numbern);14. else printf(”Is a minus odd numbern);15. 15. 16.16. 17.17. elseelse printf (This integer is zero.n); printf (This integer is zero.n);18.18. 114-4
7、 4-4 选择语句选择语句l提出问题提出问题l二重分支的条件语句二重分支的条件语句 ifl多多重分支的条件语句重分支的条件语句 switch根据学生分数判断是否及格?根据学生分数判断是否及格?根据学生分数如何进行分级?根据学生分数如何进行分级?如何解决如何解决?自然语言:自然语言:如果如果 那么那么 否则否则C语言:语言: 分支语句分支语句124-4-1 4-4-1 选择语句选择语句- -ifif语句语句lif语句格式语句格式 格式格式1 1:ifif ( (表达式表达式) ) 语句语句; 格式格式2 2:ifif ( (表达式表达式) ) 语句语句1 1;elseelse 语句语句2 2;l
8、ifif语句的执行流程语句的执行流程流程流程1 1: 流程流程2 2:表达式表达式执行语句执行语句成立成立不成立不成立表达式表达式执行语句执行语句2执行语句执行语句1成立成立不成立不成立分支条件分支条件134-4-1 4-4-1 选择语句选择语句- -ifif语句语句l 例例C3_4101.CC3_4101.C:求求a a和和b b两数中较大的一个。两数中较大的一个。# #include include main( ) main( ) /* /* 程序功能:求程序功能:求a a和和b b的最大值的最大值 */ */ int a,b,max;int a,b,max; printf(Input a
9、 and b=); printf(Input a and b=); scanf(%d%d,&a, &b); scanf(%d%d,&a, &b); /* input number a and b */* input number a and b */ if if ( ( ab ab ) ) max=amax=a; ; /* /* 如果如果abab,则将则将a=max */a=max */ elseelse max=b;max=b; /* /* 否则,否则, b=max */b=max */ printf(The max of a and b : %dn, max); printf(The ma
10、x of a and b : %dn, max); ab?max=bmax=a成立成立不成立不成立例例例例C3_4101C3_4101C3_4101C3_4101ifif语句中进行条件判断语句中进行条件判断的的“表达式表达式”必须用必须用( ( ) )括起来且不可省略括起来且不可省略144-4-1 4-4-1 选择语句选择语句- -ifif语句语句l 例例C3_4101.CC3_4101.C:求求a a和和b b两数中较大的一个。两数中较大的一个。# #include include main( ) main( ) /* /* 程序功能:求程序功能:求a a和和b b的最大值的最大值 */ *
11、/ int a,b,max;int a,b,max; printf(Input a and b=); printf(Input a and b=); scanf(%d%d,&a, &b); scanf(%d%d,&a, &b); max=a; max=a; if if ( ( maxbmaxb ) ) max=bmax=b; ; printf(The max of a and b : %dn, max); printf(The max of a and b : %dn, max); 例例例例C3_41011C3_41011C3_41011C3_41011以上两个程序等价以上两个程序等价maxb
12、max=b成立成立不成立不成立154-4-1 4-4-1 选择语句选择语句- -ifif语句语句l 例例C3_4102.CC3_4102.C:从键盘输入被除数从键盘输入被除数a a和除数和除数b b,求商。求商。 main( )main( ) int a,b; int a,b; printf(Enter two numbers: ); printf(Enter two numbers: ); scanf(%d%d, &a, &b); scanf(%d%d, &a, &b); if if (b!=0) (b!=0) printf(%dn, a/b);printf(%dn, a/b); else
13、else printfprintf(cannot divide by zero.n);(cannot divide by zero.n); b?printf .printf.非非 00ifif ( (b b) ) printf(%dn, a/b);printf(%dn, a/b);elseelse printfprintf(”error.n);(”error.n);等价!等价!164-4-1 4-4-1 选择语句选择语句- -ifif语句语句lifif语句嵌套语句嵌套义:义:在在ifif语句的语句的“语句语句1 1”或或“语句语句2”2”中又包含着中又包含着ifif语句语句例例C3_4103.
14、CC3_4103.C:比较两个整数的之间的关系(大小比较两个整数的之间的关系(大小/ /相等)。相等)。 # #include include main( )main( ) int x, y; int x, y; printf (Enter integer X and Y:); printf (Enter integer X and Y:); scanf (%d%d, &x, &y); scanf (%d%d, &x, &y); ifif ( x != y ) ( x != y ) ifif ( x y ) ( x y ) printfprintf (XYn); (XYn); elseelse
15、 printfprintf (XYn); (Xb)if(ab) /*/*1 1 */*/ if(ac) if(ac) /*/*2 2 */ */ if(ad) flag=1; if(ad) flag=1;/*/*3 3 */ */ else flag=2; else flag=2;/*/*4 4 */ */ else flag=3; else flag=3;/*/*5 5 */ */ 问题:问题:第四行和第五行的第四行和第五行的elseelse语句与哪一个语句与哪一个ifif语句语句相匹配呢相匹配呢? ? 分析:分析:匹配方案可以有很多种匹配方案可以有很多种,(2-4,1-5),(3-4,2-
16、,(2-4,1-5),(3-4,2-5),(1-4,)5),(1-4,)l匹配规则匹配规则:在嵌套的:在嵌套的if-elseif-else语句语句中,中,elseelse子子句总是与句总是与上面的上面的、离它最近的离它最近的、且、且在同一复在同一复合语句中还没有配对的合语句中还没有配对的ifif子子语配对。语配对。184-4-1 4-4-1 选择语句选择语句- -ifif语句语句1 1、ifif (ab) (ab)ifif (ac) (ac) if (ad) flag=1; if (ad) flag=1; else flag=2; else flag=2;elseelse flag=3; fl
17、ag=3;程序含义:当程序含义:当 c c= =a ab b 时,时,flag=3flag=32 2、if if (ab)(ab) ifif (ac) (ac) if (ad) flag=1; if (ad) flag=1; else else flag=2;flag=2; /* /* 以上是一个完整的以上是一个完整的复合复合语句语句 */ */elseelse flag=3; flag=3;程序含义:当程序含义:当 a=b a=b 时,时,flag=3flag=3 194-4-1 4-4-1 选择语句选择语句- -ifif语句语句3 3、if (a=b)if (a=b) if (b=c) p
18、rintf(a=b=cn); if (b=c) printf(a=b=cn); else printf(”a!=bn”); else printf(”a!=bn”); 尽管尽管书写书写格式如此,真实的格式如此,真实的正确正确的含义是:的含义是: ifif (a=b) (a=b) ifif (b=c) printf(a=b=cn); (b=c) printf(a=b=cn); elseelse printf(a!=bn”); printf(a!=bn”); 通过加通过加 ,可以改变配对关系:可以改变配对关系: ifif (a=b) (a=b) ifif (b=c) printf(a=b=cn);
19、 (b=c) printf(a=b=cn); elseelse printf(”a!=bn”); printf(”a!=bn”); 204-4-1 4-4-1 选择语句选择语句- -ifif语句语句l例例C3_4104.CC3_4104.C:已知银行整存整取存款月息利已知银行整存整取存款月息利率分别为率分别为: 一年期:一年期:0.63% 0.63% 二年期:二年期:0.66%0.66% 三年期:三年期:0.69% 0.69% 五年期:五年期:0.75%0.75% 八年期:八年期:0.84% 0.84% 其它:其它:0 0 要求输入存钱的本金和期限,求到期时利息要求输入存钱的本金和期限,求到期
20、时利息与本金合计。银行到期利息计算公式:与本金合计。银行到期利息计算公式:利息本金利息本金月息利率月息利率1212存款年限存款年限 程序中应当根据存款的年限确定利率程序中应当根据存款的年限确定利率214-4-1 4-4-1 选择语句选择语句- -ifif语句语句 # #include include main( )main( ) int year; int year; float money,rate,total; float money,rate,total; /* /* 本金,月利率,本利合计本金,月利率,本利合计*/*/ printf(Input money and year =?);p
21、rintf(Input money and year =?); scanf(%f%d, &money, &year); scanf(%f%d, &money, &year); /* /* 输入本金和年限输入本金和年限 */ */ ifif ( year = 1 ) rate=0.0063; ( year = 1 ) rate=0.0063; /* /* 根据年限定利率根据年限定利率 */ */ else else ifif ( year = 2 ) rate=0.0066; ( year = 2 ) rate=0.0066; elseelse ifif ( year = 3 ) rate=0.
22、0069; ( year = 3 ) rate=0.0069; elseelse ifif ( year = 5 ) rate=0.0075; ( year = 5 ) rate=0.0075; elseelse ifif ( year = 8 ) rate=0.0084; ( year = 8 ) rate=0.0084; elseelse rate=0.0; rate=0.0; total = money + money * rate *12 * year; total = money + money * rate *12 * year; printf( Total = %.2fn, to
23、tal);printf( Total = %.2fn, total); 224-4-1 4-4-1 选择语句选择语句- -ifif语句语句l采用采用if-else ifif-else if结构改写。结构改写。 # #include include main( )main( ) int year; int year; float money,rate,total; float money,rate,total; /* /* 本金,月利率,本利合计本金,月利率,本利合计*/*/ printf(Input money and year =?);printf(Input money and year
24、=?); scanf(%f%d, &money, &year); scanf(%f%d, &money, &year); /* /* 输入本金和年限输入本金和年限 */ */ ifif ( year = 1 ) rate=0.0063; ( year = 1 ) rate=0.0063; /* /* 根据年限定利率根据年限定利率 */ */ else else ifif ( year = 2 ) rate=0.0066; ( year = 2 ) rate=0.0066; elseelse if if ( year = 3 ) rate=0.0069;( year = 3 ) rate=0.0
25、069; elseelse ifif ( year = 5 ) rate=0.0075; ( year = 5 ) rate=0.0075; elseelse ifif ( year = 8 ) rate=0.0084; ( year = 8 ) rate=0.0084; else else rate=0.0; rate=0.0; total = money + money * rate *12 * year; total = money + money * rate *12 * year; printf( Total = %.2fn, total);printf( Total = %.2fn
26、, total); 234-4-1 4-4-1 选择语句选择语句- -ifif语句语句l例例C3_4105.CC3_4105.C:通过键盘输入字符,将输入的字符分为通过键盘输入字符,将输入的字符分为控控制制、数字数字、大写大写字母、字母、小写小写字母和字母和其他其他字符等五类。字符等五类。ASCIIASCII码表中的前码表中的前3232个字符为控制字符,个字符为控制字符,0 09 9为为数字数字, , A AZ Z为大写字母为大写字母, , a az z为小写字母,为小写字母,其其它它。 # #include include main ( )main ( ) char c; char c; p
27、rintf (Enter a character:); printf (Enter a character:); c=getch( ); c=getch( ); ifif ( (c0x20c=c=0 0 & c= & c=c=A A & c= & c= ( c=a a & c= & c=z z ) ) printf (nIs a lower character.n); printf (nIs a lower character.n); else else printf printf (nIs a other character.n);(nIs a other character.n); 例例例
28、例C3_4105C3_4105C3_4105C3_4105244-4-1 4-4-1 选择语句选择语句- -ifif语句语句lif语句与条件运算的关系语句与条件运算的关系l例:例:求一个数的绝对值求一个数的绝对值if ( y0 ) x=-y;elsex=y;(y0) ? x=-y : x=y;等价等价等等价价x = (y0) ? y : y;说明:说明:if elseif else可以完可以完成与条件运算符成与条件运算符( ? : )完全相同的任务,并且完全相同的任务,并且可以进行相应的转换。可以进行相应的转换。254-4-1 4-4-1 选择语句选择语句- -ifif语句语句lifif语句与
29、条件运算的区别:语句与条件运算的区别:条件运算符形式比较简单,条件运算符形式比较简单,有较强的灵活性,可以替代部分有较强的灵活性,可以替代部分ifif语句。语句。l例:例:if ( cans=1 ) printf(”You need 1 can of paint.”); else printf(”You need 2 cans of paint. ”); 转换:转换:(cans=1)? printf(”You need 1 can of paint.”) : printf(”You need 2 cans of paint.”); 转换:转换:printf(cans=1? ”You need
30、1 can of paint.” : ”You need 2 cans of paint.”); 转换:转换:printf (”You need %d %s of paint.”, cans , cans=1 ? ”can” : ”cans” );可以在函数中方便地使用条件运算可以在函数中方便地使用条件运算264-4-2 4-4-2 选择语句选择语句- -switchswitch语句语句lswitch语句格式语句格式 switch (switch (表达式表达式) ) casecase 常量常量1 1: : 语句序列语句序列1 1 breakbreak; ; casecase 常量常量2 2:
31、 : 语句序列语句序列2 2 breakbreak; ; default default: : 语句序列语句序列n+1n+1 执行语句序列序列1=常量常量1?计算计算表达式表达式的值的值相等相等不相等不相等break执行语句序列序列2=常量常量2?相等相等不相等不相等break执行语句序列序列n+1有有default?有有没有没有274-4-2 4-4-2 选择语句选择语句- -switchswitch语句语句switch (number) case 1: statement 1;break;case 2: statement 2;break;case 3: statement 3;break
32、;default: statement 4;statement 5;当当number的值为的值为2时时284-4-2 4-4-2 选择语句选择语句- -switchswitch语句语句lswitch语句使用注意事项语句使用注意事项1.1.switchswitch语句与语句与ifif语句不同,仅能判断一种关系:是否语句不同,仅能判断一种关系:是否恒等恒等。2.2.switchswitch语句中语句中casecase子句的子句的常量常量可以是整型常量、字符型常量、可以是整型常量、字符型常量、枚举型数据,或是整型常量表达式,枚举型数据,或是整型常量表达式,不允许是变量不允许是变量。3.3.在在同一个
33、同一个switchswitch中,中,casecase子句的子句的常量不能相同常量不能相同;在;在嵌套嵌套的的switchswitch语句中,不同层次的语句中,不同层次的switchswitch之间,可有相同的常量。之间,可有相同的常量。4.4.defaultdefault子句可以省略子句可以省略。5.5.case case 和和 default default 子句只能在子句只能在switchswitch语句中使用,且语句中使用,且 casecase和和 default default 只起标号作用只起标号作用,可出现在,可出现在switchswitch中的任何位置。中的任何位置。6.6.c
34、asecase 和和 defaultdefault 子句后面的语句序列允许由多个可执行语子句后面的语句序列允许由多个可执行语句组成,且不必用句组成,且不必用“ ”括起来,也可以为括起来,也可以为空空语句。语句。7.7.switchswitch语句中语句中可省略可省略breakbreak语句语句,但省略后会改变流程。,但省略后会改变流程。294-4-2 4-4-2 选择语句选择语句- -switchswitch语句语句l例例C3_4104.CC3_4104.C:计算存款本利。采用计算存款本利。采用switchswitch改写。改写。 # #include include main( )main(
35、 )int year;int year; float money,rate,total; float money,rate,total; /* /* 本金,月利率,本利合计本金,月利率,本利合计*/*/ printf(Input money and year =?);printf(Input money and year =?); scanf(%f%d, &money, &year); scanf(%f%d, &money, &year); /* /* 输入本金和年限输入本金和年限 */ */ switch switch ( year ) ( year ) /*/*根据年限定利率根据年限定利率
36、*/*/ case case 1 1: : rate=0.0063; rate=0.0063; breakbreak; ; casecase 2 2: :rate=0.0066; rate=0.0066; breakbreak; ; casecase 3 3: :rate=0.0069; rate=0.0069; breakbreak; ; casecase 5 5: :rate=0.0075; rate=0.0075; breakbreak; ; casecase 8 8: :rate=0.0084; rate=0.0084; breakbreak; ; defaultdefault: :r
37、ate=0;rate=0; total = money + money * rate *12 * year; total = money + money * rate *12 * year; printf( Total = %.2fn, total);printf( Total = %.2fn, total); 304-4-2 4-4-2 选择语句选择语句- -switchswitch语句语句l例例C3_4203.CC3_4203.C:输入输入yearyear年份和月年份和月monthmonth,求该月天数。求该月天数。l如何判断闰年如何判断闰年? 闰年:能够被闰年:能够被4 4整除整除且且不
38、能不能被被100100整除整除的年份的年份 或或 能够被能够被400400整除整除的年份的年份 例如:例如:19961996年、年、19801980年是年是闰年闰年 19701970年、年、19001900年是年是平年平年 2000 2000年是年是闰年闰年l判断闰年的判断闰年的C C语言公式语言公式year%4=0 year%4=0 & year%100!=0 year%100!=0 | year%400=0 year%400=0 当当year=year=19961996时,结果为时,结果为1 1 当当year=year=19971997时,结果为时,结果为0 0 当当year=year=1
39、9001900时,结果为时,结果为0 0 当当year=year=20002000时,结果为时,结果为1 1 若为若为闰年闰年:结果为:结果为1若为若为平年平年:结果为:结果为0314-4-2 4-4-2 选择语句选择语句- -switchswitch语句语句 main( )main( ) int year, month, days; int year, month, days; scanf(%d%d, &year, &month); scanf(%d%d, &year, &month); switch switch (month)(month) casecase 1 1: case: cas
40、e 3 3: case: case 5 5: case: case 7 7: : casecase 8 8: case: case 1010: case: case 1212: : /* /* 处理处理“大大”月月 */ */ days=31; days=31; breakbreak; ; case case 4 4: case : case 6 6: case : case 9 9: case : case 1111: : /* /* 处理处理“小小”月月 */ */ days=30; days=30; breakbreak; ; case 2:case 2: /* /* 处理处理“平平”月
41、月 */ */ ifif ( year%4=0 & year%100!=0 | year%400=0 ) ( year%4=0 & year%100!=0 | year%400=0 ) days=29; days=29; /* /* 如果是闰年如果是闰年 */ */ elseelse days=28; days=28; /* /* 不是闰年不是闰年 */ */ breakbreak; ; default:default: /* /* 月份错误月份错误 */ */ printf(Input error!n);printf(Input error!n); days=0; days=0; ifif
42、(days!=0) printf(”%d,%d is %ddaysn,year,month,days); (days!=0) printf(”%d,%d is %ddaysn,year,month,days); 省略省略case子句之后的语句子句之后的语句324-4-2 4-4-2 选择语句选择语句- -switchswitch语句语句l省略省略breakbreak语句语句 例如:某程序段中,例如:某程序段中,errorerror是进行出错处理的函数。是进行出错处理的函数。 flag=-1; /* error marker */flag=-1; /* error marker */switch
43、switch (i) (i) casecase 1: 1: casecase 2: 2: casecase 3: 3: flag=0; /* no error */flag=0; /* no error */ breakbreak; ; casecase 4: 4: flag=1; /* error #1 */flag=1; /* error #1 */ casecase 5: 5: error(flag); /* error process */error(flag); /* error process */ breakbreak; ; default: default: flag=2; /
44、* other error */flag=2; /* other error */ /* /* 假定函数假定函数errorerror是出错处理函数是出错处理函数 */ */当当 i=1i=1,2 2,3 3 时:时:flagflag=0=0;退出。退出。当当 i i=5 =5 时:时:flag flag = -1= -1;调用调用erorr(flag)erorr(flag);退出。退出。当当 i=4 i=4 时:时:flag flag = 1= 1;调用调用 error(flag)error(flag);退出。退出。334-4-2 4-4-2 选择语句选择语句- -switchswitch语句
45、语句l例例C3_4202.CC3_4202.C:请编写一个程序计算表达式:请编写一个程序计算表达式:data1 data1 opop data2 data2的值。的值。 main ( )main ( ) float data1, data2;char op;float data1, data2;char op; /* /* 定义操作数、操作符变量定义操作数、操作符变量 */ */printf(Enter your expression:);printf(Enter your expression:);scanf (”%f%c%f”, &data1, &op, &data2); scanf (”
46、%f%c%f”, &data1, &op, &data2); /* /* 输入表达式输入表达式 */*/switchswitch ( ( opop ) ) /* /* 根据操作符分别进行处理根据操作符分别进行处理 */ */ casecase + : : /* /* 处理加法处理加法 */ */ printf(%.2f+%.2f=%.2fn, data1, data2, data1+data2);printf(%.2f+%.2f=%.2fn, data1, data2, data1+data2);breakbreak; ; casecase - : : /* /* 处理减法处理减法 */ */
47、printf (%.2f-%.2f=%.2fn, data1, data2, data1-data2);printf (%.2f-%.2f=%.2fn, data1, data2, data1-data2);breakbreak; ; casecase * : : /* /* 处理乘法处理乘法 */ */printf (%.2f*%.2f=%.2fn, data1, data2, data1*data2);printf (%.2f*%.2f=%.2fn, data1, data2, data1*data2);breakbreak; ; casecase / : : /* /* 处理除法处理除法
48、 */ */if if ( data2( data2=0 )0 ) /* /* 若除数为若除数为 */ */ printf (Division by zero.n);printf (Division by zero.n);elseelse printf (%.2f/%.2f=%.2fn, data1, data2, data1/data2); printf (%.2f/%.2f=%.2fn, data1, data2, data1/data2); breakbreak; ; defaultdefault: : /* /* 输入其它运算符输入其它运算符 */ */ printf (Unknown
49、 operater.n);printf (Unknown operater.n); 例例例例C3_4202C3_4202C3_4202C3_4202344-5 4-5 循环语句循环语句l提出问题提出问题提问:提问:从键盘上输入从键盘上输入10个整数并求和,怎么编程?个整数并求和,怎么编程?回答:回答:在程序中写入在程序中写入10个个scanf( )语句。语句。提问:提问:从键盘上输入从键盘上输入500个整数并求和,怎么编程?个整数并求和,怎么编程?回答:回答:这个,嗯这个,嗯? 不会让我写不会让我写500个个.老师:老师:让我们换一个角度来看待这些问题,让我们换一个角度来看待这些问题, 以上问
50、题的实质是:将以上问题的实质是:将scanfscanf函数重复执行函数重复执行N N遍。遍。学生:学生:对!好象是这么回事对!好象是这么回事.老师:老师:我们可以引出一个概念我们可以引出一个概念“循环循环”,简单而言:,简单而言:循循环环就是不断就是不断反复地执行同一段程序。反复地执行同一段程序。学生:学生:这就是我们今天要学的新东西?这就是我们今天要学的新东西?354-5 4-5 循环语句循环语句l循环循环 反复执行同一段程序,直到满足反复执行同一段程序,直到满足一定的条件后才停止执行该段程序。一定的条件后才停止执行该段程序。lC语言中控制循环的语句:语言中控制循环的语句: while fo
51、r do-while364-5-1 4-5-1 whilewhile语句语句lwhile语句格式语句格式while ( while ( 表达式表达式 ) ) 语句语句;说明:语句说明:语句部分可以是部分可以是简单语句简单语句,也可,也可以是以是复合语句复合语句。lwhilewhile语句的执行流程语句的执行流程表达式表达式?执行语句语句成立成立不成立不成立执行while循环之后的语句循环控制条件循环控制条件循环体循环体374-5-1 4-5-1 whilewhile语句语句- -实例实例l例例C3_5101.C C3_5101.C 从键盘输入从键盘输入1010个整数,求这个整数,求这1010个
52、整数个整数的和。的和。 # #include include main ( )main ( ) int count,num,total; int count,num,total; /* count:/* count:计数器,计数器,num:num:输入的整数输入的整数 */ */ count=0; total=0; count=0; total=0; /* total:/* total:存放累加和存放累加和 */ */ whilewhile ( ( count10count10 ) ) /* /* 循环控制条件循环控制条件 */ */ count +; count +; /* /* 循环体循环
53、体 */ */ printf (Enter the No.%d=, count);printf (Enter the No.%d=, count); scanf (%d, &num); scanf (%d, &num); total += num; total += num; /* /* 计算累加和计算累加和 */ */ printf(Total=%dn, total);printf(Total=%dn, total); 例例例例C3_5101C3_5101C3_5101C3_5101384-5-1 4-5-1 whilewhile语句语句- -实例实例l例:例:分析程序的运行结果分析程序的运
54、行结果 # #include include main ( )main ( ) int n=0;int n=0;while ( n3 )while ( n3 )printf (”n is %dn”,n);printf (”n is %dn”,n);n+;n+;printf(”Thats all this program printf(”Thats all this program does.n”);does.n”); 结果:结果:程序将不停的打印程序将不停的打印“n is 0”,直至终止程序直至终止程序l无法正常终止的程序,称为无法正常终止的程序,称为“死循环死循环”。结论:结论:while语
55、句语句循环体循环体中,一定要有能够中,一定要有能够对循环控制对循环控制条件产生影响的语句条件产生影响的语句。避免出现。避免出现“死循环死循环”现象。现象。例例例例C3_51011C3_51011C3_51011C3_51011394-5-1 4-5-1 whilewhile语句语句- -实例实例l例例1:分析下列程序段分析下列程序段 index=1;index=1;while ( while ( index index 5 ) 5 )printf(”Good morning!n”);printf(”Good morning!n”);分析:分析: 程序段将无限制打印字符串。程序段将无限制打印字符
56、串。 因为循环中因为循环中没有没有任何语句可以改变循环控制变任何语句可以改变循环控制变量量indexindex的初值的初值1 1。404-5-1 4-5-1 whilewhile语句语句- -实例实例l例例2 2:分析下列程序段分析下列程序段 index=1;index=1;while( - while( - index index 5 ) 5 )printf(”Good morning!n”);printf(”Good morning!n”);分析:分析: 仍有问题,程序改变了仍有问题,程序改变了indexindex,但方向错了。,但方向错了。 在在indexindex达到系统能够处理的最大
57、负数时,将会达到系统能够处理的最大负数时,将会产生下溢而终止程序。产生下溢而终止程序。结论:结论: 循环体中必须有能够使循环循环体中必须有能够使循环正常停止正常停止的条件。的条件。414-5-1 4-5-1 whilewhile语句语句- -实例实例l例例C3_5103.CC3_5103.C:从键盘中读入一系列字符,直到输入字从键盘中读入一系列字符,直到输入字母母a a时才停止。时才停止。分析:分析:由于不知道要输入的字符数量,只知停止条件由于不知道要输入的字符数量,只知停止条件是输入字母是输入字母a a,则只能将循环控制条件设为则只能将循环控制条件设为ch!=ch!=a a。 #includ
58、e #include main( )main( ) char ch= char ch= ; ; while while ( ( ch!=ch!=a a ) ) putchar(putchar( ch = getch( )ch = getch( ) ) ); 例例例例C3_5103C3_5103C3_5103C3_5103 改写:改写: # #include include main( )main( ) char ch; char ch; while while ( ( ( (ch = getch( )ch = getch( ) ) !=!=a a ) ) ; 例例例例C3_51031C3_51
59、031C3_51031C3_51031循环体为空语句循环体为空语句424-5-1 4-5-1 whilewhile语句语句- -实例实例l例例C3_5104.CC3_5104.C:对输入的行和字符进行计数。对输入的行和字符进行计数。分析:分析: n n作为作为行结束行结束标记的,标记的,DOSDOS中有中有 CTRL+ZCTRL+Z作为作为文件结束文件结束标记标记 # #define EOF -1define EOF -1# #include include main ( )main ( ) int c,nl=0,nc=0; int c,nl=0,nc=0; whilewhile ( ( (
60、c = getchar( ) )( c = getchar( ) ) != != EOF EOF ) ) + nc;+ nc; ifif ( c = ( c = nn ) ) + nl; + nl; printf(chars=%d, lines=%dn, nc, nl);printf(chars=%d, lines=%dn, nc, nl); 例例例例C3_5104C3_5104C3_5104C3_5104 定义文件结束标记定义文件结束标记 nlnl行计数器行计数器ncnc字符计数器字符计数器 进行字符计数进行字符计数 如果找到如果找到 n n,则行计数则行计数434-5-1 4-5-1 wh
61、ilewhile语句语句- -实例实例l例例3 3:求求1 1到到100100的之和。的之和。 main ( )main ( ) int total=0, int total=0, i=1i=1; ; whilewhile ( ( i = 100i = 100 ) ) total = total + i;total = total + i; i +;i +; printf(”Total=%dn, total);printf(”Total=%dn, total); 例例例例C3_51041C3_51041C3_51041C3_51041 变形变形1 1:whilewhile ( ( i = 10
62、0i total+=i;= total+=i; +i+i 变形变形2 2:int int i=i=0;0; whilewhile ( ( +i = 100i +i; = +i; 判断判断i=100i=100 total += i total += i; ; 变形变形3 3:int int i=0i=0; ; whilewhile ( i ( i+ + = 判断判断i100i100;i+i+ total += i total += i; ; 变形变形4 4:int int i=0i=0; ; whilewhile ( i ( i 100 +i; total+=i= +i; total+=i444
63、-5-1 4-5-1 whilewhile语句语句- -实例实例l循环嵌套循环嵌套 在循环体中,又在循环体中,又包含包含有有循环循环语句,构成语句,构成循环嵌套循环嵌套。例例C3_5107.CC3_5107.C:输出下三角形乘法九九表。输出下三角形乘法九九表。 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9- 1 1 2 4 2 4 3 6 9 3 6 9 4 8 12 16 4 8 12 16 5 10 15 20 25 5 10 15 20 25 6 12 18 24 30 36 6 12 18 24 30 36 7 14 21 28 35 42 49 7 14 2
64、1 28 35 42 49 8 16 24 32 40 48 56 64 8 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81 9 18 27 36 45 54 63 72 81 假设假设:行号为:行号为i i ,列号为列号为j ji i= =6 6j j= =5 5i i* *j j( (1 1=i=i=9 9) )( (1 1=j j=i i) ) 则则:第:第 i i 行中一共要输出行中一共要输出 i i 个乘积个乘积454-5-1 4-5-1 whilewhile语句语句- -实例实例 # #include include main ( )m
65、ain ( ) int int i i=1, j; =1, j; /* /* i i: :行行计数器计数器 j j: :列列计数器计数器 */ */ whilewhile ( ( i i = 9 ) = 9 ) /* /* 控制打印表头控制打印表头 */ */ printf ( %4d, printf ( %4d, i i+ ); + ); printf (n-n);printf (n-n); i=1i=1; ; while while ( ( i i= 9 )= 9 ) j j = 1; = 1; /* /* 列列计数器置计数器置1 */1 */ while while ( ( j j =
66、1 n1 时时 # #include include main ( )main ( ) long int n=1; long int n=1; int i; int i; forfor ( ( i = 1i = 1; ; i =10i =10; ; i+i+ ) ) n = n * i; n = n * i; /* /* 求求N! */N! */printf ( %2d!=%ldn, i, n);printf ( %2d!=%ldn, i, n); 例例例例C3_5203C3_5203C3_5203C3_5203lforfor语句最常用的形式语句最常用的形式for for (初值初值;控制条件
67、控制条件;增量增量) 语句;语句;494-5-2 4-5-2 forfor语句语句- -实例实例l例例C3_5202.CC3_5202.C:用用forfor语句实现打印乘法九九表。语句实现打印乘法九九表。 # #include include main ( )main ( ) int i, j; int i, j;forfor ( ( i=1; i=1; i10i10; ; i+i+ ) ) printf (%4d,i); printf (%4d,i); /* /* 打印表头打印表头 */ */ printf (n-n);printf (n-n);forfor ( ( i=1i=1; ; i1
68、0i10; i+; i+ ) ) /* /* 控制打印表体控制打印表体 */ */ forfor ( ( j=1j=1; ; j=ij=3n=3)为求出第为求出第N N项的值,请编写程序。项的值,请编写程序。 根据递推通项公式,可用根据递推通项公式,可用递推法递推法编写程序,计算编写程序,计算第第N N项的值。项的值。l递推法递推法:由初始的已知条件开始,由初始的已知条件开始,先计算出第先计算出第( (N N1)1)步的结果,步的结果,再再利用前面已知的利用前面已知的( (N N1)1)项结果,按照递项结果,按照递推公式(或遵照递推规则),推公式(或遵照递推规则),推出第推出第N N步结果步结
69、果。递推法递推法是程序设计中最常用的方法之一,使用递推法是程序设计中最常用的方法之一,使用递推法必须有明确的必须有明确的递推初始值递推初始值和和递推规则递推规则(递推公式)。(递推公式)。524-5-2 4-5-2 forfor语句语句- -实例实例l例例C3_5204.CC3_5204.C程序程序# #include include main( )main( ) int n,i,un1,un2,un; int n,i,un1,un2,un; for for ( ( ; ; ; ) ) printf (Input n=?); scanf (%d,&n); printf (Input n=?);
70、 scanf (%d,&n); ifif ( n = 3 ) ( n = 3 ) breakbreak; ; /* /* 退出退出forfor循环循环 */ */ elseelse printf (nInput n is error !n); printf (nInput n is error !n); /* /* 控制输入正确的控制输入正确的N N值值 */ */ un = un2 = 1; un = un2 = 1; /* /* 设置递推初始值设置递推初始值 */ */ forfor ( i=3; i=n; i+) ( i=3; i=n; i+) /* /* 用递推法计算第用递推法计算第N
71、 N项的值项的值 */ */ un1 = un2; un2 = un; un = un1 + un2;un1 = un2; un2 = un; un = un1 + un2; printf (No. %d is %dn, n, un); printf (No. %d is %dn, n, un); 例例例例C3_5204C3_5204C3_5204C3_5204534-5-2 4-5-2 forfor语句语句- -实例实例l语句中的逗号语句中的逗号( (, ,) )运算运算逗号(逗号(,)运算常见的三种用途是:)运算常见的三种用途是:1.1.在变量说明表中用来分隔变量,起分隔符的作用。在变量说
72、明表中用来分隔变量,起分隔符的作用。 如:如:int iint i, , j j, , k k, , m3m3, , *p *p;2.2.在函数的参数表中分隔参数。在函数的参数表中分隔参数。 如:如:printf (n=%d, x=%dnprintf (n=%d, x=%dn, , n n, , x) x);3.3.在语句中使用。其形式是:在语句中使用。其形式是:表达式表达式n1n1,表达式表达式n2n2; 用逗号分隔开的表达式用逗号分隔开的表达式从左到右从左到右进行计算,结果的进行计算,结果的类型和值是类型和值是最右边最右边表达式的类型和值。表达式的类型和值。544-5-2 4-5-2 fo
73、rfor语句语句- -实例实例l例例C3_5205.CC3_5205.C:用逗号运算输出下列字符串。用逗号运算输出下列字符串。a a z z b b y y c c x x d d w w e e v f v f u u g g t t h h s s i i r r j j q q k k p p l l o o m m n n 分析分析:奇数位奇数位上的字符从上的字符从a a开始逐次开始逐次递增递增,偶数位偶数位上上的字符从的字符从z z开始逐次开始逐次递减递减 # #include include main ( )main ( ) char char i i, , j j; ; /* /
74、* i i: :奇位奇位字符字符 j:j:偶位偶位字符字符 */*/* /* i i从从aa开始逐次递增,开始逐次递增,j j从从z z开始逐次递减开始逐次递减 */ */ for for ( ( i i= =a a, j=, j=z z; ; iji=0 =0 的整数,要求以相反的的整数,要求以相反的顺序输出该数。例如:输入顺序输出该数。例如:输入1234512345,则输出为,则输出为5432154321。 基本思路基本思路:可以从个位开始,按位输出整数的每一位:可以从个位开始,按位输出整数的每一位 main( )main( ) unsigned int number; unsigned
75、int number; printf (Input the number:); printf (Input the number:); scanf (%d, &number); scanf (%d, &number);do do printf(%d, number%10); printf(%d, number%10); number/=10; number/=10; /* number/* number缩小缩小1010倍倍 */ */ whilewhile (number!=0); (number!=0); 例例例例C3_5301C3_5301C3_5301C3_5301 思考:使用思考:使用
76、whilewhile或或forfor语句,如何实现?语句,如何实现?例例例例C3_53011C3_53011C3_53011C3_53011两个程序有何区别?两个程序有何区别?前面的程序可以处理数字前面的程序可以处理数字0 0,后面的程序不能处理,后面的程序不能处理584-5-3 4-5-3 do-whiledo-while语句语句- -实例实例l例例C3_5302.C C3_5302.C 从键盘输入任意的字符,按下列规则进从键盘输入任意的字符,按下列规则进行分类计数。行分类计数。第一类第一类 0,1,2,3,4,5,6,7,8,90,1,2,3,4,5,6,7,8,9第二类第二类 +,-,*
77、,/,%,= +,-,*,/,%,=第三类第三类 其它字符其它字符当输入字符当输入字符时先计数然后停止接收输入。时先计数然后停止接收输入。594-5-3 4-5-3 do-whiledo-while语句语句- -实例实例 main( )main( ) int class1=0, class2=0, class3=0; char ch; int class1=0, class2=0, class3=0; char ch; do do putchar( ch=getch( ) ); putchar( ch=getch( ) ); /* /* 函数的嵌套调用函数的嵌套调用 */ */ switchs
78、witch (ch)(ch) casecase 0: 0: casecase 1: 1: casecase 2: 2: casecase 3:3: casecase 4: 4: case case 5: 5: casecase 6: 6: case case 7:7: casecase 8: 8: casecase 9: 9: class1+; break; /* class1+; break; /* 对分类对分类1 1计数计数 */ */ casecase +: +: case case -: -: casecase *: *: casecase /:/: case case %: %: c
79、asecase =: =: class2+; break; /* class2+; break; /* 对分类对分类2 2计数计数 */ */ defaultdefault: class3+; break;/* : class3+; break;/* 对分类对分类3 3计数计数 */ */ whilewhile (ch != ); (ch != ); printf(class1=%d, class2=%d, class3=%dn,printf(class1=%d, class2=%d, class3=%dn, class1, class2, class3); class1, class2, c
80、lass3); 例例例例C3_5302C3_5302C3_5302C3_5302604-5-4 4-5-4 循环语句小结循环语句小结lC C语言提供了三种循环语句:语言提供了三种循环语句:forfor、whilewhile、do-whiledo-while。特点如下:特点如下: 1 1、forfor和和whilewhile先先判断判断循环条件循环条件后执行后执行循环体,循环体,do-do-whilewhile语句语句先先执行执行循环体循环体后判断后判断循环条件。循环条件。 2 2、whilewhile和和do-whiledo-while语句的条件表达式只有一个,语句的条件表达式只有一个,for
81、for语句有语句有3 3个。个。 3 3、whilewhile、do-whiledo-while、forfor可以相互替换使用。可以相互替换使用。 4 4、whilewhile语句多用于不需要赋初值的或循环次数不语句多用于不需要赋初值的或循环次数不定的情况。定的情况。 forfor语句多用于要赋初值或循环次数固定的情况。语句多用于要赋初值或循环次数固定的情况。 do-whiledo-while语句多用于至少要运行一次的循环。语句多用于至少要运行一次的循环。 5 5、循环语句可以嵌套,可以并列,但不能交叉。、循环语句可以嵌套,可以并列,但不能交叉。614-5-4 4-5-4 循环语句小结循环语句
82、小结l为了保证循环体正常运行,应该特别注意:为了保证循环体正常运行,应该特别注意: 循环控制条件循环控制条件 控制条件的初始状态(初始值)控制条件的初始状态(初始值) 循环体内部对控制条件的影响循环体内部对控制条件的影响 以上三个方面相互配合,相互影响,共以上三个方面相互配合,相互影响,共同完成循环控制同完成循环控制624-6 4-6 转移语句转移语句l转移语句的作用转移语句的作用 改变程序的运行流程改变程序的运行流程。lC语言转移语句语言转移语句 break continue goto return634-6-1 break4-6-1 break语句语句l格式格式breakbreak;lbr
83、eakbreak语句的功能语句的功能 1. 1.在在switchswitch语句中结束语句中结束casecase子句,使控子句,使控制转到制转到switchswitch语句之外。语句之外。 2. 2.在在循环循环语句的循环体中使用,结束循语句的循环体中使用,结束循环过程,使控制转移到整个环过程,使控制转移到整个循环语句之外循环语句之外的的下一条语句处。下一条语句处。64表达式2?成立成立不成立不成立执行后续语句执行表达式3执行表达式14-6-1 break4-6-1 break语句语句lbreak语句的执行流程语句的执行流程表达式?成立成立不成立不成立执行后续语句breakbreak表达式?成
84、立成立不成立不成立执行后续语句breakwhile语句语句for语句语句do-while语句语句654-6-1 break4-6-1 break语句语句- -实例实例l例例C3_6101.CC3_6101.C:求求555555555555的约数中最大的三位数是多的约数中最大的三位数是多少?少? main( )main( )int j; long n;int j; long n; printf(Please input number:);printf(Please input number:); scanf(%ld, &n); scanf(%ld, &n); /* /*所求的约数的可能取值是从所
85、求的约数的可能取值是从999999到到100100,j j从大到小从大到小*/*/ forfor (j=999; j=100; j-) (j=999; j=100; j-) if if ( n%j( n%j=0 ) /* 0 ) /* 若能够整除若能够整除j j,则则j j是约数是约数 */ */ printf(”3 digits in %ld=%dn”, n, j );printf(”3 digits in %ld=%dn”, n, j ); breakbreak; /* ; /* 控制退出循环控制退出循环 */ */ 例例例例C3_6101C3_6101C3_6101C3_6101664-
86、6-1 break4-6-1 break语句语句- -实例实例lbreakbreak语句使用注意:语句使用注意: 1 1、在嵌套循环中,、在嵌套循环中,breakbreak语句仅能退出一层语句仅能退出一层( (当当前前) )循环。循环。 2 2、若在循环语句中包含了、若在循环语句中包含了switchswitch语句,那么语句,那么switchswitch语句中的语句中的 break break 语句仅能使控制退出语句仅能使控制退出switchswitch语句。语句。 3 3、break break 语句并不是程序设计中必不可少的语语句并不是程序设计中必不可少的语句,可以通过改变程序的结构去掉。
87、句,可以通过改变程序的结构去掉。674-6-2 continue4-6-2 continue语句语句lcontinue语句格式语句格式continuecontinue;lcontinuecontinue语句的功能语句的功能 continuecontinue语句仅能在循环语句中使用语句仅能在循环语句中使用. . 它的作用不是结束循环,而是开始一次新的循它的作用不是结束循环,而是开始一次新的循环。环。 对于对于forfor语句,将控制转到语句,将控制转到执行表达式执行表达式3 3和和条件条件测试测试部分;部分; 对于对于whilewhile和和do-whiledo-while语句,将控制转到语句,
88、将控制转到条件测条件测试试部分;部分; 从逻辑上讲,改变从逻辑上讲,改变ifif语句的条件表达式所表示语句的条件表达式所表示的条件,就可以不需要使用的条件,就可以不需要使用continuecontinue语句。语句。684-6-2 continue4-6-2 continue语句语句lcontinue语句的执行流程语句的执行流程表达式2?continue成立成立不成立不成立执行后续语句执行表达式3执行表达式1表达式?continue成立成立不成立不成立执行后续语句表达式?continue成立成立不成立不成立执行后续语句694-6-2 continue4-6-2 continue语句语句- -实
89、例实例l例例C3_6201.CC3_6201.C:输入输入1010个整数,求其中正数的个数及平均个整数,求其中正数的个数及平均值,精确到小数点后两位。值,精确到小数点后两位。 main ( )main ( ) int i, count=0, j, sum=0; int i, count=0, j, sum=0; for for ( i=1; i=10; i+) ( i=1; i=10; i+) printf (Input integer:); printf (Input integer:); scanf (%d, &j); scanf (%d, &j); ifif (j=0) (j0)a(a0
90、),公差为公差为d(d0)d(d0)。则则该数列满足条件:该数列满足条件: a+(a+d)+(a+2*d)+(a+3*d) = 4*a+6*d = 26a+(a+d)+(a+2*d)+(a+3*d) = 4*a+6*d = 26 a*(a+d)*(a+2*d)*(a+3*d) = 880 a*(a+d)*(a+2*d)*(a+3*d) = 880 则可以推出,首项则可以推出,首项a a和公差和公差d d的取值范围为:的取值范围为: 1 = 1 = a =5 1 = d =3a =5 1 = d =3 可以使用穷举的方法,在可以使用穷举的方法,在 首项首项a a 和和 公差公差d d 的取的取值
91、范围内进行判断。值范围内进行判断。724-6-3 4-6-3 gotogoto语句语句- -实例实例main( )main( ) int a, b, c, d, i; int a, b, c, d, i; forfor (a=1; a=5; +a) (a=1; a=5; +a) /* /* 在在a a的范围内穷举的范围内穷举 */ */ forfor (d=1; d=3; +d) (d=1; d=3; +d) /* /* 在在d d的范围内穷举的范围内穷举 */ */ b=a+(a+d)+(a+2*d)+(a+3*d); b=a+(a+d)+(a+2*d)+(a+3*d); /* /* 前四项
92、的和前四项的和 */ */ c=a*(a+d)*(a+2*d)*(a+3*d); c=a*(a+d)*(a+2*d)*(a+3*d); /* /* 前四项的积前四项的积 */ */ ifif (b=26 & c=880) (b=26 & c=880) /* /* 若满足条件若满足条件 */ */ gotogoto outout; ; /* /* 退出二重循环退出二重循环 */ */ out:out: for (i=0; i=20; +i) for (i=0; i=20; +i) /* /* 输出运行结果输出运行结果 */ */ printf(%d, a+i*d);printf(%d, a+i*
93、d); 734-6-3 4-6-3 gotogoto语句语句- -实例实例main( )main( ) int a, b, c, d, i, int a, b, c, d, i, flag=1flag=1; /* ; /* flagflag:标志变量:标志变量 * */ / forfor (a=1; a=5 & (a=1; a=5 & flagflag; +a) ; +a) /* flag!=0/* flag!=0是进行循环是进行循环 */ */ forfor (d=1; d=3 & (d=1; d=3 & flagflag; +d) ; +d) b=a+(a+d)+(a+2*d)+(a+3*
94、d); b=a+(a+d)+(a+2*d)+(a+3*d); /* /* 前四项的和前四项的和 */ */ c=a*(a+d)*(a+2*d)*(a+3*d); c=a*(a+d)*(a+2*d)*(a+3*d); /* /* 前四项的积前四项的积 */ */ ifif (b=26 & c=880) (b=26 & c=880) /* /* 若满足条件若满足条件 */ */ for (i=0; i=20; +i) for (i=0; i=20; +i) /* /* 输出结果输出结果 */ */ printf(%d, a0+i*d0);printf(%d, a0+i*d0); flagflag
95、= 0; = 0; /* /* 控制退出二重循环控制退出二重循环 */ */ 通过增加标志变量可以有效控制循环通过增加标志变量可以有效控制循环744-6-4 return4-6-4 return语句语句lretunrn语句格式语句格式格式一:格式一:returnreturn;格式二:格式二:return (return (表达式);表达式);lreturnreturn语句的功能语句的功能 1. 1.returnreturn语句使程序从被调用函数中返语句使程序从被调用函数中返回到调用函数的调用处继续运行。回到调用函数的调用处继续运行。 2. 2.如果如果returnreturn后跟一表达式,则该表达后跟一表达式,则该表达式的值会从被调用函数中带回到调用它的函式的值会从被调用函数中带回到调用它的函数,称为数,称为返回值返回值。75