【C語言基礎07】while語句的定義、使用、功能、例子、注意事項

1.while語句


while語句用來構成當型循環,多用於解決循環次數事先不確定的問題。形式:

    while(表達式)

        {

            循環體

        }

功能:先判斷表達式值的真假,若爲真(非零)時,就執行循環體;否則,退出循環結構。

結構:

① 從何處來  ② 到何處去  ③ 如何修改循環變量  ④ 在條件滿足情況下做什麼事情;

循環的初始值+循環條件+循環體+循環變量的增量+具有唯一真值的表達式

流程:如圖所示

注意:

  • while語句中的表達式一般是關係表達式或邏輯表達,也可以是數值表達式或字符表達式,只要其值爲真(非0)即可繼續執行循環體

  • 循環體語句可以爲任意類型,循環體如果包含一個以上的語句,應該用花括號起來,以複合語句的形式出現。如果不用花括號,則while語句的範圍只到while後面第一個分號處。

  • 在循環體中應該有使循環趨向於結束的語句,以避免死循環

  • 允許while語句的循環體中包含另一個while語句,從而形成循環的嵌套

例1:輸入一行字符,按字母、數字、和其他分成三類,分別統計各類字符的數目('\n’)不在統計範圍內。

3個整型變量,爲其統計各自數目的計算器

int a,   //字母

int b,   //數字

int c    //其它

算法分析:

    ① 將各位計數器變量值置爲0;

    ② 讀入字符

    ③ 檢查c是否換行符,如果不是,則檢查c符合哪種字符條件,並將相應計數器變量的值加1,然後轉步驟③循環;如果c是換行符,則結束循環,轉爲步驟⑤

    ④ 輸出結果

#include "stdio.h"
main()
{
	printf("請輸入一行字符:\n");
	char c; 
	int a=0,b=0,d=0;
	while((c=getchar())!='\n')
	{
		if(c>='a'&&c<='z'||c>'A'&&c<'Z')
		{
			a++;
		}
		else
		{
			if(c>='0'&&c<='9')
			{
				b++;
			}
			else
			{
				d++;
			}
		}
	}
	printf("字母有:%d\n",a); 
	printf("數字有:%d\n",b);
	printf("符號有:%d\n",d);
	return 0;
}

 例2:輸入一正文,統計正文包含的行數、字數、字符數

算法分析:

(1)將標誌位state置爲初值0,表示字符不在子字,各計數器變量均爲0;

(2)讀一個字符c,如果不是EOF,則進行:

    ① 字符數+1;

    ② 若c是行數則行數+1;

    ③ 若c是空格符、換行符、製表符,則將標誌置爲0,表示c字符不在字中;若c爲非空白符,如果標誌位爲0(表示c是字符的第一個字符)則將字數+1,並修改標誌位爲1(表示當前字符c是一個字中的字符)

    ④ 循環步驟2

    ⑤ 如果c是EOF,則循環結束,轉步驟3

(3)輸出結果

#include "stdio.h"
#define IN 1
#define OUT 0
main()
{
	int c,nl,nw,nc,state;   //nc:字符數   nl:行數  //nw:字數 
	state=OUT;
	nl=nw=nc=0;
	printf("請輸入內容並以ctrl+z爲結束:\n");
	while((c=getchar())!=EOF)   //不等於-1,即爲真
	{
		++nc;
		if(c=='\n')
		{
			++nl;
		}
		if(c=='\t'||c==' '||c=='\n')
		{
			state=OUT;
		}
		else
		{
			if(state==OUT)
			{
				state=IN;
				++nw;
			}
		}
	} 
	printf("字符數:%d\n",nc);
	printf("行  數:%d\n",nl);
	printf("字  數:%d\n",nw);
	return 0; 
}

 

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