C語言循環語句和條件語句

循環大體分爲三種

在開始之前我需要解釋的是 do while for都是C 語言標準定義的 32 個關鍵字之一
他們不是函數

1.while循環
2. do while循環
3.for循環
需要注意的一點是,不管在那種循環性,我們都要注意的一個點是,條件變量的作用域範圍,比如我們把for循環的變量i的初始化放在了for循環的外面,當然這樣可以在循環執行完畢後繼續使用i的值,但是如果我們有多層循環時,i如果是內層循環的條件變量,初始化放在for循環外面會導致第二次執行該for循環時,倒置i無法復位,從而使第二次for循環的執行失敗
首先解釋while循環,先解釋下while的結構
while(x )
{…}
首先要知道循環的條件是真,在C語言中,真的表示是除0意外的所有值都代表爲真
比如bool型的true或者1,2,3,-1,-2,-3等。
同時需要注意的是的while()中的x不僅僅代表一個數的值,它也可以是一個表達式
比如while(true==x)
另外要注意的是在while()的循環中,它的循環體可以有花括號將循環體括起來執行,循環體的所有語句。也可以不帶花括號,這時while只循環while()後面的第一條語句。
比如

int n=3;
while(n)
printf("%d\n",n--);

上面的程序答案時3 2 1。
printf("%d\n",n–);這條語句在執行循環時,會對n進行自減功能
注意while(1){}這是死循環的表達方式的一種
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
接下來解釋for循環
在瞭解for循環時要先了解逗號運算符,逗號運算符的執行順序是從左到右的,優先級別最低
如int a=(200,300)
這是a的值是300;
int x=(y=3,(z=++y+3));
這是x=7

然後需要注意的是for循環的兩個分號中間的內容
for(初始值;條件;值操作)
如果for( ; ; ){ …}分號中內容不填,那麼它就變爲了一個死循環

for(int i=1,printf("he\n");i<10;i++)
{}
for(printf("he\n"),int i=1;i<10;i++)
{}

上面兩種寫法都是無法通過編譯的,因爲我們我們在第一個分號前面使用了逗號運算符,這是兩邊的初始化語句和輸出語句是無法用逗號表達式來共存的。
所以我們必須在這種情況下將i的初始化放在for循環外面

int i = 1;
	for ( printf("he\n"); i<10; i++)
	{	}

下面我展示兩個關於while循環和for循環的函數,用於計算輸入電腦的數的總和

void main()
{
	int val;
	int sum=0 ;
	while (scanf("%d", &val))
	{
		sum = sum + val;
	}
	printf("%d\n", sum);
}

void main()
{
	int val;
	int sum = 0;
	for (; scanf("%d", &val);)
	{
		sum = sum + val;
	}
	printf("%d\n", sum);
}

關於scanf函數返回值的用法,在本篇文章的末尾有一些解釋

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

下面解釋do while()循環
我們在需要循環體至少需要先執行一次時,就使用do while循環,在實際的操作中,很少使用do while循環
它的格式爲

do
{
	printf("hellow word\n");
}while(1);

除此以外,他和while的操作基本相同

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
接下來解釋兩個關鍵字
break和continue
break的作用是跳出循環,終止整個循環,他還用在switch語句中,與case關鍵字搭配使用。
而continue關鍵字的作用是跳出本次循環,也就是說如果有一個循環,他需要進行10次,如果我們手動在第5次循環時加入continue,那麼這個循環就會跳過第五次這個循環的執行,接着繼續從第六次開始循環

int i=1;
while(i<10)
{
	if(5==i)
	{	
		continue;
	}
	printf("%d\n",i);
	i+=1;
}

上面程序的答案是1 2 3 4
因爲在i=5時,通過continue跳出本次循環,那麼i也就沒有進行i+=1;這條語句,所以i的值在接下來的循環中,永遠都會被if語句給判斷跳出本次循環,所以程序在使用時,計算機會一值循環執行,但是隻顯示1 2 3 4這四個結果。
但是如果我們使用for循環來進行這樣的操作如

int i = 1;
	for (; i < 10; i++)
	{
		if (5 == i)
		{
			continue;
		}
		printf("%d\n", i);
	}

它的結果就是1 2 3 4 6 7 8 9
因爲在for循環中i+=1;操作是在循環的末尾單獨執行的,這是i的值不會因爲continue的跳出,而造成循環無法繼續下去

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