C語言自學攻略-條件控制與迴圈控制

更新於 發佈於 閱讀時間約 11 分鐘

條件控制

if-else

功能:根據條件的真假,執行不同的程式碼塊。

範例:

#include <stdio.h>

int main() {
int x = 10;

if (x > 5) {
printf("x 大於 5\n");
} else if (x == 5) {
printf("x 等於 5\n");
} else {
printf("x 小於 5\n");
}

return 0;
}
  • 上面的程式碼中,if會先進行(x > 5)的判斷,如果False,會進行後續的else if判斷,並且else用來捕捉剩餘的例外情況。

switch

功能:根據條件的值,選擇對應的執行分支。

範例:

#include <stdio.h>

int main() {
int choice = 2;

switch (choice) {
case 1:
printf("選擇了 1\n");
break;
case 2:
printf("選擇了 2\n");
break;
case 3:
printf("選擇了 3\n");
break;
default: //用來捕捉例外情況
printf("無效選擇\n");
}

return 0;
}
// 輸出 選擇了 2
  • 使用switch要注意一點,如果我們沒有在做完程式內容後添加break關鍵字,則會執行後續分支。

範例:

#include <stdio.h>

int main() {
int choice = 2;

switch (choice) {
case 1:
printf("選擇了 1\n");
break;
case 2:
printf("選擇了 2\n");
//break;
case 3:
printf("選擇了 3\n");
//break;
default:
printf("無效選擇\n");
//break;添加不添加都可
}

return 0;
}
/* 輸出
選擇了 2
選擇了 3
無效選擇
*/

其他用法:我們可以判斷一個區間作為條件式的判斷(有些編譯器可能不接受),如下所示:

#include <stdio.h>

int main() {
int choice = 8;

switch (choice) {
case 1 ... 3: //範圍1-3
printf("選擇了 1\n");
break;
case 4 ... 6: //範圍4-6
printf("選擇了 2\n");
break;
case 7 ... 9: //範圍7-9
printf("選擇了 3\n");
break;
default:
printf("無效選擇\n");
break;
}

return 0;
}
/* 輸出
選擇了 3
*/

迴圈控制

我們先用一張圖來看一下迴圈怎麼運作的?迴圈很好理解,就像下圖中的流程圖所示,圖看懂的話,就了解迴圈了。

raw-image
  • 上圖由左到右依序是for迴圈、while迴圈、do-while迴圈,接下來個別介紹:

for迴圈

  • 功能:用於執行固定次數的迴圈。
  • 結構:包括初始化、條件判斷、更新表達式。

範例:

#include <stdio.h>

int main() {
for (int i = 1; i <= 5; i++) {
printf("i 的值是: %d\n", i);
}

return 0;
}
// 以上是一個簡單的示範
/* 輸出
i 的值是: 1
i 的值是: 2
i 的值是: 3
i 的值是: 4
i 的值是: 5

*/

其中,for迴圈的結構如下所示

for (int i = 1(初始化); i <= 5(條件判斷); i++(更新表達式)) {
// 內容​
}

另外,更新表達式除了遞增,也可以遞減、或是做其他運算。

範例:

#include <stdio.h>

int main() {
int sum = 0, i, j;

for (i = 1; i <= 5; i++) {
for (j = 5; j >= i; j--) {
sum += i + j;
}
}

printf("sum = %d\n", sum);
return 0;
}
/* 輸出
sum = 90
*/

另外迴圈中,可以同時初始化多個變數。

範例:

#include <stdio.h>

int main() {
for (int i = 0, j = 10; i < 5; i++, j--) { // 初始化 i 和 j,並在每次迴圈執行後分別增加和減少
if(i+1==5) //最後一行執行完不換行
{
printf("i = %d, j = %d", i, j);
}
else
{
printf("i = %d, j = %d\n", i, j);
}
}
return 0;
}
/* 輸出
i = 0, j = 10
i = 1, j = 9
i = 2, j = 8
i = 3, j = 7
i = 4, j = 6
*/

