- C語言考試題模擬練習 推薦度:
- 相關推薦
C語言模擬試題練習
在日常學習和工作中,我們最不陌生的就是練習題了,學習需要做題,是因為這樣一方面可以了解你對知識點的掌握,熟練掌握知識點!同時做題還可以鞏固你對知識點的運用!什么樣的習題才是好習題呢?以下是小編整理的C語言模擬試題練習,歡迎大家分享。

C語言模擬試題練習1
1.若有以下數組說明,則i=10;a[a[i]]元素數值是(C )。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};
A、10
B、9
C、6
D、5
先算a[a[i]]內層的a[i],由于i=10,因此a[i]即a[10].
a[10]對應下面數組中的元素為9. 因此a[a[i]]即為a[9]
a[9]對應下面數組中的元素為6. 因此a[9]即為6
2.若有說明:int a[][3]={{1,2,3},{4,5},{6,7}}; 則數組a的第一維的大小為: ( B )
A、2
B、3
C、4
D、3 6 9
二維數組的一維大小,即指二維數組的行數,在本題中,按行對二維數組賦值,因此內層有幾個大括號,數組就有幾行
3.對二維數組的正確定義是(C )
詳見教材P149~152,二維數組的定義、初始化
類型符 數組名 [常量表達式][常量表達式]
二維數組可以看做是矩陣
類型符是指數組中數組元素的類型;數組名要符合標識符命名規則;第一個常量表達式是指數組的行數;第二個常量表達式是指數組的列數;常量表達式的值只能是整數,不可以是變量,而且從1開始計數。
一維數組初始化時可以省略數組長度
二維數組初始化時可以省略行數,但不能省略列數
選項A,B,都省略了列數
選項D,不符合二維數組定義的一般形式,行、列常量表達式應該放在不同的[]中
A、int a[ ][ ]={1,2,3,4,5,6};
B、int a[2] []={1,2,3,4,5,6};
C、int a[ ] [3]={1,2,3,4,5,6};
D、int a[2,3]={1,2,3,4,5,6};
4.已知int a[3][4];則對數組元素引用正確的是__C___
A、a[2][4]
B、a[1,3]
C、a[2][0]
D、a(2)(1)
5.C語言中函數返回值的類型是由 A 決定的.
A、函數定義時指定的類型
B、 return語句中的表達式類型
C、 調用該函數時的實參的數據類型
D、形參的數據類型
6. 在C語言中,函數的數據類型是指(A )
A、 函數返回值的數據類型
B、 函數形參的數據類型
C、 調用該函數時的實參的數據類型
D、任意指定的數據類型
7.在函數調用時,以下說法正確的是( B )
A、函數調用后必須帶回返回值
B、實際參數和形式參數可以同名
C、函數間的數據傳遞不可以使用全局變量
D、主調函數和被調函數總是在同一個文件里
8. 在C語言中,表示靜態存儲類別的關鍵字是: ( C )
A、 auto
B、 register
C、static
D、extern
9.未指定存儲類別的變量,其隱含的存儲類別為(A )。
A、auto
B、static
C、extern
D、register
10. 若有以下說明語句:
struct student
{ int num;
char name[ ];
float score;
}stu;
則下面的敘述不正確的是: (D )
A、 struct是結構體類型的關鍵字
B、 struct student 是用戶定義的結構體類型
C、 num, score都是結構體成員名
D、 stu是用戶定義的結構體類型名
11.若有以下說明語句:
struct date
{ int year;
int month;
int day;
}brithday;
則下面的敘述不正確的是__C___.
A、 struct是聲明結構體類型時用的關鍵字
B、 struct date 是用戶定義的結構體類型名
C、 brithday是用戶定義的結構體類型名
D、year,day 都是結構體成員名
12. 以下對結構變量stul中成員age的非法引用是 B
struct student
{ int age;
int num;
}stu1,*p;
p=&stu1;
A、 stu1.age
B、 student.age
C、 p->age
D、(*p).age
13.設有如下定義:
struck sk
{ int a;
float b;
}data;
int *p;
若要使P指向data中的a域,正確的賦值語句是 C
A、 p=&a;
B、 p=datA、a;
C、p=&datA、a;
D、*p=datA、a;
14.設有以下說明語句:
typedef struct stu
{ int a;
float b;
} stutype;
則下面敘述中錯誤的是( D )。
A、struct是結構類型的關鍵字
B、struct stu是用戶定義的結構類型
C、a和b都是結構成員名
D、stutype是用戶定義的.結構體變量名
15.語句int *p;說明了 C 。
A、p是指向一維數組的指針
B、p是指向函數的指針,該函數返回一int型數據
C、p是指向int型數據的指針
D、p是函數名,該函數返回一指向int型數據的指針
16、以下語句的輸出結果是( D)。
int a=-1,b=4,k;
k=(+ +a<0)&&!(b - -<=0);
printf("%d,%d,%d ",k,a,b);
A. 1,0,4
B. 1,0,3
C. 0,0,3
D. 0,0,4
17、下列程序的輸出結果是(D )。
char *p1="abcd", *p2="ABCD", str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
A. xyabcAB
B. abcABz
C. ABabcz
D. xycdBCD
18、執行下面的程序后,a的值是(B )。
define SQR(X) X*X
main( )
{ int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d ",a); }
A. 10
B. 1
C. 9
D. 0
19、設A為存放(短)整型的一維數組,如果A的首地址為P,那么A中第i 個元素的地址為( B)。
A.P+i*2
B. P+(i-1)*2
C. P+(i-1)
D. P+i
20、下列程序執行后輸出的結果是( A)。
int d=1;
fun (int p)
{ int d=5;
d + =p + +;
printf("%d,",d); }
main( )
{ int a=3;
fun(a);
d + = a + +;
printf("%d ",d); }
A. 8, 4
B. 9, 6
C. 9, 4
D. 8, 5
21、表達式:10!=9的值是(D )。
A. true
B. 非零值
C. 0
D. 1
22、若有說明: int i,j=7, *p=&i;, 則與i=j; 等價的語句是( B)。
A. i= *p;
B. *p=*&j;
C. i=&j;
D. i=* *p;
23、不能把字符串:Hello!賦給數組b的語句是( B)。
A. char b[10]={’H’,’e’,’l’,’l’,’o’,’!’};
B. char b[10]; b="Hello!";
C. char b[10]; strcpy(b,"Hello!");
D.char b[10]="Hello!";
24、在C程序中有如下語句:char *func(int x,int y); 它是(C )。
A. 對函數func的定義。
B. 對函數func的調用。
C.對函數func的原型說明。
D. 不合法的。
25、以下程序的輸出結果是( D)。
char str[15]=”hello!”;
printf(“%d ”,strlen(str));
A. 15
B. 14
C. 7
D. 6
26[單選題] 以下敘述中正確的是( )
A.用戶自己定義的函數只能調用庫函數
B.實用的C語言源程序總是由一個或多個函數組成
C.不同函數的形式參數不能使用相同名稱的標識符
D.在C語言的函數內部,可以定義局部嵌套函數
參考答案:B
參考解析:A選項中,”用戶自己定義的函數只能調用庫函數”描述是不正確的,也可以調用自定義函數;C選項中,對于不同函數的形式參數可以使用相同名稱的標識符;D選項中,關于函數的定義不可以嵌套,但函數的調用可以嵌套。因此B選項正確。
27[單選題] 以下關于C語言數據類型使用的敘述中錯誤的是( )。
A.若要處理如“人員信息”等含有不同類型的相關數據,應自定義結構體類型
B.若要保存帶有多位小數的數據,可使用雙精度類型
C.若只處理“真”和“假”兩種邏輯值,應使用邏輯類型
D.整數類型表示的自然數是準確無誤差的
參考答案:C
參考解析:C語言中沒有邏輯類型,所以c錯誤。若要保存帶有多位小數的數據,可以用單精度類型也可以用雙精度類型。處理包含不同類型的相關數據可以定義為結構體類型。整數類型可以無誤差的表示自然數。
28[單選題] 下面選項中關于編譯預處理的敘述正確的是
A.預處理命令行必須使用分號結尾
B.凡是以#號開頭的行,都被稱為編譯預處理命令行
C.預處理命令行不能出現在程序的最后一行
D.預處理命令行的作用域是到最近的函數結束處
參考答案:B
參考解析:本題考查預編譯的預編譯處理命令行,預處理命令行不能以分號結尾,所以A選項錯誤,預處理命令行可以出現在程序的最后一行,預處理命令行作用域是整個文件。
29[單選題] 有以下程序
程序的輸出結果是
A.0B.1C.9D.10
參考答案:B
參考解析:本題考查宏定義,宏定義只是做個簡單的替換。執行SQR(k+m)/SQR(k+m)=k+m*k+m/k+m}k+m=15/2,a/=SQR(k+m)/SQR(k+1TI)的結果為1,選項B正確。
30[單選題] 設--X樹共有150個結點,其中度為l的結點有l0個,則該---X樹中的葉子結點數為( )。
A.71B.70C.69D.不可能有這樣的二叉樹
參考答案:D
參考解析:在樹結構中,一個結點所擁有的后件個數稱為該結點的度,所有結點中最大的度稱為樹的度。對任何一棵二叉樹,度為0的結點總是比度為2的結點多一個。如果有一棵二叉樹,結點總數為l50,假設度為0的結點個數為n,則有n+10+n一1=150,n=70.5,由于結點個數必須是整數,所以不可能有題目中這樣的二叉樹。故選擇D選項。
31[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.2.3B.1,3C.1,4D.1,2
參考答案:B
參考解析:在f(int+P,int 4 q)函數中,執行P=P+1是將P所對應的地址加1,而0 q=+q+1是將q所指向的n的地址所對應的值加1,所以m的得知所對應的值沒有變,而n的值則為3了。因此B選項正確。
32[單選題] 以下選項中,能用作用戶標識符的是( )。
A.-0-B.8-;8C.voidD.unsigned
參考答案:A
參考解析:C語言中標識符由字母、下劃線、數字組成,且開頭必須是字母或下劃線。另外,關鍵字不能作為標識符。8中以數字8開頭,所以錯誤。c與D中用的是關鍵字void與unsigned,所以錯誤。
33[單選題] 以下敘述正確的是( )。
A.表達式sizeof(FILE*)==sizeof(int*)的值為真
B.文件指針的值是一個整數,它的值一定小于文件字節數
C.文件指針的值是所指文件的當前讀取位置
D.使用fscanf函數可以向任意類型的文件中寫入任意數量的字符
參考答案:A
參考解析:
slzeof(FILE})=4,因為file·為指針,指針的大小4,sizeof(int·)=4,理由同前面。文件指針的值是地址,是一個16進制的數,它的值不一定小于文件字節數,因此選項8錯誤。文件指針是所指文件的當前讀取位置,而不是文件指針的值因此選項C錯誤。mgscanf(FILE-stream,constchar}format,[argument…]fmanf函數可以向任意類型的文件,寫入任意數量不能超過系統的緩沖區,寫文件先寫入緩沖區,最后一起寫入文件,因此選項D錯誤。答案為A選項。
C語言模擬試題練習2
一、選擇題(每小題1分,共40分)
1、 以下函數實現按每行8個輸出W所指數組中的數據:
在橫線處應填人的語句是( )。
A.if(i/8==0)printf(” ”);
B.if(i/8==O)continue;
C.if(i%8==0)prinff(’’ ”);
D.if(i%8==0)continue;
2、 有以下程序:
在VC 6.0平臺上編譯運行,程序運行后的輸出結果是( )。
A.10,6
B.4,4
C.2,4
D.4。8
3、 有以下函數:
以下關于aaa函數功能敘述正確的是( )。
A.將串s復制到串t
B.比較兩個串的大小
C.求字符串s的長度
D.求字符串s所占字節數
4、 在以下給出的表達式中,與while(E)中的(E)不等價的表達式是( )。
5、 有以下程序:
程序運行后的輸出結果是( )。
A.7
B.10
C.8
D.9
6、 有以下程序:
程序運行后的輸出結果是( )。
A.1,1,2,0
B.0,0,0,3
C.編譯有錯
D.0,1,2,0
7、 已知字符‘A’的ASCII代碼值是65,字符變量cl的值是‘A’,c2的值是‘D’。則執行語句printf(”%d,%d”,cl,c2—2);的輸出結果是( )。
A.65,68
B.A,68
C.A,B
D.65,66
8、下列敘述中正確的是( )。
A.線性表的鏈式存儲結構與順序存儲結構所需要的存儲空間是相同的
B.線性表的鏈式存儲結構所需要的存儲空間一般要多于順序存儲結構
C.線性表的鏈式存儲結構所需要的存儲空間一般要少于順序存儲結構
D.線性表的鏈式存儲結構與順序存儲結構在存儲空間的需求上沒有可比性
9、 以下選項中正確的定義語句是( )。
A.double,a,b;
B.double a=b=7;
C.double a;b;
D.double a=7,b=7;
10、 以下關于C語言數據類型使用的敘述中錯誤的是( )。
A.若要處理如“人員信息”等含有不同類型的相關數據,應自定義結構體類型
B.若要保存帶有多位小數的數據,可使用雙精度類型
C.若只處理“真”和“假”兩種邏輯值,應使用邏輯類型
D.整數類型表示的自然數是準確無誤差的 11、 下列關于棧的敘述正確的是( )。
A.棧按“先進先出”組織數據,
B.棧按“先進后出”組織數據
C.只能在棧底插入數據
D.不能刪除數據
12、 以下敘述中正確的是( )。
A.c語言規定必須用main作為主函數名,程序將從此開始執行
B.可以在程序中由用戶指定任意一個函數作為主函數,程序將從此開始執行
C.c語言程序將從源程序中第一個函數開始執行、
D.main的各種大小寫拼寫形式都可以作為主函數名,如MAIN,Main等
13、 有以下程序:
程序運行后的輸出結果是( )。
A.let=4
B.m=2
C.m=6
D.m=5
14、 對于一個正常運行的C程序,以下敘述中正確的是( )。
A.程序的執行總是從main函數開始,在程序的最后一個函數中結束
B.程序的執行總是從程序的第一個函數開始,在main函數結束.
C.程序的執行總是從main函數開始、
D.程序的執行總是從程序的第一個函數開始,在程序的最后一個函數中結束
15、 下列選項中屬于面向對象設計方法主要特征的是( )。
A.繼承
B.自頂向下
C.模塊化
D.逐步求精
16、 有以下程序:
程序運行后的輸出結果是( )。
A.1,2,3,0,0,0,0,0,0,0,
B.1,2,3,1,2,3,0,0,0,0,
C.123,0,0,0,0,123,0,0,0,0,
D.1,2,3,0,0,1,2,3,0,0,
17、 有三個關系R、S和T如下:
則由關系R和s得到關系T的操作是( )。
A.自然連接
B.并
C.交
D.差
18、 有三個關系R、S和T如下:
則由關系R和s得到關系T的操作是( )。
A.自然連接
B.交
C.投影
D.并
19、 對長度為n的線性表排序,在最壞情況下,比較次數不是n(n-1)/2的排序方法是( )。
A.快速排序
B.冒泡排序
C.直接插入排序
D.堆排序
20、 以下敘述中正確的是( )。;
A.當對文件的讀(寫)操作完成之后,必須將它關閉,否則可能導致數據丟失
B.打開一個已存在的文件并進行了寫操作后,原有文件中的全部數據必定被覆蓋
C.在一個程序中當對文件進行了寫操作后,必須先關閉該文件然后再打開,才能讀到第1個數據
D.c語言中的文件是流式文件,因此只能順序存取數據
21、 有以下程序:
程序運行后的輸出結果是( )。
A.4
B.34
C.31
D.32
22、 下列敘述中正確的是( )。
A.在棧中,棧中元素隨棧底指針與棧頂指針的變化而動態變化
B.在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動態變化
C.在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動態變化
D.以上說法都不正確
23、 設文件指針fp已定義,執行語句fp=fopen(”61e”,”W”);后,以下針對文本文件file操作敘述的選項中正確的是( )。
A.只能寫不能讀
B.寫操作結束后可以從頭開始讀
C.可以在原有內容后追加寫
D.可以隨意讀和寫
24、 讀取二進制文件的函數調用形式為:fread(buffer,size,count,fp);,其中buffer代表的是( )。
A.一個內存塊的`字節數
B.一個整型變量,代表待讀取的數據的.字節數
C.一個文件指針,指向待讀取的文件
D.一個內存塊的首地址,代表讀人數據存放的地址
25、 若函數調用時的實參為變量時,以下關于函數形參和實參的敘述中正確的是( )。
A.函數的形參和實參分別占用不同的存儲單元
B.形參只是形式上的存在,不占用具體存儲單元
C.同名的實參和形參占同一存儲單元
D.函數的實參和其對應的形參共占同一存儲單元
26、 下列排序方法中,最壞情況下比較次數最少的是( )。
A.冒泡排序
B.簡單選擇排序
C.直接插入排序
D.堆排序
27、 下列關于數據庫設計的敘述中,正確的是( )。
A.在需求分析階段建立數據字典
B.在概念設計階段建立數據字典
C.在邏輯設計階段建立數據字典
D.在物理設計階段建立數據字典
28、 有以下程序:
程序執行后的輸出結果是( )。
A.y=OS)y=一1
B.0
C.y=1
D.while構成無限循環
29、 在黑盒測試方法中,設計測試用例的主要根據是( )。
A.程序內部邏輯
B.程序外部功能
C.程序數據結構
D.程序流程圖
30、 支持子程序調用的數據結構是( )。
A.棧
B.樹
C.隊列
D.二叉樹 31、 有三個關系R、s和T如下:
由關系R和s通過運算得到關系T,則所使用的運算為( )。
A.并
B.自然連接
C.笛卡爾積
D.交
32、 以下選項中,能用作用戶標識符的是( )。
A.-0-
B.8-;8
C.void
D.unsigned
33、 若有定義語句:int X=10;,則表達式x-=x+x的值為( )。
A.0
B.-20
C.-10
D.10
34、 有以下計算公式
若程序前面已在命令行中包含文件,不能夠正確計算上述公式的程序段是( )。
35、 在c語言中,只有在使用時才占用內存單元的變量,其存儲類型是( )。
A.auto和static
B.extern和register
C.auto和register
D.static和register
36、 有以下程序:
程序執行后的輸出結果是( )。
A.55.
B.50
C.45
D.60
37、 下列函數的功能是( )。
A.將a所指字符串賦給b所指空間
B.使指針b指向a所指字符串
C.將a所指字符串和b所指字符串進行比較
D.檢查a和b所指字符串中是否有‘、O’
38、 下面描述中錯誤的是( )。
A.系統總體結構圖支持軟件系統的詳細設計
B.軟件設計是將軟件需求轉換為軟件表示的過程
C.數據結構與數據庫設計是軟件設計的任務之一
D.PAD圖是軟件詳細設計的表示工具
39、 有以下程序:
程序運行后的輸出結果是( )。
A.0
B.9
C.6
D.8
40、 有以下程序:
程序運行后的輸出結果是( )。
A.500
B.401
C.503
D.1404
二、程序填空題(共18分)
41、下列給定程序中,函數fun的功能是:將形參n中個位上為偶數的數取出,并按原來從高位到低位相反的順序組成一個新數,作為函數值返回。
例如,輸入一個整數27638496,函數返回值為64862。
請在程序的下劃線處填入正確的內容并將下劃線刪除,使程序得出正確的結果。注意:部分源程序在文件BLANKl.C中。
不得增行或刪行,也不得更改程序的結構!include
unsigned long fun(unsigned long n){unsigned long x=0;int t;
三、程序改錯題(共24分)
42、下列給定程序中函數fun的功能是:將P所指字符串中的所有字符復制到b中,要求每復制三個字符之后插入一個空格。
例如,若給a輸入字符串:ABCDEFGKHHK,調用函數后,字符數組b中的內容為:ABC DEF GHI JK。請改正程序中的錯誤,使它能得出正確的結果。
注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結構。
四、程序設計題(共18分)
43、編寫函數fun,其功能是:將所有大于1小于整數m的非素數存人XX所指數組中,非素數的個數通過k返回。
例如,若輸入17,則應輸出:4 6 8 9 10 12 14 15 16。注意:部分源程序在文件PROGl.C中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
【C語言模擬試題練習】相關文章:
C語言練習試題07-01
2017年C語言考試題模擬練習12-02
C語言模擬試題及答案06-17
C語言模擬試題及答案03-26
C語言考前模擬試題03-25
C語言精選模擬練習題05-01
C語言考試試題練習02-27
C語言考前練習試題及答案02-27
C語言臨考練習試題06-26