# 適合國中生的 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;
}
```
:::