- 相關推薦
2017年計算機二級《C語言》考前押題密卷
以下是應屆畢業(yè)生考試網(wǎng)整理的2017年計算機二級《C語言》考前押題密卷,供考生參考,更多計算機等級考試相關信息請繼續(xù)關注應屆畢業(yè)生計算機等級考試網(wǎng)。
一、選擇題
1下列選項中非法的字符常量是( )。
A.' 'B.'39'C.','D.' '
參考答案:B
參考解析:水平制表符中,’ '表示的是橫向跳若干格;選項B中,’39’錯誤,’39’是八進制形式表的字符,最大數(shù)為7,但其中出現(xiàn)'9',’,’是字符逗號;選項D中,7 ’表示的是換行。
2下列函數(shù)的類型是( )。
fun(double x)
{float y;
y=3*x-4;
return y;
}
A.intB.不確定C.voidD.float
參考答案:A
參考解析:本題考查函數(shù)值的類型。在函數(shù)調(diào)用時,盡管y的類型是float,x的類型是double,但是因為函數(shù)定義時沒有指定類型說明,系統(tǒng)默認函數(shù)值的類型為int型,所以計算后Y的類型是int型。
3軟件生命周期是指( )。
A.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程
B.軟件從需求分析、設計、實現(xiàn)到測試完成的過程
C.軟件的開發(fā)過程
D.軟件的運行維護過程
參考答案:A
參考解析:軟件生命周期(SystemsDevelopmenlLifeCyele,SDlC)是軟件的產(chǎn)生直到報廢的生命周期,周期內(nèi)有問題定義、可行性分析、總體描述、系統(tǒng)設計、編碼、調(diào)試和測試、驗收與運行、維護升級到廢棄等階段。
4有如下程序:
main()
f int x=23:
do
{printf(”%d”,x——);}
while(!x);
}
該程序的執(zhí)行結果是( )。
A.321B.22C.不輸出任何內(nèi)容D.陷入死循環(huán)
參考答案:B
參考解析:本題考查d0-while語句,當X一23時,執(zhí)行d0后的語句,x一一的表達式值為x=x-1,此時X的值為22,而!X為0,因此while循環(huán)不成立,退出,故選擇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
參考解析:選項B先計算關系表達式“『A7<一c”的值是0還是l,再比較該值與字符'z'之間的大小關系,不能實現(xiàn)題目所要求的功能。
6下列敘述中不正確的是( )。
A.在c語言中調(diào)用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參
B.在c的函數(shù)中,最好使用全局變量
C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)
D.自動變量實質(zhì)上是一個函數(shù)內(nèi)部的局部變量
參考答案:B
參考解析:在程序運行中局部變量所在的函數(shù)被調(diào)用時,編譯系統(tǒng)根據(jù)需要臨時分配內(nèi)存,調(diào)用結束空間解放;全局變量一經(jīng)定義,編譯系統(tǒng)為其分配固定的內(nèi)存單元,在程序運行的自始至終都占用固定的單元。在考慮內(nèi)存未知的情況下,最好不要使用全局變量。
7定義下列結構體(聯(lián)合)數(shù)組:
struet St
{char name[15];
int age;
)a[10]={”ZHA()”,14,”WANG”,15,”LIU”,16,”
ZHANG”,17);
執(zhí)行語句printf(”%d,%c”,a[2].age,*(a[3].name+2))的輸出結果為( )。
A.15,AB.16,HC.16,AD.17,H
參考答案:C
參考解析:本題考查結構體數(shù)組。a[2].age為結構體a[2]的age成員,即a[3],name為指向結構體a[3]的flame成員的第一個元素的指針,即指向“2”,(a[3].name+2)將指針后移兩位指向第三個元素“A”,*(a[3].name+2)是取指針所指向地址的內(nèi)容。
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
參考解析:B選項中不應該加“,”號。
9以下敘述中正確的是( )。
A.在C程序中無論是整數(shù)還是實數(shù),只要在允許的范圍內(nèi)都能準確無誤地表示
B.C程序由主函數(shù)組成
C.C程序由若干函數(shù)組成
D.C程序中只允許包含一個函數(shù)
參考答案:C
參考解析:整型是沒有問題的.實型在存諸的時候,是用科學記數(shù)法存的,沒有辦法得到準確值的,是有一定誤差的。C程序是由若干的函數(shù)組成,不只有主函數(shù),函數(shù)是c程序的基本組成部分。但是C程序中必須有一個而且只能有一個以main(主函數(shù))開頭的函數(shù),因為c程序的執(zhí)行是從main函數(shù)開始的,所以正確選項為C。
10C語言中運算對象必須是整型的運算符是( )。
A.%B./C.!D.**
參考答案:A
參考解析:%既然求余數(shù),運算對象必須是整數(shù)。
11下列關于定點數(shù)與浮點數(shù)的敘述中錯誤的是( )。
A.在實數(shù)的浮點表示中,階碼是一個整數(shù)
B.整數(shù)是實數(shù)的特例,也可以用浮點數(shù)表示
C.實數(shù)的補碼是其對應的反碼在最后一位加1
D.相同長度的浮點數(shù)和定點數(shù),前者可表示數(shù)的范圍要大于后者
參考答案:C
參考解析:正整數(shù)的補碼與其原碼一致;負整數(shù)的褂 碼是其對應的反碼在最后一位加l。
12表達式'5'-'1'的值是( )。
A.整數(shù)4B.字符4C.表達式不合法D.字符6
參考答案:A
參考解析:在C語言中,字符都是變?yōu)槠鋵腁SCIl碼值來參加算術運算的,但字符間的相對位置關系還是不變的,字符5和字符1的ASCIl碼值相差仍是4。
13有以下程序:
#include
main()
{int a[10]={1,2,3,4,5,6,7,8,9,10),*p=a;
printf(”%a ”,*(p+2));
)
程序的輸出結果是( )。
A.3B.4C.1D.2
參考答案:A
參考解析:*p—a;P指向首地址,*(p+2))往后移
動兩個元素,指向3,所以正確答案為A。
14在C語言中,函數(shù)返回值的類型最終取決于( )。
A.函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型
B.return語句中表達式值的類型
C.調(diào)用函數(shù)時主調(diào)函數(shù)所傳遞的實參類型
D.函數(shù)定義時形參的類型
參考答案:A
參考解析:在C語言中,函數(shù)返回的類型最終取決于函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型,與調(diào)用函數(shù)時主調(diào)函數(shù)所傳遞的實參類型和函數(shù)定義時形參的類型無關,而retllrn語句表達式的值將強制轉換為函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型返回。
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.無輸出結果
參考答案:B
參考解析:運行程序,當k一7時switch(7)執(zhí)行case:7,s+十后S一1,break跳出。k一一,k=7繼續(xù)循環(huán)switch(6),執(zhí)行case6;直接跳出循環(huán),k一一變成5,繼續(xù)循環(huán)switch(5),執(zhí)行case5后面的語句s+=2,也相當于s—s+2,此時S為3,break跳出,k變?yōu)?,繼續(xù)循環(huán),執(zhí)行ease4為空,繼續(xù)執(zhí)行case7;s++為4跳出循環(huán),k一一變?yōu)?,繼續(xù)循環(huán),執(zhí)行case3,空語句往下執(zhí)行case6,跳出,k一一為2,繼續(xù)循環(huán),執(zhí)行case2;空語句往下執(zhí)行ease3,空語句再執(zhí)行case7,跳出循環(huán),k一一為1不符合循環(huán),退出,此時s=4。
16設x為int型變量,則執(zhí)行以下語句后,X的值為( )。
x=10;x=x-=x-x:
A.10B.20C.40D.30
參考答案:A
參考解析:執(zhí)行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中的內(nèi)容是( )。
A.startB.endC.starte ndD.endrt
參考答案:B
參考解析:用”w”方式打開文件,意思是如果文件名相同則覆蓋原來的文件,所以當再次輸入時覆蓋了第一次的內(nèi)容,B選項正確。
18若程序中有宏定義行:#define N 100,則以下敘述中正確的是( )。
A.宏定義行中定義了標識符N的值為整數(shù)100
B.在編譯程序對C源程序進行預處理時用100替換標識符N
C.對C源程序進行編譯時用100替換標識符N
D.在運行時用100替換標識符N
參考答案:B
參考解析:C語言中,凡是以“#”號開頭的行,都稱為“編譯預處理”。對c源程序進行編譯前,由編譯預處理程序對這些編譯預處理命令進行處理。
19合法的八進制數(shù)是( )。
A.0B.028C.-077D.01.0
參考答案:A
參考解析:八進制數(shù)里沒有8,7完了就要進位的,并且八進制里沒有小數(shù)位的。因此選項A是正確的。
20以下選項中不合法的用戶標識符是( )。
A._123B.printfC.A$D.Dim
參考答案:C
參考解析:c語言規(guī)定標識符只能由字母、數(shù)字、下劃線組成,并且只能由字母或下劃線開頭,不能以數(shù)字開頭。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地址存放的數(shù)據(jù)自加,x變?yōu)?
W=*a:*a=*b:*b=w;//將x和Y地址里面的數(shù)據(jù)互換,則x變
為3,Y變?yōu)?)
main(){
floatx=2.0,y=3.0,*px=&x,*py=&-y;//px和py分別是指向X和Y地址的指針
fun(px,PY);
printf(”%2.Of,%2.of ”,x,y);//%2.0f表示結果前面有2個空格,小數(shù)點后有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
參考答案:B
參考解析:本題考查帶參數(shù)的宏的定義:“#defineADD(x)X+x”中x代表m+n,故s寫成s=m+n+m+r*k=l+2十1+2*3=l0。
23若有以下說明,則( )不是對strcpy庫函數(shù)正確的調(diào)用。
strcpy庫函數(shù)用于復制一個字符串: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)函數(shù)的功能是將字符串s2復制到字符串s1中。要保證s1存儲區(qū)能容納下s2字符串。
24C語言中,字符(char)型數(shù)據(jù)在微機內(nèi)存中的存儲形式是( )。
A.反碼B.補碼C.EBCDIC碼D.ASCIl碼
參考答案:D
參考解析:其他3個是用來進行數(shù)值處理的。
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 ”,*q,*q);
}
程序運行后的輸出結果是( )。
A.運后后報錯B.6 6C.6 11D.5 10
參考答案:A
參考解析:本題中首先定義了一個一維數(shù)組。并初始化,由于定義該數(shù)組的時候省了長度,因此該數(shù)組的長度為初始化時候賦初值的個數(shù)即為12。數(shù)組名a代表數(shù)組的首地址,所以*p-a+5語句使得P指向數(shù)組的第6個元素,而在程序中定義了一個指針q并讓它指向空,實際上程序并沒有在內(nèi)存中為指針q開辟存儲空間,這樣給q賦值不允許的,故該程序運行后報錯。第25題 筆記記錄我的筆記(0) | 精選筆記(11)選擇筆記標簽:試題內(nèi)容(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。
27有以下程序:
main()
{int a=0,b=10,c=0,d=0;
if(a=1)b=1;c=2;
else d=3:
printf(”%d,%d,%d,%d ”,a,b,c,d);
}
程序輸出( )。
A.0,1,2,0B.0,0,0,3C.1,1,2,0D.編譯有錯
參考答案:D
參考解析:語法錯誤。else與if之間不應再用其他語句,如果滿足if條件,則繼續(xù)執(zhí)行if后面的語句;不滿足就執(zhí)行else語句。
28下列程序輸出結果是( )。
#include%stdio.h>
main()
{char aE3一{'a','b','c','d','e','f','o');
int i,j;
A.7,7B.7,6C.6,6D.6.7
參考答案:B
參考解析:本題要注意sizeof()和strlen()的區(qū)別,sizeof()函數(shù)的功能是返回字符串所占的字節(jié)數(shù),strlen()函數(shù)的功能是返回字符串長度,'o'是一個轉義符,它占存儲空間,但不計入串的長度。
29有以下程序
#include
int a=1:
int f(int c)
{ static int a=2;
c=c+1.
return(a++)+c;
}
main()
{ int i,k=0;
for(i=0;i<2;i++){int a=3;k+=f(a);)
k+=a;
printf(”%d ”,k);
程序運行結果是( )。
A.14B.15C.16D.17
參考答案:A
參考解析:在主函數(shù)中,k的初值為0,首先調(diào)用函數(shù)f(3),返回值為6,k的值變?yōu)?,而函數(shù)intfun(intc)中的局部靜態(tài)變量a等于3。第二次調(diào)用函數(shù)f(3)時,返回值為7,所以k-6+7—13。退出循環(huán)語句,k再加上全局變量a的值1,其最終的值為14。
30按照“先進后出”原則組織數(shù)據(jù)的結構是( )。
A.隊列B.棧C.雙向鏈表D.二叉樹
參考答案:B
參考解析:棧是線性表的一種,其插入和刪除運算都只在表的一端進行。進行插入、刪除的一端稱為棧頂,封閉的一端稱為棧底。棧頂元素按先進后出的原則組織數(shù)據(jù),它是最后插入的元素,不是最后被刪除的元素。
31若整型變量a、b、c、d中的值依次為2、2、3、4,則條件表達式a
A.1B.2C.3D.4
參考答案:C
32若有定義:“int*P,x=0,*P,P=&x;”,則語句“printf(”%d ”,*p);”的輸出結果是( )。
A.隨機值B.0C.x的地址D.P的地址
參考答案:B
參考解析:*P的意思是取其指向地址的內(nèi)容,P是指向x地址的指針,因此輸出*P也就是輸出X的內(nèi)容,即0,故選擇B選項。
33下列程序中C的二進制值是( )。
char a=2,b=4,c;
c=a^b>>2;
A.00000011B.00010100C.00011100D.00011000
參考答案:A
參考解析:本題主要考查右移運算和按位異或。把b化為二進制數(shù)為00000100,右移兩位后為00000001,a的二進制為00000010,兩者異或為00000011。
34有下列程序:
main()
{char*p[]={¨3697”.”2584”);
int i,j;long ntlm=0;
for(i=0;i<2;i++)
{ j=0;
while(p[i][j]!='')
{if((p[i][j]-'')%2)num=10*num+p
[j][j]-'0';
j+=2;
}
}
print[(“%d ”,num);
程序執(zhí)行后的輸出結果是( )。
A.35B.37C.39D.3975
參考答案:D
參考解析:執(zhí)行第一次for循環(huán)時,用表達式p[i][j]!=’o=來判斷字符串數(shù)組指針P是否到達字符串的結尾,如果沒有到達,繼續(xù)執(zhí)行while中的語句。if語句表示(p[i][i]-o’)除2的余數(shù)不為0時,即字符串所有奇數(shù)執(zhí)行后面的語句。所以退出第l次for的循環(huán)體時,輸出為397,執(zhí)行第2次循環(huán)體。對字符串“2584”進行處理,輸出結果為5,因而最后輸出結果為3975。
37若有定義:“int a[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為( )。
A.*(*(a+i)+j)B.(a+i)[j]C.*(a+j+j)D.*(a+i)+j
參考答案:A
參考解析:通過地址來引用數(shù)組元素的方法有下列5種:①a[i][j];②*(a[i]+J);③*(*(a+i)+j);④*(aEiJEj]);⑤(&a[o]EoJ+3*i十j)。故A正確。
38設有以下語句:
int a=1,b=2,c;
c=a^(b<<2);
執(zhí)行后,c的值為( )。
A.6B.7C.8D.9
參考答案:D
參考解析:本題考查兩個知識點,按位異或左移把b左移2位化成二進制c=a^(b<<2)=a^(oooolo<<2)=a^o01000=0000001^001000=9,故選擇D。
39若二維數(shù)組a有m列,則在a[i][j]前的元素個數(shù)為( )。
A.i*m+j-1B.i*m+jC.j*m+iD.i*m+j+1
參考答案:B
參考解析:二維數(shù)組的元素可以看成是按矩陣形式存放的,數(shù)組第一維的下標是i,說明它前面還有i行,有i*m個元素,數(shù)組第二維的下標是j,說明它前面還有j列,有j個元素,所以共有i*m+j個元素。
40已知大寫字母A的ASCIl碼是65,小寫字母a的ACSII碼是97。下列能將變量C中的大寫字母轉換為對應小寫字母的語句是( )。
A.c=(c-'A')%26+'A'
B.C=c+32
C.c=c-'A'+'A'
D.c=('A'+C)%26—'a'
參考答案:B
參考解析:根據(jù)ASCIl碼選項可知大寫字符A與小寫字符a的ASCIl碼相差32,而選項D中應該是加上'a’,選項A和C左側的表達式都是大寫字符c與大寫字符A的差與…a的ASCIl代碼的和就是小寫字符c的ASCIl代碼。
【計算機二級《C語言》考前押題密卷】相關文章:
統(tǒng)計師考試押題密卷10-27
計算機二級C語言臨考押題及答案201705-22
2017計算機二級考試C語言考前沖刺題08-23
C語言考前沖刺題10-26
2017年司法考試的考前押題卷10-21
計算機二級C語言考前必做題08-23