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





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章