# 適合國中生的 C 語言題目 ## 題目 1:輸入名字,印出歡迎訊息 :::spoiler ``` #include <stdio.h> int main() { char name[50]; printf("請輸入你的名字:"); scanf("%s", name); printf("Hello, %s!\n", name); return 0; } ``` ::: ## 題目 2:兩數加減乘除 :::spoiler ``` #include <stdio.h> int main() { int a, b; printf("請輸入兩個整數:"); scanf("%d %d", &a, &b); printf("加法: %d\n", a + b); printf("減法: %d\n", a - b); printf("乘法: %d\n", a * b); printf("除法: %d\n", b != 0 ? a / b : 0); return 0; } ``` ::: ## 題目 3:判斷奇數或偶數 :::spoiler ``` #include <stdio.h> int main() { int n; printf("請輸入一個整數:"); scanf("%d", &n); if (n % 2 == 0) printf("偶數\n"); else printf("奇數\n"); return 0; } ``` ::: ## 題目 4:九九乘法表 :::spoiler ``` #include <stdio.h> int main() { int i, j; for (i = 1; i <= 9; i++) { for (j = 1; j <= 9; j++) { printf("%d×%d=%2d ", i, j, i * j); } printf("\n"); } return 0; } ``` ::: ## 題目 5:成績評分系統 :::spoiler #include <stdio.h> int main() { int score; printf("請輸入成績:"); scanf("%d", &score); if (score >= 90) printf("A 等級\n"); else if (score >= 80) printf("B 等級\n"); else if (score >= 70) printf("C 等級\n"); else printf("需加強\n"); return 0; } ::: ## 題目 6:三數找最大值 :::spoiler ``` #include <stdio.h> int main() { int a, b, c, max; printf("請輸入三個整數:"); scanf("%d %d %d", &a, &b, &c); max = a; if (b > max) max = b; if (c > max) max = c; printf("最大值是:%d\n", max); return 0; } ``` ::: ## 題目 7:數字總和(1+2+…+n) :::spoiler ``` #include <stdio.h> int main() { int n, sum = 0; printf("請輸入一個正整數:"); scanf("%d", &n); for (int i = 1; i <= n; i++) sum += i; printf("總和是:%d\n", sum); return 0; } ``` ::: ## 題目 8:溫度轉換 :::spoiler ``` #include <stdio.h> int main() { float celsius, fahrenheit; printf("請輸入攝氏溫度:"); scanf("%f", &celsius); fahrenheit = celsius * 9 / 5 + 32; printf("華氏溫度是:%.2f\n", fahrenheit); return 0; } ``` ::: ## 題目 9:秒數轉時分秒 :::spoiler ``` #include <stdio.h> int main() { int totalSeconds, hours, minutes, seconds; printf("請輸入總秒數:"); scanf("%d", &totalSeconds); hours = totalSeconds / 3600; minutes = (totalSeconds % 3600) / 60; seconds = totalSeconds % 60; printf("%d 秒 = %d 時 %d 分 %d 秒\n", totalSeconds, hours, minutes, seconds); return 0; } ``` ::: ## 題目 10:簡易找零程式 :::spoiler ``` #include <stdio.h> int main() { int cash; printf("請輸入金額:"); scanf("%d", &cash); int a100 = cash / 100; cash %= 100; int a50 = cash / 50; cash %= 50; int a10 = cash / 10; cash %= 10; int a5 = cash / 5; int a1 = cash % 5; int sum = a100 + a50 + a10 + a5 + a1; printf("總共貨幣數量: %d\n", sum); printf("100元: %d\n", a100); printf("50元: %d\n", a50); printf("10元: %d\n", a10); printf("5元: %d\n", a5); printf("1元: %d\n", a1); return 0; } ``` ::: ## 題目 11:質數判斷 :::spoiler ``` #include <stdio.h> int main() { int n, isPrime = 1; printf("請輸入一個整數:"); scanf("%d", &n); if (n <= 1) isPrime = 0; for (int i = 2; i < n; i++) { if (n % i == 0) { isPrime = 0; break; } } if (isPrime) printf("%d 是質數\n", n); else printf("%d 不是質數\n", n); return 0; } ``` ::: ## 題目 12:費波那契數列(前 n 項) :::spoiler ``` #include <stdio.h> int main() { int n; printf("輸入你要幾個費波那契數:"); scanf("%d", &n); int a = 0, b = 1; for (int i = 0; i < n; i++) { printf("%d ", a); int next = a + b; a = b; b = next; } printf("\n"); return 0; } ``` ::: ## 題目 13:列出 1~n 的所有質數 :::spoiler ``` #include <stdio.h> int main() { int n; printf("請輸入一個整數:"); scanf("%d", &n); for (int num = 2; num <= n; num++) { int isPrime = 1; for (int i = 2; i * i <= num; i++) { if (num % i == 0) { isPrime = 0; break; } } if (isPrime) printf("%d ", num); } printf("\n"); return 0; } ``` ::: ## 題目 14:成績平均與最大值 :::spoiler ``` #include <stdio.h> int main() { int n, scores[100], sum = 0, max = 0; printf("請輸入成績數量:"); scanf("%d", &n); for (int i = 0; i < n; i++) { printf("第 %d 筆成績:", i + 1); scanf("%d", &scores[i]); sum += scores[i]; if (scores[i] > max) max = scores[i]; } printf("平均:%.2f\n", (float)sum / n); printf("最高分:%d\n", max); return 0; } ``` ::: ## 題目 15:排序成績(氣泡排序) :::spoiler ``` #include <stdio.h> int main() { int n, scores[100]; printf("請輸入成績數量:"); scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &scores[i]); } for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (scores[j] > scores[j + 1]) { int temp = scores[j]; scores[j] = scores[j + 1]; scores[j + 1] = temp; } } } printf("排序後成績:"); for (int i = 0; i < n; i++) { printf("%d ", scores[i]); } printf("\n"); return 0; } ``` ::: ## 題目 16:統計票數 :::spoiler ``` #include <stdio.h> int main() { int votes[4] = {0}, input, total; printf("請輸入總票數:"); scanf("%d", &total); for (int i = 0; i < total; i++) { printf("請輸入票(1~3):"); scanf("%d", &input); if (input >= 1 && input <= 3) votes[input]++; else printf("無效票\n"); } for (int i = 1; i <= 3; i++) { printf("候選人 %d 得票:%d\n", i, votes[i]); } return 0; } ``` ::: ## 題目 17:字串長度計算(模擬 strlen) :::spoiler ``` #include <stdio.h> int main() { char str[100]; int len = 0; printf("請輸入字串:"); scanf("%s", str); while (str[len] != '\0') { len++; } printf("字串長度為:%d\n", len); return 0; } ``` ::: ## 題目 18:簡易加密器(每字元 +1) :::spoiler ``` #include <stdio.h> int main() { char str[100]; printf("請輸入英文(不含空格):"); scanf("%s", str); for (int i = 0; str[i] != '\0'; i++) { str[i]++; } printf("加密後:%s\n", str); return 0; } ``` ::: ## 題目 19:字串反轉 :::spoiler ``` #include <stdio.h> int main() { char str[100]; int len = 0; printf("請輸入字串:"); scanf("%s", str); while (str[len] != '\0') len++; printf("反轉後:"); for (int i = len - 1; i >= 0; i--) { printf("%c", str[i]); } printf("\n"); return 0; } ``` ::: ## 題目 20:猜數字遊戲 :::spoiler ``` #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int answer, guess; srand(time(NULL)); answer = rand() % 100 + 1; do { printf("猜一個 1 到 100 的數:"); scanf("%d", &guess); if (guess > answer) printf("太大了!\n"); else if (guess < answer) printf("太小了!\n"); } while (guess != answer); printf("恭喜猜對了!\n"); return 0; } ``` ::: ## 題目 21:井字遊戲(Tic-Tac-Toe)完整程式碼 - 雙人對戰版 :::spoiler ``` #include <stdio.h> char board[3][3]; // 棋盤陣列 // 初始化棋盤 void initBoard() { for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) board[i][j] = ' '; } // 顯示棋盤 void printBoard() { printf("\n"); for (int i = 0; i < 3; i++) { printf(" %c | %c | %c \n", board[i][0], board[i][1], board[i][2]); if (i < 2) printf("---|---|---\n"); } printf("\n"); } // 檢查是否有玩家獲勝 char checkWinner() { // 橫列與直欄 for (int i = 0; i < 3; i++) { if (board[i][0] != ' ' && board[i][0] == board[i][1] && board[i][1] == board[i][2]) return board[i][0]; if (board[0][i] != ' ' && board[0][i] == board[1][i] && board[1][i] == board[2][i]) return board[0][i]; } // 斜線 if (board[0][0] != ' ' && board[0][0] == board[1][1] && board[1][1] == board[2][2]) return board[0][0]; if (board[0][2] != ' ' && board[0][2] == board[1][1] && board[1][1] == board[2][0]) return board[0][2]; return ' '; // 無人獲勝 } // 檢查是否平手 int isDraw() { for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) if (board[i][j] == ' ') return 0; return 1; } int main() { int row, col, player = 1; char symbol, winner = ' '; initBoard(); printf("井字遊戲:玩家1 = X,玩家2 = O\n"); while (1) { printBoard(); symbol = (player == 1) ? 'X' : 'O'; printf("玩家 %d (%c),請輸入列與行(0~2):", player, symbol); scanf("%d %d", &row, &col); // 檢查合法性 if (row < 0 || row > 2 || col < 0 || col > 2 || board[row][col] != ' ') { printf("這個位置無效,請重新輸入!\n"); continue; } board[row][col] = symbol; winner = checkWinner(); if (winner != ' ') { printBoard(); printf("玩家 %d (%c) 獲勝了!\n", player, winner); break; } else if (isDraw()) { printBoard(); printf("遊戲平手!\n"); break; } player = (player == 1) ? 2 : 1; // 換人 } return 0; } ``` :::