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



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);
	}
}






猜你喜欢

转载自blog.csdn.net/thebestleo/article/details/52082450