範例2:

#include <stdio.h>

int main() {
for (int x = 0, y = 1; x + y <= 10; x++, y += 2) { // 初始化 x 和 y,並根據條件控制執行
printf("x = %d, y = %d, sum = %d\n", x, y, x + y);
}
return 0;
}
/* 輸出
x = 0, y = 1, sum = 1
x = 1, y = 3, sum = 4
x = 2, y = 5, sum = 7
x = 3, y = 7, sum = 10

*/
  • 再次強調,迴圈一定要注意數值的變化,照著先前團片的流程走,應該都能搞懂迴圈及數值的變化。

範例3:

#include <stdio.h>

int main() {
int i = 0; // 初始化變數 i,賦值為 0

// for 迴圈,初始化部分被省略,但不影響程式執行,因為 i 已在 main 中定義並初始化。是合法的
for (; i < 5; i++) {
// 這裡是空的迴圈主體,不做任何事,但迴圈一樣會繼續執行
}

// 迴圈結束後,輸出 i 的值
printf("%d", i); // 輸出變數 i 的值,數值為5

return 0; // 返回 0,表示程式執行成功
}
  • 上面程式中,i=4<5時會進入迴圈,接著i++再判斷,所以(i=5<5)判斷為False,跳出迴圈,i=5。

while迴圈

這邊簡單示範,依樣照著圖片的流程走,很容易就能知道輸出長甚麼樣:


#include <stdio.h>

int main() {
int x = 1;

while (x <= 5) {
printf("x 的值是: %d\n", x);
x++;
}

return 0;
}
/* 輸出
x 的值是: 1
x 的值是: 2
x 的值是: 3
x 的值是: 4
x 的值是: 5

*/

do-while迴圈

簡單示範: 要知道do-while迴圈至少會執行一次迴圈內容,因為do-while先執行後判斷。

範例1:

#include <stdio.h>

int main() {
int i = 0; // 初始化變數 i,值為 0

do {
printf("i = %d\n", i); // 每次都輸出 i 的值
i++; // i 遞增 1
} while (i < 5); // 當 i < 5 時繼續執行迴圈

return 0;
}
/* 輸出
i = 0
i = 1
i = 2
i = 3
i = 4

*/

範例2:

#include <stdio.h>

int main() {
int number;

do {
printf("請輸入一個正數: ");
scanf("%d", &number);
} while (number <= 0); // 如果輸入的數小於等於 0,則重複提示輸入

printf("您輸入的正數是: %d\n", number);
return 0;
}
/* 輸出
請輸入一個正數: -1
請輸入一個正數: 0
請輸入一個正數: 1
您輸入的正數是: 1

*/

breakcontinue


break 用於強制跳出目前的迴圈或 switch 結構。

範例(找到第一個被 7 整除的數字):

#include <stdio.h>

int main() {
int number = 1;

while (1) { // 無限迴圈
if (number % 7 == 0) {
printf("Found a number divisible by 7: %d\n", number);
break; // 跳出迴圈
}
number++;
}

printf("Loop ended.\n");
return 0;
}

continue 用於跳過本次迴圈的剩餘部分,直接開始下一次迴圈。

範例(僅印出 1 到 10 中的奇數):

#include <stdio.h>

