第 1 頁:選擇題 |
第 3 頁:程序修改題 |
第 4 頁:程序設計題 |
一、選擇題(每小題1分,共40分)
1[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.12 7
B.12 12
C.11 11
D.11 7
參考答案:D
參考解析:本題考查宏定義的用法,宏定義只是做個簡單的替換,所以本題中執(zhí)行f(2)=(2*N+1)=11,執(zhí)行f(1+1)=(1+1*N+1)=7。選項D正確。
2[單選題] 有以下程序:
執(zhí)行后的輸出結果是( )。
A.28,0
B.28,1
C.16,0
D.16,-1
參考答案:D
參考解析:分析程序可知,d0語句1…whi1e(語句2),每次循環(huán)在語句1中a的值減1,在語句2中判斷a的值后,a的值又減1,所以在每次循環(huán)體執(zhí)行完后,b累加的a的值分別為7,5,3,1,a的值分別為6,4,2,0,最后當a為O時,whi1e判斷條件為fa1se,此時a的值再減1,為-1,到此循環(huán)結束,所以b的值為16,a的值為-1,故答案選D。
3[單選題] 設棧的存儲空間為S(1:50),初始狀態(tài)為top=51,F(xiàn)經過一系列正常的人棧與退棧操作后,top=50,則棧中的元素個數(shù)為( )。
A.1
B.0
C.50
D.49
參考答案:A
參考解析:棧是一種特殊的線性表,它所有的插入與刪除都限定在表的同一端進行。入棧運算即在棧頂位置插人一個新元素,退棧運算即取出棧頂元素賦予指定變量。棧為空時,棧頂指針top=0,經過入棧和退棧運算,指針始終指向棧頂元素。初始狀態(tài)為top=51,當top=50時,則棧中S(50:51)存儲著元素,51-50=1.元素個數(shù)為l。故本題答案為A選項。
4[單選題] 程序執(zhí)行后的輸出結果是( )。
A.1
B.2
C.3
D.4
參考答案:C
參考解析:該程序中int * p1=&a,*p2=&b,*P=&c;指定義三個指針變量,并賦值,即使p1指向a;p2指向 b;p指向c。*P=*p1*(*p2);該條語句是給P所指的存1儲單元c賦值,就是p1所指的存儲單元的值,即a的值,與p2所指的存儲單元b的值相乘,也就是c=a×b,等價于c=1×3=3;因此C選項正確。
5[單選題] 以下不能使指針s所指存儲單元的值增1的選項是( )。
A.(*s)++;
B.*s=*s+1;
C.*s++;
D.++*s;
參考答案:C
參考解析:選項A首先獲取s指向的存儲單元的值,使用完該值后,將該值自增1,正確;選項B首先獲取s指向的存儲單元的值,并將該值加1后重新賦給該存儲單元,正確;選項D首先獲取s指向的存儲單元的值,然后將該值自增1,再使用加1后的新值,正確;選項C中,*s++的含義是首先獲取s指向的存儲單元的值,然后再將指針s向后移動一位,所以答案為C。
6[單選題] 以下選項中關于程序模塊化的敘述錯誤的是( )。
A.可采用自底向上、逐步細化的設計方法把若干獨立模塊組裝成所要求的程序
B.把程序分成若干相對獨立、功能單一的模塊,可便于重復使用這些模塊
C.把程序分成若干相對獨立的模塊,可便于編碼和調試
D.可采用自頂向下、逐步細化的設計方法把若干獨立模塊組裝成所要求的程序
參考答案:A
參考解析:程序模塊化思想中,可以采用自頂向下、逐步細化的方法。所以選項A中“自底向上”的說法是錯誤的。
7[單選題] 以下選項中,當X為大于1的奇數(shù)時,值為0的表達式是( ):
A.x%2==0
B.x/2
C.x%2!=0
D.x%2==1
參考答案:A
參考解析:算術運算符的優(yōu)先級高于關系運算符的優(yōu)先級,所以當X為大于1的奇數(shù)時,A選項的值為假,即0。B選項的值為不定值,但絕對不是0。C選項的值為真,即1。D選項的值為真,即1。
8[單選題] 若有定義語句:
int a[2][3],*p[3];
則以下語句中正確的是( )。
A.p=a;
B.p[0]=8;
C.p[0]=&a[1][2];
D.p[1]=&a;
參考答案:C
參考解析:A選項錯誤,因為p是指向一個指針數(shù)組,作為數(shù)組名,不能指向別的地方。B選項錯誤,因為p[0]是一個int指針,也就是int*;而a是一個指向指針的指針int**。C選項正確,因為p[0]是一個int*a[1][2]是int,&a[1][2]是int*,類型吻合。D選項錯誤,因為a作為數(shù)組名,不能取地址。即使能取,P[1]是int*,&a是int***,類型不對。因此C選項正確。
9[單選題] 以下不合法的字符常量是( )。
A.'\\'
B.'\"'
C.'\018'
D.'\xcc'
參考答案:C
參考解析:轉義字符中,八進制的表示形式為\ddd,但是八進制中不能包含數(shù)字8,所以C選項不合法。
10[單選題] 設有以下語句:
則下面敘述中正確的是( )。
A.CIN是struct TT類型的變量
B.TT是struct類型的變量
C.可以用TT定義結構體變量
D.可以用CIN定義結構體變量
參考答案:D
參考解析:本題考查typedef重新聲明一種結構體類型,其中CIN為結構體類型名,而不是結構體變量,所以D選項正確。
11[單選題] 有以下程序:
執(zhí)行后的輸出結果是( )。
A.678
B.666
C.654
D.456
參考答案:C
參考解析:由于main函數(shù)for循環(huán)中k的取值為0,1,2,所以for循環(huán)三次調用fun()函數(shù),每次調用函數(shù)fun,形參a的值為2(實參a傳人),局部變量b初始化為2(fun函數(shù)中初始化),靜態(tài)局部變量c保留上一次函數(shù)調用結束后的值,所以第一次調用fun(),形參a=2,b=2,c=2,然后執(zhí)行b自增1,c自減1,返回值為:2+3+l=6;第二次調用fun(),形參a=2,b=2,c=1,然后執(zhí)行b自增1,c自減1,返回值為:2+3+0=5;第三次調用fun(),形參a=2,b=2,c=0,然后執(zhí)行b自增1,c自減1,返回值為:2+3-1=4,所以結果為:654,答案為C。
12[單選題] 有以下程序::
程序運行后的輸出結果是( )。
A.0
B.1
C.4
D.8
參考答案:C
參考解析:fun函數(shù)中的x為靜態(tài)局部變量,占用固定的內存單元,下一次調用時仍可保留上次調用時的值。也就是說,如果多次調用fun函數(shù),x的定義只在第一次調用時有效,從第二次調用開始,X的定義相當于不存在,直接使用X的值。主函數(shù)中調用兩次fun函數(shù):第一次調用:x=1,x=x*2=2,s=2;第二次調用:(直接用上次x的值)x=x*2=4,s=4。因此C選項正確。
13[單選題] 若要求定義具有10個int型元素的一維數(shù)組a,則以下定義語句中錯誤的是( )。
A.int a[5+5];
B.int n=10,a[n];
C.#define n 5 int a[2*n];
D.#define N 10int a[N];
參考答案:B
參考解析:一維數(shù)組的定義方式為:類型說明符數(shù)組名[常量表達式];注意定義數(shù)組時,元素個數(shù)不能是變量。因此應該選B選項。
14[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.7
B.8
C.9
D.10
參考答案:C
參考解析:首先main函數(shù)中的局部變量a和f()函數(shù)中的靜態(tài)局部變量a的作用域都只限在其所在的函數(shù)中,相互之間不影響,看作兩個不同的變量即可。另外,f()函數(shù)中的靜態(tài)局部變量a只在第一次調用f()函數(shù)時初始化一次,其他調用都會保留上一次調用結束時的值。分析main函數(shù)可知,第一次調用時將f(a)的返回值賦給s,所以語句可以改寫為:s=f(a)+f(a),即main函數(shù)中調用兩次f(a),傳人的參數(shù)a取值都為3,第一次調用時,靜態(tài)局部變量初始化為1,所以n=4并返回,a自增為2;第二次調用時靜態(tài)局部變量a取上一次調用結束時的值2,所以n=5并返回,a自增為3。所以在main()函數(shù)中,s=4+5=9,所以函數(shù)執(zhí)行完輸出結果為9,答案為C。
15[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.0
B.-1
C.1
D.7
參考答案:B
參考解析:a--的含義是先用后減1,所以當a的值為0時,跳出循環(huán),但是仍要執(zhí)行a--,a的值變?yōu)?1。
16[單選題] 以下選項中能正確定義二維數(shù)組的選項是( )。
A.double a[][3]={2*3};
B.double a[][3];
C.double a[][3]={};
D.double a[2][3]={{1.0},{2.0},{3.0,4.0}};
參考答案:A
參考解析:如果第一維的長度沒有指定.則定義的同時需要完成初始化,否則不知道分配多大的內存空間給它,所以選項B、C錯誤;二維數(shù)組a[2][3]中只有兩個元素,都是一維數(shù)組,一維下標最大只能是a[1],所以選項D錯誤;若完成初始化的二維數(shù)組,第一維的長度沒有指定,則第一維的大小按如下規(guī)則確定:若初值個數(shù)能被第二維大小整除,所得的商就是第一維的大小;若不能整除,則所得的商加l作為第一維的大小,所以選項A相當于:double a[1][3]={6};其中a[0][0]=6,其他元素賦值0,故選項A正確,答案為A。
17[單選題] 有定義語句:int i;char s1[10],s2[10]=“Program”;則能正確給s1數(shù)組賦字符串的語句是( )。
參考答案:A
參考解析:首先字符數(shù)組只有在初始化的時候整體賦值,否則只能對字符數(shù)組逐個賦值,所以選項B錯誤;字符數(shù)組名s1、s2是常量,不能改變,故選項C錯誤;字符串 “Program”包含結尾的‘\0’,選項D中在處理到s2[i]=‘\0’時,跳出循環(huán),未將‘\0’賦給s1,所以選項D也是錯誤的;由于“Program”包含結尾的‘\0’總共有8個字符,所以選項A是正確的,答案為A。
18[單選題] 以下敘述中正確的是( )。
A.當對文件的讀(寫)操作完成之后,必須將它關閉,否則可能導致數(shù)據(jù)丟失B)打開一個已存在的文件并進行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋
B.在一個程序中當對文件進行了寫操作后,必須先關閉該文件然后再打開,才能讀到第1個數(shù)據(jù)
C.C語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)
參考答案:A
參考解析:文件一旦使用完畢,應該使用關閉文件函數(shù)把文件關閉,以避免出現(xiàn)文件數(shù)據(jù)丟失等錯誤,所以選項A正確;若使用fopen打開文件函數(shù)打開文件時,指定打開方式為 ‘a’,則可以向文件追加信息,而不是覆蓋原文件內容,故B選項錯誤;在文件被打開后,使用文件定位函數(shù)rewind或fseek函數(shù),可以將文件指針移到文件的任何位置,所以在寫操作完成后,可以直接將文件指針定位到文件首,接著讀數(shù)據(jù),而不需要先關閉文件,再打開讀取,故C選項錯誤;使用文件定位函數(shù)可以隨機讀寫文件,故D選項錯誤。所以本題答案為A。
19[單選題] 關于程序模塊化,以下敘述錯誤的是( )。
A.程序模塊化可以提高程序運行的效率
B.程序模塊化可以提高程序編制的效率
C.程序模塊化可以提高程序代碼復用率
D.程序模塊化可以提高調試程序的效率
參考答案:A
參考解析:程序模塊化的目的是為了降低程序的復雜度,使程序設計、調試和維護等操作簡單化,降低程序的復雜度可以提高程序的編制效率和調試效率,每個模塊可以復用,提高了程序代碼的復用率,故選項B、C、D正確;程序的運行效率與程序的算法、實現(xiàn)有關,與程序模塊化無關,故答案選A。
20[單選題] 以下程序中函數(shù)f的功能是:當flag為1時,進行由小到大排序;當flag為0時,進行由大到小排序。
程序運行后的輸出結果是( )。
A.1,2,3,4,5,6,7,8,9,10,
B.3,4,5,6,7,2,1,8,9,10,
C.5,4,3,2,1,6,7,8,9,10,
D.10,9,8,7,6,5,4,3,2,1,
參考答案:B
參考解析:本題重點考察函數(shù)的參數(shù)傳遞,函數(shù)的參數(shù)傳遞分為傳值和傳地址兩種情況。本題就是結合數(shù)組考查參數(shù)傳遞的情形。函數(shù)f完成的功能是對數(shù)據(jù)進行排序,語句f(&a[2],5,0)的作用是對從a[2]開始的5個元素進行從大到小排序。注意:這里傳遞的是地址&a[2],所以排序操作可看作是直接對數(shù)組a操作,執(zhí)行后的結果為5,4,7,6,3,2,1,8,9,10。語句f(a,5,1)對數(shù)組a的前5個元素從小到大排序,排序后數(shù)組為:3,4,5,6,7,2,1,8,9,10。因此B選項正確。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |