分支語句和迴圈語句

floarbai發表於2020-11-07

if語句

//語法結構:
if(表示式)
    語句;
if(表示式)
    語句1;
else
    語句2;
//多分支    
if(表示式1)
    語句1;
else if(表示式2)
    語句2;
else
    語句3;

簡單if語句運用

#include<stdio.h>
int main()
{
	int age;
	printf("請輸入年齡: ");
	scanf("%d", &age);
	if (age < 18)
	{
		printf("未成年\n");
	}
	else{
		printf("成年\n");
	}
	return 0;
}

在這裡插入圖片描述
例如:還有輸出1-100之間的奇數,用if語句完成的。

switch語句

比如:
輸入1,輸出星期一
輸入2,輸出星期二
輸入3,輸出星期三
輸入4,輸出星期四
輸入5,輸出星期五
輸入6,輸出星期六
輸入7,輸出星期七

#include <stdio.h>
int main()
{
    int day = 0;
    switch(day)
   {
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;    
        case 4:
            printf("星期四\n");
            break;    
        case 5:
            printf("星期五\n");
            break;
        case 6:
            printf("星期六\n");
            break;
        case 7:
            printf("星期天\n");    
            }
            return 0}

在這裡插入圖片描述
在switch語句中,我們沒法直接實現分支,搭配break使用才能實現真正的分支

#include <stdio.h>
int main()
{
	int n = 1;
	int m = 2;
	switch (n)
	{
	case 1:
		m++;
	case 2:
		n++;
	case 3:
		switch (n)
		{//switch允許巢狀使用
		case 1:
			n++;
		case 2:
			m++;
			n++;
			break;
		}
	case 4:
		m++;
		break;
	default:
		break;
	}
	printf("m = %d, n = %d\n", m, n);
return 0;
}

在這裡插入圖片描述

default子句

如果表達的值與所有的case標籤的值都不匹配怎麼辦?
其實也沒什麼,結構就是所有的語句都被跳過而已。
程式並不會終止,也不會報錯,因為這種情況在C中並不認為適合錯誤。
但是,如果你並不想忽略不匹配所有標籤的表示式的值時該怎麼辦呢?
你可以在語句列表中增加一條default子句,把下面的標籤
default:
寫在任何一個case標籤可以出現的位置。
當 switch表示式的值並不匹配所有case標籤的值時,這個default子句後面的語句就會執行。
所以,每個switch語句中只能出現一條default子句。
但是它可以出現在語句列表的任何位置,而且語句流會像貫穿一個case標籤一樣貫穿default子句

while語句

break和continue的不同
#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
			break;
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}

在這裡插入圖片描述

#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		i = i+1;
		if (i == 5)
			continue;
		printf("%d ", i);
	}
	return 0;
}

在這裡插入圖片描述
在用了break和continue後發現輸出結果完全不同,continue是用於終止本次迴圈的,也就是本次迴圈中continue後邊的程式碼不會再執行,而是直接跳轉到while語句的判斷部分。進行下一次迴圈的入口判斷。

相關文章