程序流程控制语句ppt课件

上传人:博****1 文档编号:567619797 上传时间:2024-07-21 格式:PPT 页数:75 大小:1.36MB
返回 下载 相关 举报
程序流程控制语句ppt课件_第1页
第1页 / 共75页
程序流程控制语句ppt课件_第2页
第2页 / 共75页
程序流程控制语句ppt课件_第3页
第3页 / 共75页
程序流程控制语句ppt课件_第4页
第4页 / 共75页
程序流程控制语句ppt课件_第5页
第5页 / 共75页
点击查看更多>>
资源描述

《程序流程控制语句ppt课件》由会员分享,可在线阅读,更多相关《程序流程控制语句ppt课件(75页珍藏版)》请在金锄头文库上搜索。

1、第四章第四章 程序流程控制程序流程控制语句句 C C言语的根本语句言语的根本语句 上机调试程序的方法上机调试程序的方法 根本的程序设计方法根本的程序设计方法 输出简单图形输出简单图形 穷举法穷举法本本 章章 要要 点点第四章第四章 程序流程控制程序流程控制语句句第一第一节 C C言言语语句概述句概述第四章第四章第二第二节 注注释语句句第四章第四章第三第三节 复合复合语句句第四章第四章第四第四节 选择语句句第五章第五章第五第五节 循循环语句句第六章第六章第六第六节 转移移语句句第六章第六章第七第七节 简单运用运用综合合举例例4-1 C4-1 C言言语语句概述句概述l按照按照C言言语语句的作用分句

2、的作用分类:l阐明明语句句l注注释语句句l程序流程控制程序流程控制语句句声明声明变量称号、数据量称号、数据类型及型及其存其存储属性的属性的阐明性明性语句句编程者程者对程序本身的解程序本身的解释是是“可可执行的行的语句,构句,构成程序的主体成程序的主体4-1 C4-1 C言言语语句概述句概述- -语句分句分类选择语句句if - elseswitchforwhiledo - while循循环语句句转移移语句句breakcontinuegotoreturn标号号语句句表达式表达式语句句casedefault标标号号赋值表达式表达式+分号分号(;)4-1 C4-1 C言言语语句概述句概述- -语句分句

3、分类l按照按照C言言语语句的功能分句的功能分类:l控制控制语句句l 函数函数调用用语句句l 表达式表达式语句句l 空空语句句l 复合复合语句句控制程序的走向流程控制程序的走向流程由一个函数由一个函数调用加一个分号用加一个分号赋值表达式加分号表达式加分号只需一个分号只需一个分号 ;一一对 括起来的括起来的语句序列句序列4-1 C4-1 C言言语语句概述句概述- -简单实例例#include main( ) /* 简单程序程序实例例 */ int a=10,b=20,c; if (ba) c=a+b; printf(%dn,c); else ; 控控制制语语句句表达式语句表达式语句复合语句复合语句

4、函数调用语句函数调用语句空语句空语句阐明语句阐明语句注释语句注释语句C的的语语句以分号句以分号(;)终终了了4-2 4-2 注注释语句句l注注释语句格式句格式l以以“/*开开头、以、以“*/结尾的尾的阐明性文字明性文字l阐明明(注注释)信息可以是中文,也可以是信息可以是中文,也可以是英文英文l注注释语句的目的句的目的l备忘作用忘作用l添加程序的可添加程序的可读性,便于性,便于编程者和其它程者和其它程序程序阅读者了解程序者了解程序l注注释语句的运用方法句的运用方法l 可以注可以注释程序的功能、程序的功能、变量的含量的含义、函数函数间接口关系、接口关系、编程运用的算法和技程运用的算法和技巧等信息巧

5、等信息4-2 4-2 注注释语句句- -实例例l实例例l #include stdio.h #include stdio.hlmain( )main( )l printf(Hello !n); printf(Hello !n);l /* printf(Thanks !n); */ /* printf(Thanks !n); */l l合法的注合法的注释lx = y+5; /* x is integer number, xx = y+5; /* x is integer number, x是是整型整型 */ */lx = 10 + /* x = 10 + /* 合法的注合法的注释但不是好的注但不

6、是好的注释 */ 5;*/ 5;l不合法的注不合法的注释lswi/* swi/* 不能在不能在标识符中符中间插入注插入注释 */tch(c) */tch(c) .l/* this is an outer comment/* this is an outer commentl x = y/a; x = y/a;l /* /* 注注释不允不允许嵌套嵌套 */ */l */ */4-3 4-3 复合复合语句句l复合复合语句格式句格式l 用用 和和 括起来的假括起来的假设干合法的干合法的C语句。句。l复合复合语句的目的句的目的l语法上等价于法上等价于单一一语句。因此在言句。因此在言语中,中,凡是可以运

7、用凡是可以运用单一一语句的地方,均可运用句的地方,均可运用复合复合语句。句。l明确明确层次关系次关系l复合复合语句的运用方法句的运用方法l复合复合语句允句允许嵌套,且嵌套嵌套,且嵌套层次没有限制次没有限制l对于复合于复合语句,右花括号句,右花括号“的后面不的后面不用再跟一个分号;用再跟一个分号;4-3 4-3 复合复合语句句- -实例例l例例C3_3001.C: C3_3001.C: 判别输入整数的正负性和奇偶性。判别输入整数的正负性和奇偶性。l1.main( )1.main( )l2.2.int x;int x;l3. 3. printf(Enter a integer:); scanf(%

8、d,&x); printf(Enter a integer:); scanf(%d,&x); l4.4.if (x!=0)if (x!=0)l5. 5. /* /* 处置处置x x不等于不等于0 0的情的情况况 */ */l6. if (x0) /* 6. if (x0) /* 假设假设x x大于大于0 0成成立立 */ */l7. x = x%2; /* 7. x = x%2; /* 那么计算那么计算x x除以除以2 2的余的余数数 */ */l8. if (x=0) printf(8. if (x=0) printf(Is a plus even.n);Is a plus even.n);

9、l9. else printf(9. else printf(Is a plus odd Is a plus odd numbern);numbern);l10. 10. l11. else /* 11. else /* 否那么,处置否那么,处置x x为负数的情为负数的情况况 */ */l12. x = x%2; /* 12. x = x%2; /* 计算计算x x除以除以2 2的余数的余数 */*/l13. if (x=0) printf(13. if (x=0) printf(Is a minus even.n);Is a minus even.n);l14. else printf(14

10、. else printf(Is a minus odd Is a minus odd numbern);numbern);l15. 15. l16.16. l17.17.else printf (This integer is zero.n);else printf (This integer is zero.n);l18.18.4-4 4-4 选择语句句l提出提出问题l二重分支的条件二重分支的条件语句句 ifl多重分支的条件多重分支的条件语句句 switch根据学生分数判别能否及格?根据学生分数判别能否及格?根据学生分数如何进展分级?根据学生分数如何进展分级?如何处理如何处理?自然言自然言

