C语言程序设计谭浩强版 八

来源:互联网 发布:奇葩男士网络剧 编辑:程序博客网 时间:2024/06/05 14:51


6.1  循环控制概述


循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某

程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为

循环体。C语言提供了多种循环语句,可以组成各种不同形式的循环结构。

1) 、用goto语句和if语句构成循环;

2) 、用while语句;

3) 、用do-while语句;

4) 、用for语句;


6.2  goto语句以及用goto语句构成循环


goto语句是一种无条件转移语句,其一般形式为:goto 语句标号;

语句标号用标识符表示,它的定名规则与变量名相同,即由字母,数字和下划线组成,

其第一个字符必须是字母或者下划线,不能用整数来做标号。

goto语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时, 用

goto语句则比较合理。

例6.1  用goto语句和if语句构成循环,


#include<stdio.h>int main(void){    int i,sum = 0;    i = 1;    loop:    if(i <= 100)    {sum = sum + i;i ++;goto loop;    }    printf("%d\n",sum);}


6.3  while语句


while语句的一般形式为:while(表达式)语句

其中表达式是循环条件,语句为循环体。

while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。


例6.2  用while语句求


#include<stdio.h>int main(void){    int i,sum = 0;    i = 1;    while(i <= 100)    {sum = sum + i;i++;    }    printf("%d\n",sum);}


使用while语句应注意以下几点:

1)、while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的

         值为真(非0)即可继续循环。

2)、循环体如包括有一个以上的语句,则必须用{}括起来,组成复合语句。


例6.3  统计从键盘输入一行字符的个数。


#include<stdio.h>int main(void){    int n = 0;    printf("input a string:\n");    while(getchar() != '\n')    {n++;    }    printf("%d\n",n);}


使用while语句应注意以下几点:

1)、while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的

         值为真(非0)即可继续循环。

2)、循环体如包括有一个以上的语句,则必须用{}括起来,组成复合语句。




6.4  do-while语句


do-while语句的一般形式为:

do

   语句

while(表达式);

与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真,

如果为真则继续循环;如果为假, 则终止循环。因此, do-while循环至少要执

行一次循环语句。

例6.5  用do-while语句求


#include<stdio.h>int main(void){    int i,sum = 0;    i = 1;    do    {sum = sum + i;i ++;    }    while(i <= 100);    printf("%d\n",sum);}



6.5  for语句


在C语言中,for语句使用最为灵活,它完全可以取代 while 语句。

它的一般形式为:for(表达式1;表达式2;表达式3) 语句

for语句最简单的应用形式也是最容易理解的形式如下:

for(循环变量赋初值;循环条件;循环变量增量) 语句

例如: for(i=1; i<=100; i++)

         {

             sum=sum+i;

          }


6.6  循环的嵌套


例6.7  循环的嵌套


#include<stdio.h>int main(void){int i,j,k;for(i = 0;i < 2;i++)  for(j = 0;j < 2;j++)    for(k = 0;k < 2;k++)printf("%d %d %d\n",i,j,k);}


6.7  几种循环的比较


1) 、四种循环都可以用来处理同一个问题,一般可以互相代替。

        但一般不提倡用goto型循环。

2)、 while和do-while循环,循环体中应包括使循环趋于结束的语句。

        for语句功能最强。

3) 、用while和do-while循环时,循环变量初始化的操作应在while和

       do-while语句之前完成,而for语句可以在表达式1中实现循环变

       量的初始化。


6.8 break和continue语句



6.8.1  break语句


break语句可以使流程跳出switch结构,继续执行switch语句下面的一个语句,

实际上,break语句还可以用来从循环体内跳出循环体。


例6.8

#include<stdio.h>int main(void){int i = 0;char c;while(1){c = '\0';while(c!=13 && c!=27){c = getchar();printf("%c\n",c);}if(c == 27)break;i++;printf("The No. is %d\n",i);}printf("The end");}


6.8.2  continue 语句


continue其作用为结束本次循环,即跳出循环体中下面尚未执行的语句,接着

进行下一次是否执行循环的判定。

continue语句和break语句的区别是:

continue语句只结束本次循环,而不是终止整个循环的执行

break语句是结束整个循环过程,不再判断执行循环的条件是否成立。

例6.9


#include<stdio.h>int main(void){char c = '\0';while(c!=13){c = getchar();if(c == 0x1B)continue;printf("%c\n",c);}}





0 0