經典考題全套解析
一、選擇題 (15題) 答案與解析
| 題號 | 答案 | 核心考點 |
| 1 | C | 結構體關鍵字 struct |
| 2 | C | 整型除法截斷、取模、條件運算符 |
| 3 | D | 字串賦值:數組名不可作左值 |
| 4 | B | continue/break 控制流:i=0 死循環 |
| 5 | D | 標識符命名:不能數字開頭 |
| 6 | C | 程序入口:main() 函數 |
| 7 | C | 數組名為常量指針,不能自增 |
| 8 | B | 指針解引用:*p=*&j 等價 *p=j |
| 9 | D | 邏輯與 && 範圍判斷 |
| 10 | B | 指針運算:*(p+3)+=2 修改 a[3] |
| 11 | A | 整型截斷後轉 float 輸出 |
| 12 | C | 二維數組反對角線元素 |
| 13 | A | for循環奇偶輸出 #*#* |
| 14 | D | 局部/全局變量作用域遮蔽 |
| 16 | D | 賦值語法:b+c=1 左值錯誤 |
二、填空題 (7題) 答案
- 15 (3×5)
- 3.1415 (%.4f 四捨五入)
i<100、(i%3==0)&&(i%10==6)
- 9 (逗號表達式值為最後表達式
x+y=2+7=9)
'\0'、*p2=*p1、'\0'
4-i、a[j]、a[j+1] (冒泡降序)
(i+j)/2、str[j-1]、str (字串逆序)
三、編程題:指針比較三數
#include
void sort3(int *a, int *b, int *c) {
int *p[3] = {a, b, c};
int i, j, temp;
// 簡單選擇排序指針陣列
for (i = 0; i < 2; i++)
for (j = i+1; j < 3; j++)
if (*p[i] < *p[j]) {
temp = *p[i]; *p[i] = *p[j]; *p[j] = temp;
}
}
int main() {
int x, y, z;
printf("輸入三個整數: ");
scanf("%d %d %d", &x, &y, &z);
sort3(&x, &y, &z);
printf("降序: %d %d %d\n", x, y, z);
return 0;
}
高頻考點總結
- 運算符優先級與結合性
- 指針與數組關係 (數組名退化、指針運算)
- 函數參數傳遞 (值 vs 地址)
- 控制流短路與跳轉 (break/continue/return)
- 作用域與存儲類別 (auto/static/extern/register)
- 字串處理 (字符 vs 字串、\0 結束)
- 預處理器 (#define/#include/條件編譯)