11、语:假:假设 那么那么 否那么否那么C言言语: 分支分支语句句4-4-1 4-4-1 选择语句句-if-if语句句lif语语句格式句格式l 格式格式1:if (表达式表达式) 语语句;句;l 格式格式2:if (表达式表达式) 语语句句1;lelse 语语句句2;lif语语句的句的执执行流程行流程l流程流程1: 流程流程2:表达式表达式执行语句执行语句成立成立不成立不成立表达式表达式执行语句执行语句2执行语句执行语句1成立成立不成立不成立分支条件分支条件4-4-1 4-4-1 选择语句句-if-if语句句l 例例C3_4101.CC3_4101.C:求:求a a和和b b两数中两数中较大的一个

12、。大的一个。l#include #include lmain( ) /* main( ) /* 程序功能:求程序功能:求a a和和b b的最大的最大值 */ */l int a,b,max; int a,b,max;l printf(Input a and b=); printf(Input a and b=);l scanf(%d%d,&a, &b); /* input scanf(%d%d,&a, &b); /* input number a and b */number a and b */l if ( ab ) max=a; /* if ( ab ) max=a; /* 假假设abab

13、,那,那么将么将a=max */a=max */l else max=b; /* else max=b; /* 否那么,否那么, b=max */b=max */l printf(The max of a and b : %dn, printf(The max of a and b : %dn, max);max);l ab?max=bmax=a成立成立不成立不成立例例例例C3_4101C3_4101C3_4101C3_4101ifif语语句中句中进进展条件判展条件判别别的的“表达式必需用表达式必需用( ( ) )括起来且不可省略括起来且不可省略4-4-1 4-4-1 选择语句句-if-if语

14、句句l 例例C3_4101.CC3_4101.C:求:求a a和和b b两数中两数中较大的一个。大的一个。l#include #include lmain( ) /* main( ) /* 程序功能:求程序功能:求a a和和b b的最大的最大值 */ */l int a,b,max; int a,b,max;l printf(Input a and b=); printf(Input a and b=);l scanf(%d%d,&a, &b); scanf(%d%d,&a, &b);l max=a; max=a; l if ( maxb ) max=b; if ( maxb ) max=b;

15、l printf(The max of a and b : %dn, printf(The max of a and b : %dn, max);max);l 例例例例C3_41011C3_41011C3_41011C3_41011以上两个程序等价以上两个程序等价maxbmax=b成立成立不成立不成立4-4-1 4-4-1 选择语句句-if-if语句句l 例例C3_4102.CC3_4102.C:从:从键盘输入被除数入被除数a a和除数和除数b b,求商。求商。l main( ) main( )l int a,b; int a,b;l printf(Enter two numbers: );

16、printf(Enter two numbers: );l scanf(%d%d, &a, &b); scanf(%d%d, &a, &b);l if (b!=0) printf(%dn, a/b); if (b!=0) printf(%dn, a/b);l else printf(cannot divide by else printf(cannot divide by zero.n);zero.n);l b?printf .printf.非非 00if (b) printf(%dn, a/b);if (b) printf(%dn, a/b);else printf(else printf(

17、error.n);error.n);等价!等价!4-4-1 4-4-1 选择语句句-if-if语句句lifif语语句嵌套句嵌套义义:在:在ifif语语句的句的“语语句句1 1或或“语语句句2 2中又包含着中又包含着ifif语语句句l例例C3_4103.CC3_4103.C:比:比较较两个整数的之两个整数的之间间的关系的关系 大小大小/ /相等相等 。l #include #include lmain( )main( )l int x, y; int x, y;l printf (Enter integer X and Y:); printf (Enter integer X and Y:);l

18、 scanf (%d%d, &x, &y); scanf (%d%d, &x, &y);l if ( x != y ) if ( x != y )l if ( x y ) printf (XYn); if ( x y ) printf (XYn);l else printf (XYn); else printf (Xb)if(ab) /*1 */*1 */l if(ac) if(ac) /*2 */*2 */l if(ad) flag=1; if(ad) flag=1;/*3 */*3 */l else flag=2; else flag=2;/*4 */*4 */l else flag=3;

19、 else flag=3;/*5 */*5 */l 问题:第四行和第五行的:第四行和第五行的elseelse语句与哪一句与哪一个个ifif语句相匹配呢句相匹配呢? ?l 分析:匹配方案可以有很多种分析:匹配方案可以有很多种,(2-4,1-,(2-4,1-5),(3-4,2-5),(1-4,)5),(3-4,2-5),(1-4,)l匹配匹配规那么:在嵌套的那么:在嵌套的if-elseif-else语句中,句中,elseelse子句子句总是与上面的、离它最近的、且在同一是与上面的、离它最近的、且在同一复合复合语句中句中还没有配没有配对的的ifif子子语配配对。4-4-1 4-4-1 选择语句句-i

20、f-if语句句1 1、if (ab)if (ab)if (ac)if (ac) if (ad) flag=1; if (ad) flag=1; else flag=2; else flag=2;else flag=3;else flag=3;程序含程序含义:当:当 c=ab c=ab 时,flag=3flag=32 2、if (ab)if (ab) if (ac) if (ac) if (ad) flag=1; if (ad) flag=1; else flag=2; else flag=2; /* /* 以上是一个完好的复合以上是一个完好的复合语句句 */ */else flag=3;els

21、e flag=3;程序含程序含义:当:当 a=b a=b 时,flag=3 flag=3 4-4-1 4-4-1 选择语句句-if-if语句句3 3、if (a=b)if (a=b) if (b=c) printf(a=b=cn); if (b=c) printf(a=b=cn); else printf( else printf(a!=bna!=bn); ); 虽然然书写格式如此,真写格式如此,真实的正确的含的正确的含义是:是: if (a=b) if (a=b) if (b=c) printf(a=b=cn); if (b=c) printf(a=b=cn); else printf(a!

22、=bn else printf(a!=bn); ); 经过加加 ,可以改,可以改动配配对关系:关系: if (a=b) if (a=b) if (b=c) printf(a=b=cn); if (b=c) printf(a=b=cn); else printf( else printf(a!=bna!=bn); ); 4-4-1 4-4-1 选择语句句-if-if语句句l例例C3_4104.CC3_4104.C:知:知银行整存整取存款月息利率行整存整取存款月息利率分分别为:l 一年期:一年期:0.63% 0.63% 二年期:二年期:0.66%0.66%l 三年期:三年期:0.69% 0.69%

