2015年計算機二級《C語言》考前押題密卷
參考解析:水平制表符中,’\t'表示的是橫向跳若干格;選項B中,’\039’錯誤,’\039’是八進制形式表的字符,最大數為7,但其中出現'9',’,’是字符逗號;選項D中,7\n’表示的是換行。
2下列函數的類型是( )。
fun(double x)
{float y;
y=3*x-4;
return y;
}
A.intB.不確定C.voidD.float
參考答案:A
參考解析:本題考查函數值的類型。在函數調用時,盡管y的類型是float,x的類型是double,但是因為函數定義時沒有指定類型說明,系統默認函數值的類型為int型,所以計算后Y的類型是int型。
3軟件生命周期是指( )。
A.軟件產品從提出、實現、使用維護到停止使用退役的過程
B.軟件從需求分析、設計、實現到測試完成的過程
C.軟件的開發過程
D.軟件的運行維護過程
參考答案:A
參考解析:軟件生命周期(SystemsDevelopmenlLifeCyele,SDlC)是軟件的產生直到報廢的生命周期,周期內有問題定義、可行性分析、總體描述、系統設計、編碼、調試和測試、驗收與運行、維護升級到廢棄等階段。
4有如下程序:
main()
f int x=23:
do
{printf(”%d”,x——);}
while(!x);
}
該程序的執行結果是( )。
A.321B.22C.不輸出任何內容D.陷入死循環
參考解析:本題考查d0-while語句,當X一23時,執行d0后的語句,x一一的表達式值為x=x-1,此時X的值為22,而!X為0,因此while循環不成立,退出,故選擇B選項。
5已有定義:char C;,程序前面已在命令行中包含ctype.h文件,不能用于判斷e中的字符是否為大寫字母的表達式是( )。
A.isupper(c)
B.'A'<一c<='Z'
C.'A'<一c&&c<='Z'
D.c<=('z'-32)&&('a'—32)<=c
參考解析:選項B先計算關系表達式“『A7<一c”的值是0還是l,再比較該值與字符'z'之間的大小關系,不能實現題目所要求的功能。
6下列敘述中不正確的是( )。
A.在c語言中調用函數時,只能把實參的值傳送給形參,形參的值不能傳送給實參
B.在c的函數中,最好使用全局變量
C.外部變量可以在函數之間傳遞數據
D.自動變量實質上是一個函數內部的局部變量
參考解析:在程序運行中局部變量所在的函數被調用時,編譯系統根據需要臨時分配內存,調用結束空間解放;全局變量一經定義,編譯系統為其分配固定的內存單元,在程序運行的自始至終都占用固定的單元。在考慮內存未知的情況下,最好不要使用全局變量。
7定義下列結構體(聯合)數組:
struet St
{char name[15];
int age;
)a[10]={”ZHA()”,14,”WANG”,15,”LIU”,16,”
ZHANG”,17);
執行語句printf(”%d,%c”,a[2].age,*(a[3].name+2))的輸出結果為( )。
A.15,AB.16,HC.16,AD.17,H
參考答案:C
參考解析:本題考查結構體數組。a[2].age為結構體a[2]的age成員,即a[3],name為指向結構體a[3]的flame成員的第一個元素的指針,即指向“2”,(a[3].name+2)將指針后移兩位指向第三個元素“A”,*(a[3].name+2)是取指針所指向地址的內容。
8若變量已正確定義為float型,要通過輸入語句:scanf(”%f%f%f”,&a,&b,&c);給a賦值11.0,b賦值22.0,e賦值33.0,不正確的輸入形式是( )。
A.11 22 33
B.11.0,22.0,33.0
C.11.0 22.0 33.0
D.1122
參考解析:B選項中不應該加“,”號。
9以下敘述中正確的是( )。
A.在C程序中無論是整數還是實數,只要在允許的范圍內都能準確無誤地表示
B.C程序由主函數組成
C.C程序由若干函數組成
D.C程序中只允許包含一個函數
參考答案:C
參考解析:整型是沒有問題的.實型在存諸的時候,是用科學記數法存的,沒有辦法得到準確值的,是有一定誤差的。C程序是由若干的函數組成,不只有主函數,函數是c程序的基本組成部分。但是C程序中必須有一個而且只能有一個以main(主函數)開頭的函數,因為c程序的執行是從main函數開始的,所以正確選項為C。
10C語言中運算對象必須是整型的運算符是( )。
A.%B./C.!D.**
參考答案:A
參考解析:%既然求余數,運算對象必須是整數。
11下列關于定點數與浮點數的敘述中錯誤的是( )。
A.在實數的浮點表示中,階碼是一個整數
B.整數是實數的特例,也可以用浮點數表示
C.實數的補碼是其對應的反碼在最后一位加1
D.相同長度的浮點數和定點數,前者可表示數的范圍要大于后者
參考答案:C
參考解析:正整數的補碼與其原碼一致;負整數的褂 碼是其對應的反碼在最后一位加l。
12表達式'5'-'1'的值是( )。
A.整數4B.字符4C.表達式不合法D.字符6
參考答案:A
參考解析:在C語言中,字符都是變為其對應的ASCIl碼值來參加算術運算的,但字符間的相對位置關系還是不變的,字符5和字符1的ASCIl碼值相差仍是4。
13有以下程序:
#include
main()
{int a[10]={1,2,3,4,5,6,7,8,9,10),*p=a;
printf(”%a\n”,*(p+2));
)
程序的輸出結果是( )。
A.3B.4C.1D.2
參考答案:A
參考解析:*p—a;P指向首地址,*(p+2))往后移
動兩個元素,指向3,所以正確答案為A。
14在C語言中,函數返回值的類型最終取決于( )。
A.函數定義時在函數首部所說明的函數類型
B.return語句中表達式值的類型
C.調用函數時主調函數所傳遞的實參類型
D.函數定義時形參的類型
參考答案:A
參考解析:在C語言中,函數返回的類型最終取決于函數定義時在函數首部所說明的函數類型,與調用函數時主調函數所傳遞的實參類型和函數定義時形參的類型無關,而retllrn語句表達式的值將強制轉換為函數定義時在函數首部所說明的函數類型返回。
15下列程序的運行結果是( )。
#included
void main()
{int s=0,k;
for(k=7;k>1;k--)
{switch(k)
{case 1:
case 4:
case 7:
s++:
break;
case 2:
case 3:
case 6:break;
case 0:
case 5:
s+=2:
break;
))
print[(”S=%d”,s);
}
A.S=3B.s=4C.s=5D.無輸出結果
參考解析:運行程序,當k一7時switch(7)執行case:7,s+十后S一1,break跳出。k一一,k=7繼續循環switch(6),執行case6;直接跳出循環,k一一變成5,繼續循環switch(5),執行case5后面的語句s+=2,也相當于s—s+2,此時S為3,break跳出,k變為4,繼續循環,執行ease4為空,繼續執行case7;s++為4跳出循環,k一一變為3,繼續循環,執行case3,空語句往下執行case6,跳出,k一一為2,繼續循環,執行case2;空語句往下執行ease3,空語句再執行case7,跳出循環,k一一為1不符合循環,退出,此時s=4。
16設x為int型變量,則執行以下語句后,X的值為( )。
x=10;x=x-=x-x:
A.10B.20C.40D.30
參考答案:A
參考解析:執行x—X--=X--x語句可寫成x=x一(x—x),可看出結果為10,故A選項正確。
17有以下程序:
#include
void WriteStr(char*fn.char*str)
{FILE*fp
fp=fopen(fn,”w”);fputs(str,fp);fclose(fp);)
main()
{ WriteStr(”t1.dat”,”start”);
WriteStr(”t1.dat”,”end”);)
程序運行后,文件t1.dat中的內容是( )。
A.startB.endC.starte ndD.endrt
參考解析:用”w”方式打開文件,意思是如果文件名相同則覆蓋原來的文件,所以當再次輸入時覆蓋了第一次的內容,B選項正確。
18若程序中有宏定義行:#define N 100,則以下敘述中正確的是( )。
A.宏定義行中定義了標識符N的值為整數100
B.在編譯程序對C源程序進行預處理時用100替換標識符N
C.對C源程序進行編譯時用100替換標識符N
D.在運行時用100替換標識符N
參考解析:C語言中,凡是以“#”號開頭的行,都稱為“編譯預處理”。對c源程序進行編譯前,由編譯預處理程序對這些編譯預處理命令進行處理。
19合法的八進制數是( )。
A.0B.028C.-077D.01.0
參考答案:A
參考解析:八進制數里沒有8,7完了就要進位的,并且八進制里沒有小數位的。因此選項A是正確的。
20以下選項中不合法的用戶標識符是( )。
A._123B.printfC.A$D.Dim
參考答案:C
參考解析:c語言規定標識符只能由字母、數字、下劃線組成,并且只能由字母或下劃線開頭,不能以數字開頭。c項中包含$特殊符號,所以c項不合法。
21若有以下程序:
#include
void fun(float*a,float*b)
( float w;
*a=*a+*a;w= *a;*a= *b;*b=W;
}
main()
{ float x=2..0,y=3.0,*px=&x,*py=&y;
fun(px,py);printf(”%2.of,%2.0fkn”,X,y);
)
程序的輸出結果是( )。
A.4,3B.2,3C.3,4D.3,2
參考答案:C
參考解析:include
voidfun(float*a,float*b)//a即指向px的指針,b即指向py的指針,則*a指向x,*b指向y
{
floatW;
*a-*a+*a;//將x地址存放的數據自加,x變為4
W=*a:*a=*b:*b=w;//將x和Y地址里面的數據互換,則x變
為3,Y變為4)
main(){
floatx=2.0,y=3.0,*px=&x,*py=&-y;//px和py分別是指向X和Y地址的指針
fun(px,PY);
printf(”%2.Of,%2.of\n”,x,y);//%2.0f表示結果前面有2個空格,小數點后有0位,即保留到個位}
22下列程序的運行結果是( )。
#include
#define ADD(x)X+X
main()
{ int m=1,n=2,k=3:
int s=ADD(m十n)*k;
printf(”s=%d”,s):
}
A.sum=18B.sum=10C.sum=9D.sum=25
參考解析:本題考查帶參數的宏的定義:“#defineADD(x)X+x”中x代表m+n,故s寫成s=m+n+m+r*k=l+2十1+2*3=l0。
23若有以下說明,則( )不是對strcpy庫函數正確的調用。
strcpy庫函數用于復制一個字符串:char*str1==”abed”,str1[10],*str3="hijklmn",*str4[-2],*str5=”aaaa”;
A.strcpy(str2,str1)
B.strcpy(str3,str1)
C.strcpy(str1,str2)
D.strcpy(str5,str1)
參考答案:C
參考解析:strcpy(s1,s2)函數的功能是將字符串s2復制到字符串s1中。要保證s1存儲區能容納下s2字符串。
24C語言中,字符(char)型數據在微機內存中的存儲形式是( )。
A.反碼B.補碼C.EBCDIC碼D.ASCIl碼
參考答案:D
參考解析:其他3個是用來進行數值處理的。
25有以下程序:
#include
main()
{int a[J一{1,2,3,4,5,6,7,8,9,10,11,12),*P=a
+5;
*q=NULL;+q=*(p+5);
printf(”%d%d\n”,*q,*q);
}
程序運行后的輸出結果是( )。
A.運后后報錯B.6 6C.6 11D.5 10
參考答案:A
參考解析:本題中首先定義了一個一維數組。并初始化,由于定義該數組的時候省了長度,因此該數組的長度為初始化時候賦初值的個數即為12。數組名a代表數組的首地址,所以*p-a+5語句使得P指向數組的第6個元素,而在程序中定義了一個指針q并讓它指向空,實際上程序并沒有在內存中為指針q開辟存儲空間,這樣給q賦值不允許的,故該程序運行后報錯。第25題 筆記記錄我的筆記(0) | 精選筆記(11)選擇筆記標簽:試題內容(11)答案解析(0)
26有以下程序:
#include
main()
{int i,X[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)printf(”%d,”,x[i][2-i]);
{
程序的輸出結果是( )。
A.1,5,9,B.1,4,7,C.3,5,7,D.3,6,9,
參考答案:C
參考解析:即輸出xE03[2]x[1][1]x[2][o]分別為357。