int main() {
int number;

for (number = 1; number <= 10; number++) {
if (number % 2 == 0) {
continue; // 偶數時跳過本次迴圈
}
printf("Odd number: %d\n", number);
}

printf("Loop ended.\n");
return 0;
}
留言
avatar-img
留言分享你的想法!
avatar-img
電資鼠 - 您的學習好夥伴
8會員
209內容數
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
2025/03/07
本章節將探討左下三角稀疏矩陣。
Thumbnail
2025/03/07
本章節將探討左下三角稀疏矩陣。
Thumbnail
2025/03/07
相信讀者現在對於鏈結串列有了更多的認識,所以我再進一步,示範更多關於鏈結串列的操作,這部分示範會將程式模組化。將鏈結串列的操作寫進一個標頭檔,並在主程式中引入。
Thumbnail
2025/03/07
相信讀者現在對於鏈結串列有了更多的認識,所以我再進一步,示範更多關於鏈結串列的操作,這部分示範會將程式模組化。將鏈結串列的操作寫進一個標頭檔,並在主程式中引入。
Thumbnail
2025/03/07
本章節示範透過「陣列索引」和「指標運算」兩種方式來存取同一個二維陣列 a,並印出相同的數值以及對應的位址,以說明它們其實指向的是同一塊連續的記憶體空間。本文將依序解釋各段程式碼,並示範可能的執行結果與背後原理。
Thumbnail
2025/03/07
本章節示範透過「陣列索引」和「指標運算」兩種方式來存取同一個二維陣列 a,並印出相同的數值以及對應的位址,以說明它們其實指向的是同一塊連續的記憶體空間。本文將依序解釋各段程式碼,並示範可能的執行結果與背後原理。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
在這一章中,我們介紹了PHP中的流程控制語句,包括if、else if、else、三元運算子、switch語句、for迴圈、foreach迴圈、while迴圈、do-while迴圈、循環嵌套以及控制迴圈的語句如break、continue、goto和return。
Thumbnail
在這一章中,我們介紹了PHP中的流程控制語句,包括if、else if、else、三元運算子、switch語句、for迴圈、foreach迴圈、while迴圈、do-while迴圈、循環嵌套以及控制迴圈的語句如break、continue、goto和return。
Thumbnail
此章節的目的是介紹Java程式語言中的流程控制結構,包括條件語句(if, else if, else)、三元運算子、switch語句,以及各種迴圈(for, foreach, while)。同時,也解釋了如何在迴圈中使用控制語句來改變程式的執行流程。每種主題都配有示例程式碼以幫助理解。
Thumbnail
此章節的目的是介紹Java程式語言中的流程控制結構,包括條件語句(if, else if, else)、三元運算子、switch語句,以及各種迴圈(for, foreach, while)。同時,也解釋了如何在迴圈中使用控制語句來改變程式的執行流程。每種主題都配有示例程式碼以幫助理解。
Thumbnail
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
Thumbnail
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
Thumbnail
本篇介紹了Swift程式語言中的各種流程控制元素,包括條件語句(如if, else if, else),三元運算子,多條件分支判斷的switch語句,以及各種迴圈(如for迴圈,while迴圈,以及repeat-while迴圈)。同時也詳細解釋了如何進行迴圈嵌套,以及如何使用控制迴圈語句。
Thumbnail
本篇介紹了Swift程式語言中的各種流程控制元素,包括條件語句(如if, else if, else),三元運算子,多條件分支判斷的switch語句,以及各種迴圈(如for迴圈,while迴圈,以及repeat-while迴圈)。同時也詳細解釋了如何進行迴圈嵌套,以及如何使用控制迴圈語句。
Thumbnail
本章節提供了關於Typescript中流程控制元素的詳細介紹,包括if, else if, else語句,三元運算子,switch語句,各種for迴圈,while迴圈,循環嵌套和控制迴圈語句(break,continue和標籤)的使用。
Thumbnail
本章節提供了關於Typescript中流程控制元素的詳細介紹,包括if, else if, else語句,三元運算子,switch語句,各種for迴圈,while迴圈,循環嵌套和控制迴圈語句(break,continue和標籤)的使用。
Thumbnail
if 條件式
Thumbnail
if 條件式
Thumbnail
本章節主要介紹了JavaScript中的流程控制,包括條件語句(如if、else if、else和三元運算子)和循環結構(如for迴圈、while迴圈等)。同時,也提供了如何使用break、continue和label來控制迴圈的執行。
Thumbnail
本章節主要介紹了JavaScript中的流程控制,包括條件語句(如if、else if、else和三元運算子)和循環結構(如for迴圈、while迴圈等)。同時,也提供了如何使用break、continue和label來控制迴圈的執行。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News