23、 五年期:五年期:0.75%0.75%l 八年期:八年期:0.84% 0.84% 其它:其它:0 0l 要求要求输入存入存钱的本金和期限,求到期的本金和期限,求到期时利利息与本金合息与本金合计。银行到期利息行到期利息计算公式:算公式:l利息本金利息本金月息利率月息利率1212存款年限存款年限l 程序中程序中该当根据存款的年限确定利率当根据存款的年限确定利率4-4-1 4-4-1 选择语句句-if-if语句句 #include #include main( )main( ) int year; int year; float money,rate,total; /* float money,ra

24、te,total; /* 本金,月利率,本利合本金,月利率,本利合计*/*/ printf(Input money and year =?); printf(Input money and year =?); scanf(%f%d, &money, &year); /* scanf(%f%d, &money, &year); /* 输入本金和年限入本金和年限 */ */ if ( year = 1 ) rate=0.0063; /* if ( year = 1 ) rate=0.0063; /* 根据年限定利率根据年限定利率 */ */ else if ( year = 2 ) rate=0.

25、0066; else if ( year = 2 ) rate=0.0066; else if ( year = 3 ) rate=0.0069; else if ( year = 3 ) rate=0.0069; else if ( year = 5 ) rate=0.0075; else if ( year = 5 ) rate=0.0075; else if ( year = 8 ) rate=0.0084; else if ( year = 8 ) rate=0.0084; else rate=0.0; else rate=0.0; total = money + money * ra

26、te *12 * year; total = money + money * rate *12 * year; printf( Total = %.2fn, total); printf( Total = %.2fn, total); 4-4-1 4-4-1 选择语句句-if-if语句句l采用采用if-else ifif-else if构造改写。构造改写。l #include #include lmain( )main( )l int year; int year;l float money,rate,total; /* float money,rate,total; /* 本金,月利率,本本

27、金,月利率,本利合利合计*/*/l printf(Input money and year =?); printf(Input money and year =?);l scanf(%f%d, &money, &year); /* scanf(%f%d, &money, &year); /* 输入本金和入本金和年限年限 */ */l if ( year = 1 ) rate=0.0063; /* if ( year = 1 ) rate=0.0063; /* 根据年限定根据年限定利率利率 */ */l else if ( year = 2 ) rate=0.0066; else if ( ye

28、ar = 2 ) rate=0.0066;l else if ( year = 3 ) rate=0.0069; else if ( year = 3 ) rate=0.0069;l else if ( year = 5 ) rate=0.0075; else if ( year = 5 ) rate=0.0075;l else if ( year = 8 ) rate=0.0084; else if ( year = 8 ) rate=0.0084;l else rate=0.0; else rate=0.0;l total = money + money * rate *12 * year

29、; total = money + money * rate *12 * year;l printf( Total = %.2fn, total); printf( Total = %.2fn, total);l 4-4-1 4-4-1 选择语句句-if-if语句句l例例C3_4105.CC3_4105.C:经过键盘输入字符,将入字符,将输入的字符分入的字符分为控控制、数字、大写字母、小写字母和其他字符等五制、数字、大写字母、小写字母和其他字符等五类。lASCIIASCII码表中的前表中的前3232个字符个字符为控制字符,控制字符,0099为数数字字, A, AZZ为大写字母大写字母, a,

30、azz为小写字母,其它。小写字母,其它。l #include #include lmain ( )main ( )l char c; char c;l printf (Enter a character:); printf (Enter a character:);l c=getch( ); c=getch( );l if (c0x20) printf (nIs a control if (c=0 & c=0 & c=A & c=A & c=a & c=a & c=z )l printf (nIs a lower printf (nIs a lower character.n);charact

31、er.n);l else printf (nIs a other character.n); else printf (nIs a other character.n);l 例例例例C3_4105C3_4105C3_4105C3_41054-4-1 4-4-1 选择语句句-if-if语句句lif语语句与条件运算的关系句与条件运算的关系l例:求一个数的例:求一个数的绝对值绝对值if ( y0 ) x=-y;elsex=y;(y0) ? x=-y : x=y;等价等价等等价价x = (y0) ? y : y;阐明:明:if else可以完成与可以完成与条件运算符条件运算符( ? : )完全一完全一

32、样的的义务,并且可以,并且可以进展相展相应的的转换。4-4-1 4-4-1 选择语句句-if-if语句句lifif语语句与条件运算的区句与条件运算的区别别:条件运算符方式比:条件运算符方式比较简单较简单,有有较较强强的灵敏性,可以替代部分的灵敏性,可以替代部分ifif语语句。句。l例:例:if ( cans=1 )if ( cans=1 )l printf( printf(You need 1 can of paint.You need 1 can of paint.););l else else printf( printf(You need 2 cans of paint. You nee

33、d 2 cans of paint. ););l 转换转换:(cans=1)? printf(cans=1)? printf(You need 1 can of You need 1 can of paint.paint.) ) : printf( : printf(You need 2 You need 2 cans of paint.cans of paint.););l 转换转换:printf(cans=1? printf(cans=1? You need 1 can of You need 1 can of paint.paint.l : : You need 2 You need 2

34、 cans of paint.cans of paint.););l 转换转换:printf (printf (You need %d %s of paint.You need %d %s of paint., , cans , cans=1 ? cans , cans=1 ? cancan : : canscans ); );l可以在函数中方便地运用条件运算可以在函数中方便地运用条件运算4-4-2 4-4-2 选择语句句-switch-switch语句句lswitch语语句格式句格式l switch (表达表达式式)llcase 常量常量1:l 语语句句序列序列1l break; lcase

35、 常量常量2:l 语语句序列句序列2l break;l l default: l 语语句句序列序列n+1 l执行语句序列1=常量常量1?计算表达式的值计算表达式的值相等相等不相等不相等break执行语句序列2=常量常量2?相等相等不相等不相等break执行语句序列n+1有有default?有有没有没有4-4-2 4-4-2 选择语句句-switch-switch语句句switch (number) case 1: statement 1;break;case 2: statement 2;break;case 3: statement 3;break;default: statement 4;

