
- C 語言教程
- C - 首頁
- C 語言基礎
- C - 概述
- C - 特性
- C - 歷史
- C - 環境設定
- C - 程式結構
- C - Hello World
- C - 編譯過程
- C - 註釋
- C - 詞法單元
- C - 關鍵字
- C - 識別符號
- C - 使用者輸入
- C - 基本語法
- C - 資料型別
- C - 變數
- C - 整數提升
- C - 型別轉換
- C - 型別強制轉換
- C - 布林值
- C 語言中的常量和字面量
- C - 常量
- C - 字面量
- C - 轉義序列
- C - 格式說明符
- C 語言中的運算子
- C - 運算子
- C - 算術運算子
- C - 關係運算符
- C - 邏輯運算子
- C - 位運算子
- C - 賦值運算子
- C - 一元運算子
- C - 自增和自減運算子
- C - 三元運算子
- C - sizeof 運算子
- C - 運算子優先順序
- C - 其他運算子
- C 語言中的決策
- C - 決策
- C - if 語句
- C - if...else 語句
- C - 巢狀 if 語句
- C - switch 語句
- C - 巢狀 switch 語句
- C 語言中的迴圈
- C - 迴圈
- C - while 迴圈
- C - for 迴圈
- C - do...while 迴圈
- C - 巢狀迴圈
- C - 無限迴圈
- C - break 語句
- C - continue 語句
- C - goto 語句
- C 語言中的函式
- C - 函式
- C - 主函式
- C - 按值傳遞函式
- C - 按引用傳遞函式
- C - 巢狀函式
- C - 可變引數函式
- C - 使用者自定義函式
- C - 回撥函式
- C - 返回語句
- C - 遞迴
- C 語言中的作用域規則
- C - 作用域規則
- C - 靜態變數
- C - 全域性變數
- C 語言中的陣列
- C - 陣列
- C - 陣列的特性
- C - 多維陣列
- C - 將陣列傳遞給函式
- C - 從函式返回陣列
- C - 變長陣列
- C 語言中的指標
- C - 指標
- C - 指標和陣列
- C - 指標的應用
- C - 指標運算
- C - 指標陣列
- C - 指標到指標
- C - 將指標傳遞給函式
- C - 從函式返回指標
- C - 函式指標
- C - 指向陣列的指標
- C - 指向結構體的指標
- C - 指標鏈
- C - 指標與陣列
- C - 字元指標和函式
- C - 空指標
- C - 空型別指標
- C - 野指標
- C - 解引用指標
- C - 近、遠和巨型指標
- C - 指標陣列的初始化
- C - 指標與多維陣列
- C 語言中的字串
- C - 字串
- C - 字串陣列
- C - 特殊字元
- C 語言中的結構體和聯合體
- C - 結構體
- C - 結構體和函式
- C - 結構體陣列
- C - 自引用結構體
- C - 查詢表
- C - 點 (.) 運算子
- C - 列舉 (或 enum)
- C - 結構體填充和打包
- C - 巢狀結構體
- C - 匿名結構體和聯合體
- C - 聯合體
- C - 位段
- C - Typedef
- C 語言中的檔案處理
- C - 輸入與輸出
- C - 檔案 I/O(檔案處理)
- C 預處理器
- C - 預處理器
- C - 編譯指示
- C - 預處理器運算子
- C - 宏
- C - 標頭檔案
- C 語言中的記憶體管理
- C - 記憶體管理
- C - 記憶體地址
- C - 儲存類
- 其他主題
- C - 錯誤處理
- C - 可變引數
- C - 命令執行
- C - 數學函式
- C - static 關鍵字
- C - 隨機數生成
- C - 命令列引數
- C 語言資源
- C - 問答
- C - 快速指南
- C - 速查表
- C - 有用資源
- C - 討論
C 語言模擬測試
本節為您提供各種與C 程式設計框架相關的模擬測試。您可以將這些示例模擬測試下載到本地機器上,並在方便時離線解決。每個模擬測試都附帶一個模擬測試答案,讓您驗證最終分數並給自己評分。

