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;
}
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
留言
avatar-img
留言分享你的想法!

































































本章將介紹 C 語言的運算子 (Operators),這是程式語言的基礎,負責執行數值計算、條件判斷與邏輯運算。我們將最先學習變數在記憶體中的樣子,這是非常重要的觀念,接著漸入到算術運算、關係運算、邏輯運算、位元運算與三元運算子等,並透過 運算子優先順序 來確保正確的運算執行順序。
本文章介紹了 C 語言putchar, getchar, puts, fgets函數及其使用方法與常見問題解決方案。包含程式碼範例、問題分析及解決方法,幫助讀者理解並避免輸入錯誤。
在C語言中,scanf()可能並沒有我們所想的那麼簡單且單調,本章節會列出4點補充的使用方式。這些都是容易忽視的小知識。
本章將介紹 C 語言的輸入與輸出 ,透過本章系統性的學習與使用示範,你將能夠靈活掌握 C 語言的資料讀取與輸出技巧。
本章將介紹 C 語言中的變數與常數,這是學習 C 語言的基礎概念,決定了 數據儲存、運算與管理方式。我們將學習如何 宣告變數與常數,並透過一個 實際範例 來開始撰寫C語言。
本章將介紹 C 語言的運算子 (Operators),這是程式語言的基礎,負責執行數值計算、條件判斷與邏輯運算。我們將最先學習變數在記憶體中的樣子,這是非常重要的觀念,接著漸入到算術運算、關係運算、邏輯運算、位元運算與三元運算子等,並透過 運算子優先順序 來確保正確的運算執行順序。
本文章介紹了 C 語言putchar, getchar, puts, fgets函數及其使用方法與常見問題解決方案。包含程式碼範例、問題分析及解決方法,幫助讀者理解並避免輸入錯誤。
在C語言中,scanf()可能並沒有我們所想的那麼簡單且單調,本章節會列出4點補充的使用方式。這些都是容易忽視的小知識。
本章將介紹 C 語言的輸入與輸出 ,透過本章系統性的學習與使用示範,你將能夠靈活掌握 C 語言的資料讀取與輸出技巧。
本章將介紹 C 語言中的變數與常數,這是學習 C 語言的基礎概念,決定了 數據儲存、運算與管理方式。我們將學習如何 宣告變數與常數,並透過一個 實際範例 來開始撰寫C語言。
你可能也想看
Google News 追蹤
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
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
Thumbnail
本篇介紹了Swift程式語言中的各種流程控制元素,包括條件語句(如if, else if, else),三元運算子,多條件分支判斷的switch語句,以及各種迴圈(如for迴圈,while迴圈,以及repeat-while迴圈)。同時也詳細解釋了如何進行迴圈嵌套,以及如何使用控制迴圈語句。
Thumbnail
本章節提供了關於Typescript中流程控制元素的詳細介紹,包括if, else if, else語句,三元運算子,switch語句,各種for迴圈,while迴圈,循環嵌套和控制迴圈語句(break,continue和標籤)的使用。
Thumbnail
本章節主要介紹了JavaScript中的流程控制,包括條件語句(如if、else if、else和三元運算子)和循環結構(如for迴圈、while迴圈等)。同時,也提供了如何使用break、continue和label來控制迴圈的執行。
Thumbnail
本文是C#入門教程的一部分,涵蓋了流程控制的各種語句與迴圈。這包括if、else if和else語句,三元運算子,switch語句,以及for、foreach和while迴圈。文中還介紹了如何在迴圈中使用break、continue、return和goto語句。
Thumbnail
本文介紹了Python中的流程控制,包括if, elif, else語句,三元運算子,for和while迴圈,以及控制迴圈語句如break、continue和pass。透過範例程式碼,說明了如何使用這些語句和結構進行條件判斷,迴圈遍歷和控制程式流程。
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
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
Thumbnail
本篇介紹了Swift程式語言中的各種流程控制元素,包括條件語句(如if, else if, else),三元運算子,多條件分支判斷的switch語句,以及各種迴圈(如for迴圈,while迴圈,以及repeat-while迴圈)。同時也詳細解釋了如何進行迴圈嵌套,以及如何使用控制迴圈語句。
Thumbnail
本章節提供了關於Typescript中流程控制元素的詳細介紹,包括if, else if, else語句,三元運算子,switch語句,各種for迴圈,while迴圈,循環嵌套和控制迴圈語句(break,continue和標籤)的使用。
Thumbnail
本章節主要介紹了JavaScript中的流程控制,包括條件語句(如if、else if、else和三元運算子)和循環結構(如for迴圈、while迴圈等)。同時,也提供了如何使用break、continue和label來控制迴圈的執行。
Thumbnail
本文是C#入門教程的一部分,涵蓋了流程控制的各種語句與迴圈。這包括if、else if和else語句,三元運算子,switch語句,以及for、foreach和while迴圈。文中還介紹了如何在迴圈中使用break、continue、return和goto語句。
Thumbnail
本文介紹了Python中的流程控制,包括if, elif, else語句,三元運算子,for和while迴圈,以及控制迴圈語句如break、continue和pass。透過範例程式碼,說明了如何使用這些語句和結構進行條件判斷,迴圈遍歷和控制程式流程。