2015年計算機二級考試《C語言》提高練習題匯總三份
參考解析:只有當3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數只有42,故選擇c選項。
2[填空題]數組xx[M]保存著一組3位數的無符號正整數,其元素的個數通過變量m傳人函數proc()。請補充函數proc(),該函數的功能是:從數組xx中找出十位和百位的數字相等的所有無符號整數,結果保存在數組yy中,其個數由函數proc()返回。
例如,當xx[8]={234 339 666 850 220 448 528 440)時,bb[5]={339 666 220 448 440}。
注意:部分源程序給出如下。
請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的橫線上填入所編寫的若干表達式或語句。
試題程序:
參考解析:
【解析】要找出數組xx中十位和百位數字相等的所有整數,首先要得到數組中每一個整數的十位和百位數字,因此,【1】處填“(xx[i]/10)%10”;如果十位和百位數字相等,則將該整數放在數組bb ee,因此,【2】處填“bb[n++]=xx[i]”;符合條件的整數個數放在變量n中,返回給主函數,因此,【3】處填“n”。
3[單選題] 有下列程序:
程序執行后的輸出結果是( )。
A.45B.20C.25 D.36
參考解析:在for循環語句中自變量i從0開始,每次自加2,執行s+一*(t+i)語句,因為C語言規定數組名做表達式相當于數組的首地址,也就是第一個元素的地址。因此,*(t+i)代表數組的第i+1個元素,所以程序運行的結果是1+3+5+7+9=25,即變量S的值等于25。
4[簡答題]下列給定程序中,函數proc()的功能是:根據整型形參n,計算如下公式的值。
例如,若n=12,則應輸出0.618026。
請修改程序中的錯誤,使它能得出正確的結果。
注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。
試題程序:
參考解析:
(1)錯誤:int proc(int n)
正確:float proc(int n)
(2)錯誤:for(i=2;i
正確:for(i=2;i<=n;i++)
由主函數中的調用以及函數proc()的返回值可知,函數proc()的返回值類型應為float型數據。因此,“intproc(int n)”應改為“float proc(int n)”;由題目中所給公式可知,循環中應該包含n的值,因此,“for(i=2;i
5[單選題] 以下敘述中正確的是( )。
A.do-while語句構成的循環不能用其他語句構成的循環來代替
B.do-while語句構成的循環只能用break語句退出
C.用do-while語句構成循環時,只有在while后的表達式為非零時結束循環
D.用do-while語句構成循環時,只有在while后的表達式為零時結束循環
參考答案:D
參考解析:選項A,可以用for循環代替;選項B,不滿足條件時即條件的邏輯值為假(0)時退出,break也可以;選項C,while(條件),條件為真時進行循環,為假(0)時退出。
6[單選題] 下面程序的運行結果是( )。
A.1B.2C.3D.4
參考答案:B
參考解析:本題中del(char*s)函數實現的功能是逐個讀入s數組中的字符,如果遇到數字。則將數字存在s中,遇到非數字字符則跳過。所以最后輸出的應該是字符串s中所有數字的個數。
7[單選題] 若有以下程序段
則程序段的輸出結果是( )
A.5.170000B.5.175000C.5.169000D.5.168000
參考解析:本題考查強制類型轉換與輸出格式。%f的輸出格式是以帶小數點的數學形式輸出浮點數。首先計算x*1000,結果為5168.94然后+0.5,結果為5169.44。然后進行強制類型轉換,轉換成整型為5169,然后除以雙精度數據1000,結果也為雙精度數據5.169,輸出時按照%f的格式輸出,所以輸出結果為5.169000。
8[單選題] 表達式'5'一'1'的值是( )。
A.整數4B.字符4C.表達式不合法D.字符6
參考答案:A
參考解析:在C語言中,字符都是變為其對應的ASCⅡ碼值來參加算術運算的,但字符間的相對位置關系還是不變的,字符5和字符1的ASCⅡ碼值相差仍是4。
9[單選題] 有以下程序:
程序的輸出結果是( )。
A.62B.63C.33D.32
參考答案:D
參考解析:本題考查while循環。當i<20時,進入while循環體,循環體內的for循環實現的功能是i%l0==0,也就是說當i值為0或者10的倍數的時候,跳出循環,執行i+=11;a+=i;,若i值不是l0的倍數,則一直執行for循環i--。①判斷i=0時,執行i+=11;a+=i;,i=11,a=11;②判斷i=10時,跳出for循環,執行i+=11;a+=i;,i=21,a=32;③判斷i=21>20,不符合題意,結束循環。
10[單選題] 若有說明語句:double*P,a;則通過scanf語句正確給輸入項讀人數據的程序段是( )。
A.
B.
C.
D.
參考答案:D
參考解析:double*P,a定義了一個指向雙精度型的指針變量P和雙精度型變量a,p=&a表示將變量a的地址賦給指針變量P;scanf(”%If”,p)表示用鍵盤輸入的數賦給指針變量P所指向的地址單元中,scanf()函數要求在輸入double型數據時,格式控制符必須用%lf。否則,數據不能正確輸入。所以選項D正確。