2015年9月計算機二級《C語言》模擬卷(2)
29
若執行以上程序從鍵盤上輸入3和4時,則輸出結果是( )。
A.14B.16C.18 D.20
參考答案:B
參考解析:scanf(''%d,%d'',&a,&b);//a=3,b=4s=a;//s=3if(s=b)//此處先將b(b=4賦給s,則s=4 s=b返回值為4s*=s://s=s*s=16因此輸出結果為16。正確答案為B。
30設變量已正確定義,則以下能正確計算f=n!的程序是( )。
A.
B.
C.
D.
參考答案:D
參考解析:由n!的數字定義可知n!=n*(n-1)*(n 2)*…*1。在選項A中,由于f的初值為0,在for循環語句中,f依次乘以1,2,3,…,n,最后計算得到f=n!=0,所以選項A不正確。在選項B中,f的初值為1,在for循環語句中,f依次乘以1,2,3,…,(n-1),最后計算得到f=(n-1)!,所以選項B不正確。在選項C中,f的初值為l,在for循環語句中,f依次乘以n,n+1,n+2,…,所以選項C不正確。在選項D中,f的初值為1,在for循環語句中,f依次乘以n,n-1,n-2,…,2,最后計算得到f=n!,所以選項D正確。
31下列敘述中正確的是( )。
A.算法的執行效率與數據存儲結構無關
B.算法的空間復雜度是指算法程序中指令(或語句)的條數
C.算法的有窮性是指算法必須能在執行有限個步驟之后終止
D.以上3種描述都不對
參考答案:C
參考解析:在程序設計中,算法執行效率與數據的存儲結構密切相關。算法的空間復雜度是指算法執行過程中所需存儲空間。
32已有定義:char c;,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字母的表達式是( )。
A.
B.
C.
D.
參考答案:B
參考解析:選項B先計算關系表達式“ˊAˊ<=c”的值是0還是1,再比較該值與字符ˊzˊ之間的大小關系,不能實現題目所要求的功能。
33
=r;”,則以下正確的敘述是( )。
A.兩個*P含義相同,都說明給指針變量P賦值
B.在“double r=99,*p=&r;”中,把r的地址賦給了p所指的存儲單元
C.語句“*p=r;”把變量r的值賦給指針變量p
D.語句“*p=r;”取變量r的值放回r中
參考答案:B
參考解析:在定義*p=&r時,是表示r的地址賦給了P所指的存儲單元,因此選項B正確。
34以下關于字符串的敘述中正確的是( )。
A.C語言中有字符串類型的常量和變量
B.兩個字符串中的字符個數相同時才能進行字符串大小的比較
C.可以用關系運算符對字符串的大小進行比較
D.空串一定比空格打頭的字符串小
參考答案:D
參考解析:字符串常量是由雙引號括起來的一串字符,所以A選項錯誤;任意兩個字符串的大小比較要調用字符串比較函數strcmp(sl,s2)來進行,所以選項B和C錯誤。
35以下程序的輸出結果是( )。
A.8,7,8,7B.7。8,7,8C.8,7,7,8 D.7,8,8,7
參考答案:C
參考解析:在“r=P;p=q;q=r;”三個語句是表示P與q交換,經過交換后P指向b的地址,q指向a的地址,因此最后輸出為8,7,7,8,故選擇C選項。
36有下列程序:
執行后的結果是( )。
A.輸出字符a的ASCⅡ碼B.輸出字符C的ASCⅡ碼C.輸出字符CD.程序出錯
參考答案:D
參考解析:因為字符數組s[];中的數組名S表示的是一個地址常量。所以語句“s+=2;”不能將指針在當前位置的基礎上再向后移動兩位,因而程序編譯時出錯。
37有以下程序
程序的運行結果是( )。
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,l23,0,0,0,0,
D.1,2,3,0,0,1,2,3,0,0,
參考答案:D
參考解析:本題程序首先用函數fopen()以“wb”的方式開打文件“d2.dat”,然后調用兩次fwrite函數將數組a的5個元素,依次輸出到文件fp中,共l0個字節,關閉文件。再次打開文件,使用文件指針指向文件的開頭,調用fread函數從文件印中讀取這10個字節的數據到數組a中。
38有下列程序:
執行后的輸出結果是( )。
A.5,5B.5.1lC.11,11D.11,5
參考答案:B
參考解析:子函數fun(int x,int y),將變量in和i聲明為局部靜態變量,因此第l次調用主函數后,局部靜態變量In和i的值分別為5和3,第1次函數調用結束時,它們的值不釋放保持不變,所以第2次調用時,局部靜態變量m和i的初始值分別為5和3,即在執行“i+=m+1”時,i的值為9,因此最終m的值為11。
39有下列程序:
程序的輸出結果是( )。
A.1B.2 0C.1-4D.死循環
參考答案:C
參考解析:本題考查do-while循環。先執行d0的內容,也就是printf語句,x=x-4=1,輸出1,判斷while循環的控制條件,--x=0,則!(--x)為非零,循環條件成立,執行下一次循環;x=x-4=-4,輸出-4,判斷while循環的條件,--x=-5,則!(--x)為零,循環條件不成立,結束循環。
40標準庫函數fgets(s,n,file)的功能是( )。
A.從文件file中讀取長度為n的字符串存入字符數組S由
B.從文件file中讀取長度不超過n-1個字符的字符串放到字符數組S中
C.從文件file中讀到n個字符串存入字符數組s中
D.從文件file中讀取長度為n-1個字符的字符串存人字符數組s中
參考答案:B
參考解析:本題考查fgets()函數的使用調用形式:fgets(S,n,fp)。fgets函數參數說明:“s”可以是一個字符數組名,也可以是指向字符串的指針;“n”為要讀取的最多的字符個數;“fp”是指向該文件型指針。fgets函數的功能是:從fp所指向的文件中讀取長度不超過n-1個字符的字符串,并將該字符串放到字符數組s中,讀入字符串后會自動在字符串末尾加入″\0″結束符。表示字符串結束。
二、程序填空題
41請補充函數proc(),該函數的功能是判斷一個數是否為素數。該數是素數時,函數返回字符串:“yes!”,否則函數返回字符串:“no!”,并在主函數中輸出。
注意:部分源程序給出如下。
請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的橫線上填入所編寫的若干表達式或語句。
試題程序:
參考解析:
【l】char*proc(int n)【2】2【3】n%i==0
【解析】由整個程序可知,【1】應為函數proc()的函數頭。根據主函數中的調用可知形參的個數和類型,因此,【1】處填“char”proc(int n)”。素數為只能被1和它本身整除的整數。要判斷一個整數是否為素數,要看它是否能被除1和小于它本身之外的數整除,因此,【2】處填“2”;【3】處填“n%i==0”。
三、程序改錯題
42給定程序中,函數proc()的功能是:使數組中的元素的值縮小5倍。
請修改程序中的錯誤,使它能得出正確的結果。
注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。
試題程序:
參考解析:
四、程序設計題
43請編寫函數proc(),其功能是:計算并輸出給定10個數的方差。
例如,給定的10個數為88.0,89.5,54.0,78.5,89.0,63.0,85.7,83.0,77.0,83.0,則輸出為S=11.195271。
注意:部分源程序給出如下。
請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填人所編寫的若干語句。
試題程序:
參考解析:
【解析】題目要求求方差,因此首先我們應通過循環求得其平均數,然后通過循環來求其平方差,最后求其方差,把方差返回到主函數中。