36、statement 5;当当number的的值为2时4-4-2 4-4-2 选择语句句-switch-switch语句句lswitch语语句运用本卷句运用本卷须须知知l1.switch语语句与句与if语语句不同,句不同,仅仅能判能判别别一种一种关系:能否恒等。关系:能否恒等。l2.switch语语句中句中case子句的常量可以是整型子句的常量可以是整型常量、字符型常量、枚常量、字符型常量、枚举举型数据,或是整型常型数据,或是整型常量表达式,不允量表达式,不允许许是是变变量。量。l3.在同一个在同一个switch中,中,case子句的常量不能子句的常量不能一一样样;在嵌套的;在嵌套的switch

37、语语句中,不同句中,不同层层次的次的switch之之间间,可有一,可有一样样的常量。的常量。l4.default子句可以省略。子句可以省略。l5.case 和和 default 子句只能在子句只能在switch语语句中句中运用,且运用,且 case和和 default 只起只起标标号作用,可出号作用,可出如今如今switch中的任何位置。中的任何位置。l6.case 和和 default 子句后面的子句后面的语语句序列允句序列允许许由多个可由多个可执执行行语语句句组组成,且不用用成,且不用用“ 括括起来,也可以起来,也可以为为空空语语句。句。l7.switch语语句中可省略句中可省略break

38、语语句,但省略句,但省略后会改后会改动动流程。流程。4-4-2 4-4-2 选择语句句-switch-switch语句句l例例C3_4104.CC3_4104.C:计算存款本利。采用算存款本利。采用switchswitch改写。改写。l #include #include lmain( )main( )lint year;int year;l float money,rate,total; /* float money,rate,total; /* 本金,月利率,本利本金,月利率,本利合合计*/*/l printf(Input money and year =?); printf(Input

39、money and year =?);l scanf(%f%d, &money, &year); /* scanf(%f%d, &money, &year); /* 输入本金和年入本金和年限限 */ */l switch ( year ) /* switch ( year ) /*根据年限定利根据年限定利率率*/*/l case 1: case 1: rate=0.0063; break;rate=0.0063; break;l case 2:case 2:rate=0.0066; break;rate=0.0066; break;l case 3: case 3:rate=0.0069; b

40、reak;rate=0.0069; break;l case 5:case 5:rate=0.0075; break;rate=0.0075; break;l case 8:case 8:rate=0.0084; break;rate=0.0084; break;l default:default:rate=0;rate=0;l l total = money + money * rate *12 * year; total = money + money * rate *12 * year;l printf( Total = %.2fn, total); printf( Total = %.

41、2fn, total);l 4-4-2 4-4-2 选择语句句-switch-switch语句句l例例C3_4203.CC3_4203.C:输入入yearyear年份和月年份和月monthmonth,求,求该月天数。月天数。l如何判如何判别闰年?年?l 闰年:可以被年:可以被4 4整除且不能被整除且不能被100100整除的年份整除的年份l 或或 可以被可以被400400整除的年份整除的年份l 例如:例如:19961996年、年、19801980年是年是闰年年l 1970 1970年、年、19001900年是平年年是平年l 2000 2000年是年是闰年年l判判别闰年的年的C C言言语公式公式l

42、year%4=0 & year%100!=0 | year%400=0year%4=0 & year%100!=0 | year%400=0l 当当year=1996year=1996时,结果果为1 1l 当当year=1997year=1997时,结果果为0 0l 当当year=1900year=1900时,结果果为0 0l 当当year=2000year=2000时,结果果为1 1 假设为闰年:结果为假设为闰年:结果为1假设为平年:结果为假设为平年:结果为04-4-2 4-4-2 选择语句句-switch-switch语句句 main( ) main( ) int year, month,

43、 days; int year, month, days; scanf(%d%d, &year, &month); scanf(%d%d, &year, &month); switch (month) switch (month) case 1: case 3: case 5: case 7: case 1: case 3: case 5: case 7: case 8: case 10: case 12: /* case 8: case 10: case 12: /* 处置置“大月大月 */ */ days=31; break; days=31; break; case 4: case 6:

44、 case 9: case 11: /* case 4: case 6: case 9: case 11: /* 处置置“小月小月 */ */ days=30; break; days=30; break; case 2: /* case 2: /* 处置置“平月平月 */ */ if ( year%4=0 & year%100!=0 | year%400=0 ) if ( year%4=0 & year%100!=0 | year%400=0 ) days=29; /* days=29; /* 假假设是是闰年年 */ */ else else days=28; /* days=28; /*

45、不是不是闰年年 */ */ break; break; default: /* default: /* 月份月份错误 */ */ printf(Input error!n); printf(Input error!n); days=0; days=0; if (days!=0) printf( if (days!=0) printf(%d,%d is %ddaysn,year,month,days);%d,%d is %ddaysn,year,month,days); 省略省略case子句之后的语句子句之后的语句4-4-2 4-4-2 选择语句句-switch-switch语句句l省略省略br

46、eakbreak语句句l 例如:某程序段中,例如:某程序段中,errorerror是是进展出展出错处置的函数。置的函数。l flag=-1; /* error marker flag=-1; /* error marker */*/lswitch (i)switch (i)l case 1: case 2: case 3: case 1: case 2: case 3:l flag=0; /* no error */flag=0; /* no error */l break;break;l case 4: case 4: flag=1; /* error #1 */flag=1; /* err

47、or #1 */l case 5: case 5: error(flag); /* error process error(flag); /* error process */*/l break;break;l default: default: flag=2; /* other error */flag=2; /* other error */l /* /* 假定函数假定函数errorerror是出是出错处置函数置函数 */ */l当当 i=1 i=1,2 2,3 3 时:flag=0flag=0;退出。;退出。l当当 i=5 i=5 时:flag = -1flag = -1;调用用eror