C 語言模擬測試一
第 1 題 - 以下程式碼片段的輸出是什麼?
#include<stdio.h> main() { int const a = 5; a++; printf(“%d”,a); }
答案:D
解析
編譯錯誤 - 常量變數不能被修改。
main() { int const a = 5; a++; printf(“%d”,a); }
第 2 題 - 以下程式碼片段的輸出是什麼?
#include<stdio.h> main() { const int a = 5; a++; printf("%d", a); }
答案:D
解析
編譯錯誤 - 常量變數不能被修改。
main() { const int a = 5; a++; printf("%d", a); }
第 3 題 - 以下程式碼片段的輸出是什麼?
#include<stdio.h> main() { char s[]="hello", t[]="hello"; if(s==t){ printf("eqaul strings"); } }
答案:C
解析
無輸出,因為我們比較的是兩個基地址,它們並不相同。
第 4 題 - 以下程式碼片段的輸出是什麼?
#include<stdio.h> main() { int a = 5, b = 3, c = 4; printf("a = %d, b = %d\n", a, b, c); }
答案:A
解析
a=5,b=3,因為只有兩個格式說明符用於列印。
第 5 題 - 以下程式碼片段的輸出是什麼?
#include<stdio.h> main() { int a = 1; float b = 1.3; double c; c = a + b; printf("%.2lf", c); }
答案:A
解析
2.30,加法有效,並且指定了小數點後兩位。
第 6 題 - 以下程式的輸出是什麼?
#include<stdio.h> main() { enum { india, is=7, GREAT }; printf("%d %d", india, GREAT); }
答案:C
解析
0 8,列舉從 0 開始順序排列。如果分配了一個值,則序列從分配的值繼續。
第 7 題 - 以下程式碼片段的輸出是什麼?
#include<stdio.h> main() { char c = 'A'+255; printf("%c", c); }
答案:A
解析
A,ASCII 字元的 ASCII 值範圍為 0-255。因此,加法運算迴圈回 'A'。
第 8 題 - 以下程式碼片段的輸出是什麼?
#include<stdio.h> main() { short unsigned int i = 0; printf("%u\n", i--); }
答案:A
解析
0,使用後減減運算子,變數的值將被視為表示式的值,然後被遞減。
第 9 題 - 以下程式碼片段的輸出是什麼?
#include<stdio.h> main() { unsigned x = 5, y=&x, *p = y+0; printf("%u",*p); }
答案:D
解析
5,因為 p 儲存了 x 的地址,即 y+0。
第 10 題 - 您對以下 C 語句有什麼評論?
signed int *p=(int*)malloc(sizeof(unsigned int));
答案:D
解析
選項 (d),因為 int 和 unsigned 的大小相同,分配記憶體沒有問題。
第 11 題 - 以下程式碼片段的輸出是什麼?
#include<stdio.h> main() { int x = 5; if(x==5) { if(x==5) break; printf("Hello"); } printf("Hi"); }
答案:A
解析
編譯錯誤,關鍵字 break 只能出現在迴圈/switch 語句中。
第 12 題 - 以下程式碼片段的輸出是什麼?
#include<stdio.h> main() { int x = 5; if(x=5) { if(x=5) break; printf("Hello"); } printf("Hi"); }
答案:A
解析
編譯錯誤,關鍵字 break 只能出現在迴圈/switch 語句中。
第 13 題 - 以下程式碼片段的輸出是什麼?
#include<stdio.h> main() { int x = 5; if(x=5) { if(x=5) printf("Hello"); } printf("Hi"); }
答案:A
解析
HelloHi,兩個 if 語句的表示式都計算為真。
第 14 題 - 以下程式碼片段的輸出是什麼?
#include<stdio.h> main() { for(;;)printf("Hello"); }
答案:A
解析
無限迴圈,當 'for' 的第二個表示式不存在時,它預設被視為真。
第 15 題 - 以下程式碼片段的輸出是什麼?
#include<stdio.h> main() { for()printf("Hello"); }
答案:D
解析
編譯錯誤,雖然表示式對於 'for' 迴圈是可選的,但分號需要出現。
第 16 題 - 以下程式碼片段的輸出是什麼?
#include<stdio.h> main() { for(1;2;3) printf("Hello"); }
答案:A
解析
無限迴圈,因為第二個表示式非 0,因此條件始終為真。
答案:D
解析
-2,1 的反碼是 1110(二進位制),它等價於 2 的反碼,即 -2。
第 18 題 - 以下程式的輸出是什麼?
#include<stdio.h> void f() { static int i; ++i; printf("%d", i); } main() { f(); f(); f(); }
答案:D
解析
1 2 3,靜態區域性變數在函式呼叫之間保留其值,預設值為 0。
第 19 題 - 以下程式碼片段的輸出是什麼?
#include<stdio.h> main() { int *p = 15; printf("%d",*p); }
答案:C
解析
執行時錯誤,因為指標變數沒有儲存正確的地址,從同一地址讀寫資料會引發執行時錯誤。
第 20 題 - 以下程式的輸出是什麼?
#include<stdio.h> main() { register int x = 5; int *p; p=&x; x++; printf("%d",*p); }
答案:A
解析
編譯錯誤,我們不能獲取暫存器變數的地址。
第 21 題 - 以下程式的輸出是什麼?
#include<stdio.h> main() { int x = 65, *p = &x; void *q=p; char *r=q; printf("%c",*r); }
答案:B
解析
A,空型別指標是一個通用指標,可以儲存任何變數的地址。值為 65 的 ASCII 字元是 'A'。
第 22 題 - 以下程式的輸出是什麼?
#include<stdio.h> void f() { printf(“Hello\n”); } main() { ; }
答案:A
解析
無輸出,除了選項 (a) 之外,針對其他選項的註釋都是無效的。
答案:D
解析
編譯錯誤,printf 的格式字串沒有終止。
第 24 題 - 以下程式的輸出是什麼?
#include<stdio.h> { int x = 1; switch(x) { default: printf("Hello"); case 1: printf("hi"); break; } }
答案:B
解析
Hi,在比較完其他 case 常量後,控制權到達 default-case。
第 25 題 - 以下程式的輸出是什麼?
#include<stdio.h> main() { struct { int x;} var = {5}, *p = &var; printf("%d %d %d",var.x,p->x,(*p).x); }
答案:A
解析
5 5 5,使用指標訪問結構體元素的兩種可能方式是使用 ->(箭頭運算子)或 *。
第 26 題 - 以下程式的輸出是什麼?
#include<stdio.h> void swap(int m, int n) { int x = m; m = n; n = x; } main() { int x=5, y=3; swap(x,y); printf("%d %d", x, y); }
答案:B
解析
5 3,按值傳遞機制無法改變實際引數。
#include <stdio.h> void swap(int m, int n) { int x = m; m = n; n = x; } main() { int x=5, y=3; swap(x,y); printf("%d %d", x, y); }
第 27 題 - 以下語句將列印什麼?
#include<stdio.h> main() { printf("%d",strcmp("strcmp()","strcmp()")); }
答案:A
解析
0,如果兩個字串相等,strcmp 返回 0。
第 28 題 - 以下程式在做什麼?
#include<stdio.h> main() { FILE *stream=fopen("a.txt",'r'); }
答案:D
解析
編譯錯誤,fopen 的第二個引數無效,應該是字串。
第 29 題 - 以下程式的輸出是什麼?
#include<stdio.h> main() { int r, x = 2; float y = 5; r = y%x; printf("%d", r); }
答案:D
解析
編譯錯誤,模運算子 (%) 的任何一個運算元為實數都是無效的。
Q 31 - 以下聯合體定義的大小是多少?
#include<stdio.h> union abc { char a,b,c,d,e,f,g,h; int i; }abc; main() { printf( "%d", sizeof( abc )); }
答案:C
解析
聯合體的大小是其最大元素的大小。聯合體的所有元素共享公共記憶體。
答案:D
解析
short 用作 short int 的替代。
Q 34 - 對於以下程式碼段,‘y’ 的值是多少?
#include<stdio.h> main() { int x = 1; float y = x>>2; printf( "%f", y ); }
答案:C
解析
0,由於上述移位操作導致資料位丟失,因此值為 0。
Q 35 - 以下程式的輸出是什麼?
#include<stdio.h> main() { float t = 2; switch(t) { case 2: printf("Hi"); default: printf("Hello"); } }
答案:D
解析
錯誤,switch 表示式不能是浮點值。
Q 36 - 以下程式的輸出是什麼?
#include<stdio.h> main() { int i = 1; while(++i <= 5) printf("%d ",i++); }
答案:B
解析
2 4,在 while 迴圈中,先自增後比較,在 printf 中先列印後自增。
Q 37 - 以下程式的輸出是什麼?
#include<stdio.h> main() { int i = 1; while( i++<=5 ) printf("%d ",i++); }
答案:C
解析
2 4 6,在 while 迴圈中,先比較後自增,在 printf 中先列印後自增。
Q 38 - 以下程式的輸出是什麼?
#include<stdio.h> main() { int i = 1; while(i++<=5); printf("%d ",i++); }
答案:B
解析
6,在 ‘while’ 之後有一個空語句。
Q 39 - 以下程式的輸出是什麼?
#include<stdio.h> main() { int x = 1; do printf("%d ", x); while(x++<=1); }
答案:B
解析
1 2,do..while 是一個入口控制迴圈。由於表示式 x++ 是字尾形式,因此迴圈還會繼續第二次。
Q 40 - 以下程式的輸出是什麼?
#include<stdio.h> main() { int a[] = {1,2}, *p = a; printf("%d", p[1]); }
答案:B
解析
2,由於 ‘p’ 儲存基地址,因此我們可以像使用 ‘a’ 一樣使用 ‘p’ 訪問陣列。
Q 41 - 以下程式的輸出是什麼?
#include<stdio.h> main() { int a[3] = {2,1}; printf("%d", a[a[1]]); }
答案:B
解析
1,內部間接定址計算結果為 1,外部間接定址索引 1 處的值為 1。
Q 42 - 以下程式的輸出是什麼?
#include<stdio.h> main() { int a[3] = {2,,1}; printf("%d", a[a[0]]); }
答案:D
解析
編譯錯誤,初始化陣列的語法無效。
Q 43 - 以下程式的輸出是什麼?
#include<stdio.h> main() { int a[] = {2,1}; printf("%d", *a); }
答案:C
解析
2,因為 ‘a’ 指向基地址。
Q 44 - 以下程式的輸出是什麼?
#include<stdio.h> main() { int i = 1; Charminar: printf("%d ",i++); if(i==3) break; if(i<=5) goto Charminar; }
答案:D
解析
編譯錯誤,‘break’ 出現在錯誤的位置。
Q 45 - 以下程式的輸出是什麼?
#include<stdio.h> main() { int i = 13, j = 60; i ^= j; j ^= i; i ^= j; printf("%d %d", i, j); }
答案:B
解析
60 13,它在進行交換。
Q 46 - 以下程式的輸出是什麼?
#include<stdio.h> main() { union abc { int x; char ch; }var; var.ch = 'A'; printf("%d", var.x); }
答案:C
解析
65,因為聯合體變數為所有元素共享公共記憶體,x 獲取 ‘A’(其 ASCII 值為 65)並列印。
答案:A
解析
選項 (a),檔案應該存在並以讀寫模式開啟。
答案:C
解析
SEEK_BEG,其餘都是 ‘stdio.h’ 中定義的有效常量。
答案:C
解析
UNIX。C 實際上是為了編寫一個名為 UNIX 的作業系統而發明的。到 1973 年,整個 UNIX OS 都是使用 C 設計的。
答案表
題號 | 答案 |
---|---|
1 | D |
2 | D |
3 | C |
4 | A |
5 | A |
6 | C |
7 | A |
8 | A |
9 | D |
10 | D |
11 | A |
12 | A |
13 | A |
14 | A |
15 | D |
16 | A |
17 | D |
18 | D |
19 | C |
20 | A |
21 | B |
22 | A |
23 | D |
24 | B |
25 | A |
26 | B |
27 | A |
28 | D |
29 | D |
30 | D |
31 | C |
32 | D |
33 | D |
34 | C |
35 | D |
36 | B |
37 | C |
38 | B |
39 | B |
40 | B |
41 | B |
42 | D |
43 | C |
44 | D |
45 | B |
46 | C |
47 | C |
48 | A |
49 | C |
50 | C |