第5章 循环结构程序设计 5.1循环语句概述 5.2for语句和while语包 5.3直到型循环do-whilei语句 5.4 break语句与continue语包 5.5应用举例 良好的源程序书写习惯一注释(续) Return
第5章 循环结构程序设计 5.1 循环语句概述 5.2 for语句和while语句 5.3 直到型循环do-while语句 5.4 break语句与continue语句 5.5 应用举例 良好的源程序书写习惯──注释(续) [Return]
5.1 循环语句概述 求1~100的累计和。 根据已有的知识,可以用“1+2+.+100”来求解,但显然很繁琐。 现在换个思路来考虑: 首先设置一个累计器sum,其初值为0,利用sum+=n来计算(n依 次取1、2、. .、100),只要解决以下3个问题即可: (1)将n的初值置为l; (2)每执行1次“sum+=n”后,n增1; (3)当n增到101时,停止计算。此时,sum的值就是1~100的累计 和。 根据已有的知识,单独实现每一步都不难。但是,由于需要经常使 用这种重复计算结构(称为循环结构),C语言提供了3条循环语句来 实现,以简化、并规范循环结构程序设计。 在C语言中,可用以下语句实现循环: (1)用for语句。 (2)用do-while语句。 (3)用while语句
5.1 循环语句概述 求1~100的累计和。 根据已有的知识,可以用“1+2+.+100”来求解,但显然很繁琐。 现在换个思路来考虑: 首先设置一个累计器sum,其初值为0,利用sum += n来计算(n依 次取1、2、.、100),只要解决以下3个问题即可: (1)将n的初值置为1; (2)每执行1次“sum += n”后,n增1; (3)当n增到101时,停止计算。此时,sum的值就是1~100的累计 和。 根据已有的知识,单独实现每一步都不难。但是,由于需要经常使 用这种重复计算结构(称为循环结构),C语言提供了3条循环语句来 实现,以简化、并规范循环结构程序设计。 在C语言中,可用以下语句实现循环: (1)用for语句。 (2)用do-while语句。 (3)用while语句
(4)用goto语句和if语句构成循环。使用goto语句实现求解1~100累计和 的程序可以如下: mainO) int n=1,sum=0; loop:sum +=n;n++; if(n<=100)goto loop; printf(“sum=%dn”,sum; 其中“1oop:”为语句标号(格式:标号:语句行),其命名遵循标识 符命名规则。goto语句格式:goto标号,功能为:使系统转向标号所在 的语句行执行。 注意:结构化程序设计方法,主张限制使用goo语句。因为滥用 goto语句,将会导致程序结构无规律、可读性差。 另外,从功能上说,for语句可完全代替当型循环语句while,所以 该语句也不是必需的。 Return]
(4)用goto语句和if语句构成循环。使用goto语句实现求解1~100累计和 的程序可以如下: main() { int n=1, sum=0; loop: sum += n; n++; if (n<=100) goto loop; printf(“sum=%d\n”, sum); } 其中“loop:”为语句标号(格式:标号: 语句行),其命名遵循标识 符命名规则。goto语句格式:goto 标号,功能为:使系统转向标号所在 的语句行执行。 注意:结构化程序设计方法,主张限制使用goto语句。因为滥用 goto语句,将会导致程序结构无规律、可读性差。 另外,从功能上说,for语句可完全代替当型循环语句while,所以 该语句也不是必需的。 [Return]
5.2 for语句和while语句 在3条循环语句中,fo语句最为灵活,不仅可用于循 环次数已经确定的情况,也可用于循环次数虽不确定、 但给出了循环继续条件的情况。 「案例5.11求1~100的累计和。 /*案例代码文件名:AL51.C*/ /*程序功能:求1~100的累计和*/ mainO) int i,sum-0; /*将累加器sum初始化为0*/ for(i=1;i<=100;i++)Sum+=主;/*实现累加*/ printf("sum-%d n",sum); 「程序演示 程序运行情况如下: sum=5050
5.2 for语句和while语句 在3条循环语句中,for语句最为灵活,不仅可用于循 环次数已经确定的情况,也可用于循环次数虽不确定、 但给出了循环继续条件的情况。 [案例5.1] 求1~100的累计和。 /*案例代码文件名:AL5_1.C*/ /*程序功能:求1~100的累计和*/ main() { int i,sum=0; /*将累加器sum初始化为0*/ for(i=1; i<=100; i++) sum += i; /*实现累加*/ printf("sum=%d\n",sum); } [程序演示] 程序运行情况如下: sum=5050
[案例5.21求n的阶乘nl(nl=1*2*.*n)。 /*案例代码文件名:AL52.C*/ /*程序功能:求n!*/ main() int i,n; long fact=1; /*将累乘器fact初始化为1* printf("Input n:")scanf(%d",&n); for(i=1;i<=n;i++)fact *=i; /*实现累乘*/ printf("%d !=%ld n",n,fact); [程序演示] 程序运行情况如下: Input n:5 5!=120
[案例5.2] 求n的阶乘n!(n!=1*2*.*n)。 /*案例代码文件名:AL5_2.C*/ /*程序功能:求n!*/ main() { int i, n; long fact=1; /*将累乘器fact初始化为1*/ printf(“Input n: ”); scanf(“%d”, &n); for(i=1; i<=n; i++) fact *= i; /*实现累乘*/ printf("%d ! = %ld\n", n, fact); } [程序演示] 程序运行情况如下: Input n: 5↙ 5 ! = 120