目錄
hello,everyone! forever之前給大家介紹了c語言的分支結構和迴圈結構,在分支中介紹了分支語句巢狀,但當時沒有介紹 switch 巢狀,所以這次主要介紹 switch 巢狀和迴圈巢狀.
首先來說說什麼是巢狀吧!乙個語句內包含另乙個完整的語句結構稱為語句巢狀。內巢狀的語句結構內還可以繼續巢狀其他語句結構,這就構成多層巢狀。如:在迴圈體內巢狀乙個完整的迴圈語句,就稱為迴圈巢狀;在內部迴圈巢狀裡在巢狀乙個迴圈結構,就是多層迴圈。巢狀的含義是指「完整的包含」。
如同 if 語句一樣,switch 語句也可以構成巢狀結構。在 switch-case 內部再巢狀乙個 switch-case 語句,就構成 switch 巢狀結構;若內部的內部再繼續巢狀就會構成多層巢狀。
以下是 switch 巢狀結構,default 可以看情況使用,不使用時就相當於不處理。一般用 default 時,在後面就可以不加 break。
switch (表示式1)
break;
case 常量表示式2:語句2;
switch (表示式n)
break;
case 常量表示式3:語句3;
break;
……default:語句n;
}例題一:簡單的理解 switch 語句巢狀結構
*簡單的switch巢狀程式*
#include
int main()
break; //結束 case1 內部的巢狀語句
case 2:printf("###\n");
break;
case 3:printf("@@@\n");
default:printf("!!!\n");
} return 0;
}執行結果:
例題二:switch 和 if 的結合使用。請輸入星期幾的第乙個字母來判斷是星期幾,如果第乙個字母一樣則繼續判斷第二個字母。
*請輸入星期幾的第乙個字母來判斷是星期幾,如果第乙個字母一樣則繼續判斷第二個字母。*
#include
#include//這是toupper 函式呼叫標頭檔案
int main()
else if (letter2 == 'h')
else
break;
case 's':printf("請輸入第二個字母:(a/u)\n");
sc程式設計客棧anf("%c", &letter2);
if (letter2 =程式設計客棧= 'a')
else if (letter2 == 'u')
else
break;
default:printf("error\n");
} return 0;
}執行結果:查詢星期二
迴圈結構的迴圈語句可以是任意合法的 c 語句。若乙個迴圈結構的迴圈體中包含了另一迴圈語句,則構成了迴圈的巢狀,稱為多重迴圈。巢狀的含義是指「完整的的包含」,那麼迴圈的巢狀是指在乙個迴圈的迴圈體內完整的包含另乙個或另外幾個迴圈結構。c 語言中三種迴圈控制語句可以相互巢狀在一起。
(1)語法結構:
while (表示式1)
……}(2)while 迴圈巢狀程式示例
示例一:利用 while 迴圈巢狀列印九九乘法表
//列印九九乘法表
#include
int main()
printf("\n");//起到換列的作用
i++;
} return 0;
}執行結果:九九乘法表列印
(1)語法結構
dowhile ();//一定要注意do-while語句後面的「分號」,不能丟
……} while ();
(2)do-while 迴圈巢狀示例
隨機列印2-n+1個數字
#include//隨機列印 2-n+1 個數
int main()
while (i <= n);
} while(i<=n);
return 0;
}執行結果:
(1)語法結構
for ( ; ; )
……}(2)for 迴圈巢狀示例
示例一:數字金字塔
//利用 for 迴圈巢狀實現數字金字塔
#inclmaxqdxukude//數字金字塔
int main()
for (j = 1; j <= i; j++)
printf("\n");//實現換行
} return 0;
}執行結果:輸入5,進行金字塔排列
示例二:氣泡排序法
for 迴圈實現從小到大氣泡排序
程式設計客棧
//利用 for 迴圈巢狀實現從小到大氣泡排序
#include//氣泡排序
int main()
; int temp = 0;
scanf("%d", &n);
for (i = 0; i < n; i++)//利用迴圈給陣列賦值
for (i = 0; i < n - 1; i++)//氣泡排序外層迴圈進行 n-1 輪排序![請新增描述](
}} for (i = 0; i < n; i++)
return 0;
}執行結果:隨機輸入5個數進行排序
示例三:列印 100-200 之間的素數
for 迴圈巢狀列印100-200間素數
//列印100-200間素數
#include//列印100-200間素數
int main()
} if (i == j)
}return 0;
}執行結果:
1、在迴圈以及迴圈巢狀中依然會常用到 break 和 continue ,之前文章詳細介紹過這兩個語句,因此要注意他們的使用;
2、再多層巢狀裡一般也會用到 goto 跳轉語句,終止程式在某些結構中的深度巢狀;
3、除以上基本巢狀之外,while、do-while、for以及和其他分支語句都可以任意巢狀組合使用,而且 c 語言中不限制巢狀的層數,我們可以合理組織程式的模組結構;
4、在編寫程式時,盡量避免過多的巢狀,影響**整體美觀,巢狀過多也對硬體相關配置要求更高。
目前就這些!這些**都比較簡單,淺顯易懂,希望對一些初學者有一定幫助,也望其他大佬能多多指點!如有不足或錯誤之處,請諒解並指教哈!
謝謝觀www.cppcns.com看,再見啦!
以上**均可執行,所用編譯環境為 vs2019 ,執行時注意加上編譯標頭檔案#define _crt_secure_no_warnings 1
C語言 分支語言和迴圈語句
分支語句 if switch 迴圈語句 while for do while if語句 if語句的結構 if 表示式 語句 if 表示式 語句1 else 表示式 語句2 多分支 if 表示式1 語句1 else if 表示式2 語句2 else 語句3 注意 如果表示式的結果為真 則語句1執行,否...
C語言的一些奇技淫巧(1)巢狀語句
2.list for each safe 原始碼例子 參考此句中,i 3 是乙個語句,後面 是乙個復合語句 這句無論j 1 怎麼變,都是最後一句 true 為真。所以真正的還是前面i 3 成立即可 list for each safe iterate over a list safe against...
C語言 迴圈的巢狀
1 for語句中嵌入for語句 for 2 for語句嵌入while語句 for 3 for語句中嵌入do while語句 for while 4 while語句中嵌入for語句 while 5 while語句中嵌入while語句 while 6 while語句中嵌入do while語句 while...