48、r(flag)erorr(flag);退出。;退出。l当当 i=4 i=4 时:flag = 1flag = 1;调用用 error(flag) error(flag);退出。;退出。4-4-2 4-4-2 选择语句句-switch-switch语句句l例例C3_4202.CC3_4202.C:请编写一个程序写一个程序计算表达式:算表达式:data1 op data2data1 op data2的的值。l main ( ) main ( )l float data1, data2;char op;float data1, data2;char op; /* /* 定定义操作数、操作符操作数、操

49、作符变量量 */ */lprintf(Enter your expression:);printf(Enter your expression:);lscanf (scanf (%f%c%f%f%c%f, &data1, &op, &data2); /* , &data1, &op, &data2); /* 输入表入表达式达式 */ */lswitch ( op ) switch ( op ) /* /* 根据操作符分根据操作符分别进展展处置置 */ */l case + : case + : /* /* 处置置加法加法 */ */l printf(%.2f+%.2f=%.2fn, data1

50、, data2, printf(%.2f+%.2f=%.2fn, data1, data2, data1+data2);break;data1+data2);break;l case - : case - : /* /* 处置置减法减法 */ */lprintf (%.2f-%.2f=%.2fn, data1, data2, data1-printf (%.2f-%.2f=%.2fn, data1, data2, data1-data2);break;data2);break;l case * : case * : /* /* 处置乘法置乘法 */ */lprintf (%.2f*%.2f=%

51、.2fn, data1, data2, printf (%.2f*%.2f=%.2fn, data1, data2, data1*data2);break;data1*data2);break;l case / : case / : /* /* 处置除法置除法 */ */lif ( data2=0 )if ( data2=0 ) /* /* 假假设除除数数为 */ */l printf (Division by zero.n); printf (Division by zero.n);lelseelsel printf (%.2f/%.2f=%.2fn, data1, data2, print

52、f (%.2f/%.2f=%.2fn, data1, data2, data1/data2);data1/data2);l break; break;l default: default: /* /* 输入其它运入其它运算符算符 */ */l printf (Unknown operater.n);printf (Unknown operater.n);l l 例例例例C3_4202C3_4202C3_4202C3_42024-5 4-5 循循环语句句l提出提出问题提提问:从:从键盘上上输入入10个整数并求和,怎个整数并求和,怎样编程?程?回答:在程序中写入回答:在程序中写入10个个scanf

53、( )语句。句。提提问:从:从键盘上上输入入500个整数并求和,怎个整数并求和,怎样编程?程?回答:回答:这个,个,嗯? 不会不会让我写我写500个个.教教师:让我我们换一个角度来一个角度来对待待这些些问题, 以上以上问题的本的本质是:将是:将scanf函数反复函数反复执行行N遍。遍。学生:学生:对!好象是!好象是这么回事么回事.教教师:我:我们可以引出一个概念可以引出一个概念“循循环,简单而言:循而言:循环就是不断反复地就是不断反复地执行同一段程序。行同一段程序。学生:学生:这就是我就是我们今天要学的新今天要学的新东西?西?4-5 4-5 循循环语句句l循循环l 反复反复执行同一段程序,直到

54、行同一段程序,直到满足足一定的条件后才停一定的条件后才停顿执行行该段程序。段程序。lC言言语中控制循中控制循环的的语句:句:l whilel forl do-while4-5-1 while4-5-1 while语句句lwhile语语句格式句格式lwhile ( 表达式表达式 ) 语语句;句;l阐阐明:明:语语句部分可以是句部分可以是简单语简单语句,也可句,也可以是复合以是复合语语句。句。lwhile语语句的句的执执行流程行流程表达式表达式?执行语句成立成立不成立不成立执行while循环之后的语句循环控制条件循环控制条件循环体循环体4-5-1 while4-5-1 while语句句- -实例例

55、l例例C3_5101.C C3_5101.C 从从键盘输入入1010个整数,求个整数,求这1010个整数个整数的和。的和。l #include #include lmain ( )main ( )l int count,num,total; int count,num,total;l /* count: /* count:计数器,数器,num:num:输入的整数入的整数 */ */l count=0; total=0; /* total: count=0; total=0; /* total:存放累加存放累加和和 */ */l while ( count10 ) /* while ( coun

56、t10 ) /* 循循环控制条控制条件件 */ */l count +; /* count +; /* 循循环体体 */ */l printf (Enter the No.%d=, count); printf (Enter the No.%d=, count);l scanf (%d, &num); scanf (%d, &num);l total += num; /* total += num; /* 计算累加算累加和和 */ */l l printf(Total=%dn, total); printf(Total=%dn, total);l 例例例例C3_5101C3_5101C3_51

57、01C3_51014-5-1 while4-5-1 while语句句- -实例例l例:分析程序的运例:分析程序的运转结果果l #include lmain ( )l int n=0;lwhile ( n3 )lprintf (n is %dn,n);ln+;lprintf(Thats all this program does.n);ll结果:程序将不停的打印果:程序将不停的打印“n is 0,直至,直至终止程序止程序l无法正常无法正常终止的程序,称止的程序,称为“死循死循环。l结论:while语句循句循环体中,一定要有可以体中,一定要有可以对循循环控控制条件制条件产生影响的生影响的语句。防止

58、出句。防止出现“死循死循环景象。景象。例例例例C3_51011C3_51011C3_51011C3_510114-5-1 while4-5-1 while语句句- -实例例l例例1:分析以下程序段:分析以下程序段l index=1;lwhile ( index 5 )lprintf(Good morning!n);l分析:分析:l 程序段将无限制打印字符串。程序段将无限制打印字符串。l 由于循由于循环中没有任何中没有任何语句可以改句可以改动循循环控制控制变量量index的初的初值1。4-5-1 while4-5-1 while语句句- -实例例l例例2 2:分析以下程序段:分析以下程序段l i

59、ndex=1; index=1;lwhile( - index 5 )while( - index 5 )lprintf(printf(Good morning!nGood morning!n););l分析:分析:l 仍有仍有问题,程序改,程序改动了了indexindex,但方向,但方向错了。了。l 在在indexindex到达系到达系统可以可以处置的最大置的最大负数数时,将会将会产生下溢而生下溢而终止程序。止程序。l结论:l 循循环体中必需有可以使循体中必需有可以使循环正常停正常停顿的条件。的条件。4-5-1 while4-5-1 while语句句- -实例例l例例C3_5103.CC3_5

60、103.C:从:从键盘中中读入一系列字符,直到入一系列字符,直到输入字入字母母a a时才停才停顿。l分析:由于不知道要分析:由于不知道要输入的字符数量,只知停入的字符数量,只知停顿条条件是件是输入字母入字母a a,那么只能将循,那么只能将循环控制条件控制条件设为ch!=ach!=a。l #include #include lmain( )main( )l char ch= ; char ch= ;l while ( ch!=a) while ( ch!=a)l putchar( ch = getch( ) ) putchar( ch = getch( ) );l 例例例例C3_5103C3_5

61、103C3_5103C3_5103 改写:改写: #include #include main( )main( ) char ch; char ch; while ( (ch = getch( ) !=a ) while ( (ch = getch( ) !=a ) ; 例例例例C3_51031C3_51031C3_51031C3_51031循环体为空语句循环体为空语句4-5-1 while4-5-1 while语句句- -实例例l例例C3_5104.CC3_5104.C:对输入的行和字符入的行和字符进展展计数。数。l分析:分析:nn作作为行行终了了标志的,志的,DOSDOS中有中有CTRL+

62、ZCTRL+Z作作为文件文件终了了标志志l #define EOF -1 #define EOF -1l#include #include lmain ( )main ( )l int c,nl=0,nc=0; int c,nl=0,nc=0; lwhile ( ( c = getchar( ) ) != EOF )while ( ( c = getchar( ) ) != EOF )l + nc; + nc;l if ( c = n ) if ( c = n )l + nl; + nl; l lprintf(chars=%d, lines=%dn, nc, printf(chars=%d,

63、lines=%dn, nc, nl);nl);l 例例例例C3_5104C3_5104C3_5104C3_5104 定定义文件文件终了了标志志 nl nl行行计数器数器ncnc字符字符计数器数器 进展字符展字符计数数 假假设找到找到nn,那么行,那么行计数数4-5-1 while4-5-1 while语句句- -实例例l例例3 3:求:求1 1到到100100的之和。的之和。l main ( ) main ( )l int total=0, i=1; int total=0, i=1; l while ( i = 100 ) while ( i = 100 )l total = total +

64、 i;total = total + i;l i +;i +;l l printf( printf(Total=%dn, total);Total=%dn, total);l 例例例例C3_51041C3_51041C3_51041C3_51041 变形形1 1:while ( i = 100 )while ( i total+=i; +i= total+=i; +i 变形形2 2:int i=0;int i=0; while ( +i = 100 ) while ( +i +i; = +i; 判判别i=100i=100 total += i; total += i; 变形形3 3:int i

65、=0;int i=0; while ( i+ 100 ) while ( i+ = 判判别i100i100;i+i+ total += i; total += i; 变形形4 4:int i=0;int i=0; while ( i 100 ) while ( i +i; total+=i= +i; total+=i4-5-1 while4-5-1 while语句句- -实例例l循循环嵌套嵌套l 在循在循环体中,又包含有循体中,又包含有循环语句,构成循句,构成循环嵌套。嵌套。l例例C3_5107.C:输出下三角形乘法九九表。出下三角形乘法九九表。l 1 2 3 4 5 6 7 8 9l-l 1

66、l 2 4l 3 6 9l 4 8 12 16l 5 10 15 20 25l 6 12 18 24 30 36l 7 14 21 28 35 42 49l 8 16 24 32 40 48 56 64l 9 18 27 36 45 54 63 72 81l 假假设:行号:行号为i ,列号,列号为ji=6i=6j=5j=5i*ji*j(1=i=9)(1=i=9)(1=j=i)(1=j=i) 那么:第那么:第 i i 行中一共要行中一共要输出出 i i 个乘个乘积4-5-1 while4-5-1 while语句句- -实例例 #include #include main ( )main ( )

67、int i=1, j; /* i: int i=1, j; /* i:行行计数器数器 j: j:列列计数器数器 */ */ while ( i = 9 ) /* while ( i = 9 ) /* 控制打印表控制打印表头 */ */ printf ( %4d, i+ ); printf ( %4d, i+ ); printf (n-n); printf (n-n); i=1; i=1; while ( i= 9 ) while ( i= 9 ) j = 1; /* j = 1; /* 列列计数器置数器置1 */1 */ while ( j = i ) /* while ( j 1 n1 时l

68、 #include #include lmain ( )main ( )l long int n=1; long int n=1;l int i; int i;l for ( i = 1; i =10; i+ ) for ( i = 1; i =10; i+ )l n = n * i; /* n = n * i; /* 求求N! N! */*/lprintf ( %2d!=%ldn, i, n);printf ( %2d!=%ldn, i, n);l l 例例例例C3_5203C3_5203C3_5203C3_5203lforfor语语句最常用的方式句最常用的方式lfor for 初初值值;控

69、制条件;增量;控制条件;增量 语语句;句;4-5-2 for4-5-2 for语句句- -实例例l例例C3_5202.CC3_5202.C:用:用forfor语句句实现打印乘法九九表。打印乘法九九表。l #include #include lmain ( )main ( )l int i, j; int i, j;lfor ( i=1; i10; i+ )for ( i=1; i10; i+ )l printf (%4d,i); /* printf (%4d,i); /* 打印表打印表头 */ */l printf (n- printf (n-n);-n);lfor ( i=1; i10; i

70、+ ) /* for ( i=1; i10; i+ ) /* 控制打印控制打印表体表体 */ */l for ( j=1; j=i; j+ ) for ( j=1; j=3n=3l为求出第求出第N N项的的值,请编写程序。写程序。l 根据根据递推通推通项公式,可用公式,可用递推法推法编写程序,写程序,计算第算第N N项的的值。l递推法:由初始的知条件开推法:由初始的知条件开场,先,先计算出第算出第(N(N1)1)步步的的结果,再利用前面知的果,再利用前面知的(N(N1)1)项结果,按照果,按照递推公推公式或遵照式或遵照递推推规那么,推出第那么,推出第N N步步结果。果。l递推法是程序推法是程序

71、设计中最常用的方法之一,运用中最常用的方法之一,运用递推法必需有明确的推法必需有明确的递推初始推初始值和和递推推规那么那么递推公推公式。式。4-5-2 for4-5-2 for语句句- -实例例l例例C3_5204.CC3_5204.C程序程序l#include #include lmain( )main( )l int n,i,un1,un2,un; int n,i,un1,un2,un;l for ( ; ; ) for ( ; ; )l printf (Input n=?); scanf (%d,&n); printf (Input n=?); scanf (%d,&n);l if (

72、n = 3 ) if ( n = 3 )l break; /* break; /* 退出退出forfor循循环 */ */l else printf (nInput n is error !n); else printf (nInput n is error !n);l /* /* 控制控制输入正确的入正确的N N值 */ */l un = un2 = 1; /* un = un2 = 1; /* 设置置递推初推初始始值 */ */l for ( i=3; i=n; i+) /* for ( i=3; i=n; i+) /* 用用递推法推法计算第算第N N项的的值 */ */l un1 = u

73、n2; un2 = un; un = un1 + un2; un1 = un2; un2 = un; un = un1 + un2;l l printf (No. %d is %dn, n, un); printf (No. %d is %dn, n, un);l 例例例例C3_5204C3_5204C3_5204C3_52044-5-2 for4-5-2 for语句句- -实例例l语句中的逗号句中的逗号(,)(,)运算运算l逗号,运算常逗号,运算常见的三种用途是:的三种用途是:l1.1.在在变量量阐明表中用来分隔明表中用来分隔变量,起分隔符的作用。量,起分隔符的作用。l 如:如:lint i

74、, j, k, m3, *pint i, j, k, m3, *p;l2.2.在函数的参数表中分隔参数。在函数的参数表中分隔参数。l 如:如:lprintf (n=%d, x=%dn, n, x)printf (n=%d, x=%dn, n, x);l3.3.在在语句中运用。其方式是:句中运用。其方式是:l表达式表达式n1n1,表达式,表达式n2n2;l 用逗号分隔开的表达式从左到右用逗号分隔开的表达式从左到右进展展计算,算,结果果的的类型和型和值是最右是最右边表达式的表达式的类型和型和值。4-5-2 for4-5-2 for语句句- -实例例l例例C3_5205.CC3_5205.C:用逗号

75、运算:用逗号运算输出以下字符串。出以下字符串。la z b y c x d w e v f u g t h s i r j q k p l o a z b y c x d w e v f u g t h s i r j q k p l o m nm nl 分析:奇数位上的字符从分析:奇数位上的字符从aa开开场逐次逐次递增,偶数位上增,偶数位上的字符从的字符从zz开开场逐次逐次递减减l #include #include lmain ( )main ( )l char i, j; char i, j; /* i: /* i:奇位字符奇位字符 j: j:偶位字符偶位字符 */ */l/* i/*

76、i从从aa开开场逐次逐次递增,增,j j从从zz开开场逐次逐次递减减 */ */l for ( i=a, j=z; ij; i+, j- ) for ( i=a, j=z; i=0 =0 的整数,要求以相反的的整数,要求以相反的顺序序输出出该数。例如:数。例如:输入入1234512345,那么,那么输出出为5432154321。l 根本思根本思绪:可以从个位开:可以从个位开场,按位,按位输出整数的每一出整数的每一位位l main( ) main( )l unsigned int number; unsigned int number;l printf (Input the number:);

77、printf (Input the number:);l scanf (%d, &number); scanf (%d, &number);ldo do l printf(%d, number%10); printf(%d, number%10);l number/=10; /* number number/=10; /* number减少减少1010倍倍 */ */l while (number!=0); while (number!=0);l 例例例例C3_5301C3_5301C3_5301C3_5301 思索:运用思索:运用whilewhile或或forfor语句,如何句,如何实现?例

78、例例例C3_53011C3_53011C3_53011C3_53011两个程序有何区两个程序有何区别?前面的程序可以前面的程序可以处置数字置数字0 0,后面的程序不能,后面的程序不能处置置4-5-3 do-while4-5-3 do-while语句句- -实例例l例例C3_5302.C C3_5302.C 从从键盘输入恣意的字符,按以下入恣意的字符,按以下规那么那么进展分展分类计数。数。l第一第一类 0,1,2,3,4,5,6,7,8,9 0,1,2,3,4,5,6,7,8,9l第二第二类 +,-,*,/,%,= +,-,*,/,%,=l第三第三类 其它字符其它字符l当当输入字符入字符时先先计

79、数然后停数然后停顿接接纳输入。入。4-5-3 do-while4-5-3 do-while语句句- -实例例 main( ) main( ) int class1=0, class2=0, class3=0; char ch; int class1=0, class2=0, class3=0; char ch; do putchar( ch=getch( ) ); /* do putchar( ch=getch( ) ); /* 函数的嵌套函数的嵌套调用用 */*/ switch (ch) switch (ch) case 0: case 1: case 2: case case 0: cas

80、e 1: case 2: case 3:3: case 4: case 5: case 6: case case 4: case 5: case 6: case 7:7: case 8: case 9: case 8: case 9: class1+; break; /* class1+; break; /* 对分分类1 1计数数 */*/ case +: case -: case *: case case +: case -: case *: case /:/: case %: case =: case %: case =: class2+; break; /* class2+; break

81、; /* 对分分类2 2计数数 */*/ default: class3+; break;/* default: class3+; break;/* 对分分类3 3计数数 */*/ while (ch != ); while (ch != ); printf(class1=%d, class2=%d, class3=%dn, printf(class1=%d, class2=%d, class3=%dn, class1, class2, class3); class1, class2, class3); 例例例例C3_5302C3_5302C3_5302C3_53024-5-4 4-5-4 循

82、循环语句小句小结lC C言言语语提供了三种循提供了三种循环语环语句:句:forfor、whilewhile、do-whiledo-while。特点如下:特点如下:l 1 1、forfor和和whilewhile先判先判别别循循环环条件后条件后执执行循行循环环体,体,do-whiledo-while语语句先句先执执行循行循环环体后判体后判别别循循环环条件。条件。l 2 2、whilewhile和和do-whiledo-while语语句的条件表达式只需一句的条件表达式只需一个,个,forfor语语句有句有3 3个。个。l 3 3、whilewhile、do-whiledo-while、forfor

83、可以相互交可以相互交换换运用。运用。l 4 4、whilewhile语语句多用于不需求句多用于不需求赋赋初初值值的或循的或循环环次次数不定的情况。数不定的情况。l for for语语句多用于要句多用于要赋赋初初值值或循或循环环次数固定的情次数固定的情况。况。l do-while do-while语语句多用于至少要运句多用于至少要运转转一次的循一次的循环环。l 5 5、循、循环语环语句可以嵌套,可以并列,但不能交叉。句可以嵌套,可以并列,但不能交叉。4-5-4 4-5-4 循循环语句小句小结l为了保了保证循循环体正常运体正常运转,应该特特别留意:留意:l 循循环控制条件控制条件l 控制条件的初始

84、形状初始控制条件的初始形状初始值l 循循环体内部体内部对控制条件的影响控制条件的影响l 以上三个方面相互配合,相互影响,以上三个方面相互配合,相互影响,共同完成循共同完成循环控制控制4-6 4-6 转移移语句句l转移移语句的作用句的作用l 改改动程序的运程序的运转流程。流程。lC言言语转移移语句句l breakl continuel gotol return4-6-1 break4-6-1 break语句句l格式格式lbreak;lbreak语句的功能句的功能l 1.在在switch语句中句中终了了case子句,使控制子句,使控制转到到switch语句之外。句之外。l 2.在循在循环语句的循句

85、的循环体中运用,体中运用,终了循了循环过程,使控制程,使控制转移到整个循移到整个循环语句之外的下句之外的下一条一条语句句处。表达式2?成立成立不成立不成立执行后续语句执行表达式3执行表达式14-6-1 break4-6-1 break语句句lbreak语句的句的执行流程行流程表达式?成立成立不成立不成立执行后续语句breakbreak表达式?成立成立不成立不成立执行后续语句breakwhile语语句句for语语句句do-while语语句句4-6-1 break4-6-1 break语句句- -实例例l例例C3_6101.CC3_6101.C:求:求555555555555的的约数中最大的三位数

86、是多数中最大的三位数是多少?少?l main( ) main( )lint j; long n;int j; long n;l printf(Please input number:); printf(Please input number:);l scanf(%ld, &n); scanf(%ld, &n);l /* /*所求的所求的约数的能数的能够取取值是从是从999999到到100100,j j从大到小从大到小*/*/l for (j=999; j=100; j-) for (j=999; j=100; j-)l if ( n%j=0 ) /* if ( n%j=0 ) /* 假假设可以

87、整除可以整除j j,那么,那么j j是是约数数 */ */l printf( printf(3 digits in %ld=%dn3 digits in %ld=%dn, n, , n, j );j );l break; /* break; /* 控制退控制退出循出循环 */ */l l 例例例例C3_6101C3_6101C3_6101C3_61014-6-1 break4-6-1 break语句句- -实例例lbreakbreak语语句运用留意:句运用留意:l 1 1、在嵌套循、在嵌套循环环中,中,breakbreak语语句句仅仅能退能退出一出一层层( (当前当前) )循循环环。l 2 2

88、、假、假设设在循在循环语环语句中包含了句中包含了switchswitch语语句,那么句,那么switchswitch语语句中的句中的 break break 语语句句仅仅能使能使控制退出控制退出switchswitch语语句。句。l 3 3、break break 语语句并不是程序句并不是程序设计设计中必不中必不可少的可少的语语句,可以句,可以经过经过改改动动程序的构造去掉。程序的构造去掉。4-6-2 continue4-6-2 continue语句句lcontinue语语句格式句格式lcontinue;lcontinue语语句的功能句的功能l continue语语句句仅仅能在循能在循环语环语

89、句中运用句中运用.l 它的作用不是它的作用不是终终了循了循环环,而是开,而是开场场一次新一次新的循的循环环。l 对对于于for语语句,将控制句,将控制转转到到执执行表达式行表达式3和条件和条件测试测试部分;部分;l 对对于于while和和do-while语语句,将控制句,将控制转转到到条件条件测试测试部分;部分;l 从从逻辑逻辑上上讲讲,改,改动动if语语句的条件表达式所句的条件表达式所表示的条件,就可以不需求运用表示的条件,就可以不需求运用continue语语句。句。4-6-2 continue4-6-2 continue语句句lcontinue语句的句的执行流程行流程表达式2?contin

90、ue成立成立不成立不成立执行后续语句执行表达式3执行表达式1表达式?continue成立成立不成立不成立执行后续语句表达式?continue成立成立不成立不成立执行后续语句4-6-2 continue4-6-2 continue语句句- -实例例l例例C3_6201.CC3_6201.C:输入入1010个整数,求其中正数的个数及平均个整数,求其中正数的个数及平均值,准确到小数点后两位。,准确到小数点后两位。l main ( ) main ( )l int i, count=0, j, sum=0; int i, count=0, j, sum=0;l for ( i=1; i=10; i+)

91、for ( i=1; i=10; i+)l printf (Input integer:); printf (Input integer:);l scanf (%d, &j); scanf (%d, &j);l if (j=0) if (j0)a(a0),公差,公差为d(d0)d(d0)。那么那么该数列数列满足条件:足条件:l a+(a+d)+(a+2*d)+(a+3*d) = 4*a+6*d = 26 a+(a+d)+(a+2*d)+(a+3*d) = 4*a+6*d = 26l a*(a+d)*(a+2*d)*(a+3*d) = 880 a*(a+d)*(a+2*d)*(a+3*d) =

92、880l 那么可以推出,首那么可以推出,首项a a和公差和公差d d的取的取值范范围为:l 1 = a =5 1 = d =3 1 = a =5 1 = d =3l 可以运用可以运用穷举的方法,在的方法,在 首首项a a 和和 公差公差d d 的的取取值范范围内内进展判展判别。4-6-3 goto4-6-3 goto语句句- -实例例main( )main( ) int a, b, c, d, i; int a, b, c, d, i; for (a=1; a=5; +a) /* for (a=1; a=5; +a) /* 在在a a的范的范围围内内穷举穷举 */ */ for (d=1; d

93、=3; +d) /* for (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); /* 前四前四项项的和的和 */ */ c=a*(a+d)*(a+2*d)*(a+3*d); /* c=a*(a+d)*(a+2*d)*(a+3*d); /* 前四前四项项的的积积 */ */ if (b=26 & c=880) /* if (b=26 & c=880) /* 假假设满设满足条件足条件 */*/ goto out; /* goto out; /* 退出二

94、重循退出二重循环环 */ */ out: for (i=0; i=20; +i) /* out: for (i=0; i=20; +i) /* 输输出运出运转结转结果果 */ */ printf(%d, a+i*d); printf(%d, a+i*d); 4-6-3 goto4-6-3 goto语句句- -实例例main( )main( ) int a, b, c, d, i, flag=1; /* flag int a, b, c, d, i, flag=1; /* flag:标标志志变变量量 */ */ for (a=1; a=5 & flag; +a) /* flag!=0 for (

95、a=1; a=5 & flag; +a) /* flag!=0是是进进展循展循环环 */ */ for (d=1; d=3 & flag; +d) for (d=1; d=3 & flag; +d) b=a+(a+d)+(a+2*d)+(a+3*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); /* 前四前四项项的的积积 */ */ if (b=26 & c=880) /* if (b=26 & c=880) /* 假假设满

96、设满足条件足条件 */ */ for (i=0; i=20; +i) /* for (i=0; i=20; +i) /* 输输出出结结果果 */ */ printf(%d, a0+i*d0); printf(%d, a0+i*d0); flag = 0; /* flag = 0; /* 控制退出二重循控制退出二重循环环 */ */ 经过添加添加标志志变量可以有效控制循量可以有效控制循环4-6-4 return4-6-4 return语句句lretunrn语语句格式句格式l格式一:格式一:return;l格式二:格式二:return (表达式表达式 ;lreturn语语句的功能句的功能l 1.return语语句使程序从被句使程序从被调调用函数中用函数中前往到前往到调调用函数的用函数的调调用途用途继续继续运运转转。l 2.假假设设return后跟一表达式,那么后跟一表达式,那么该该表达式的表达式的值值会从被会从被调调用函数中用函数中带带回到回到调调用它的函数,称用它的函数,称为为前往前往值值。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号