第 1 頁:選擇題 |
第 5 頁:程序填空題 |
第 6 頁:程序改錯題 |
第 7 頁:程序設(shè)計題 |
31若有定義“int b[8],*p=b;”,則p+6表示( )。
A.數(shù)組元素b[6]的值
B.數(shù)組元素b[6]的地址
C.數(shù)組元素bE73的地址
D.數(shù)組元素hEo]的值加上6
參考答案:B
參考解析:指針中存放的是變量的地址,指針也可以進行增減運算,這時指針移動的最小單位是一個存儲單元,而不是一個字節(jié)。所以題中“P+6”指的是將指針向后移動了6個存儲單元,即指向b[6],存放的是bE6]的地址。
32有下列程序:
main()
{ char s[]=”abode”;
s+=2:
printf(”%d\n”,s[o]);
)
執(zhí)行后的結(jié)果是( )。
A.輸出字符a的ASCII碼
B.輸出字符c的ASCII碼
C.輸出字符c
D.程序出錯
參考答案:D
參考解析:因為字符數(shù)組s[]中的數(shù)組名s表示的是一個地址常量。所以語句“s+一2;”不能將指針在當(dāng)前位置的基礎(chǔ)上再向后移動兩位,因而程序編譯時出錯。
33有以下程序:
#include
main()
{ int w=4,x=3,y=2,z=1;
printf(”%d\n”,(w
程序的輸出結(jié)果是( )。
A.1B.2C.3D.4
參考答案:A
參考解析:條件運算符具有右結(jié)合性。當(dāng)一個表達式中出現(xiàn)多個條件運算符時,應(yīng)該將位于最右邊的問號與離它最近的冒號配對,并按這一原則正確區(qū)分各條件運算符的運算對象。w
34下列程序的運行結(jié)果是( )。
#include
void fun(int*s,int*p)
{ static int t=3;
*p=set];
t--:
}
void main()
{int a[]={2,3,4,5),k;
int x:
for(k=0,k<4,k++)
{fun(a,&.x);
printf(”%d,”,x);
)
}
A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5
參考答案:A
參考解析:依據(jù)fun函數(shù),可知其要實現(xiàn)的功能是將S中第(t+1)個元素以前的元素逆置賦給數(shù)組p。由于fun中函數(shù)定義了靜態(tài)變量t=3,因此,main()函數(shù)中調(diào)用函數(shù)fun(a,&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)X,最后輸出X數(shù)組。
35若有以下程序( )。
#include
main()
{ int**k,*j,i=100;
j=&i;k=&j;printf(”%d\n”,**k);
}
程序的輸出結(jié)果是( >。
A.運行出錯B.100C.j的地址D.i的地址
參考答案:B
參考解析:
B!窘馕鰈int**k,*j,i=100;
j=8Li;//一維指針j指向i的地址,所以j中存放的是i的地址,*j就是i的內(nèi)容,即*j一1001k-=&j;//二維指針k指向j的地址,所以k中存放的是指向i的地址的地址,*j就是i的內(nèi)容,**k就是i的內(nèi)容,即**k一100,printf(”%d\n”,**k);//輸出100。
36c語言中,下列不合法的字符常量是( )。
A.'\xff'B.'\65'C.'&'D.'\028'
參考答案:D
參考解析:選項A,'\xff’中'\X'組合表示是一個十六進制數(shù)ffH一10進制的255,它代表一個不可見字符的ASCIl碼,合法。選項B,‘\65'=’\o65'10進制的53,是'F’的ASCIl碼表示。選項C,單'&’字,合法。選項D中’\028'同上表示是八進制數(shù),但八進制數(shù)中逢八則進一,是不會出現(xiàn)8的,所以格式雖對但數(shù)值錯了,不合法。
37下列程序的運行結(jié)果是( )。
int y一5,x一14;
y=((x=3*y,x+1),x-1);
printf(”x=%d,y=%d”,x,y);
A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y=27
參考答案:C
參考解析:逗號表達式的解題思路是從左到右,依次求解,整個逗號表達式的值就是最后一個表達式的值。表達式(x=3*Y,X+1)中,依次是x=3*Y=3*5=15,表達式x+1-16,但沒有給x或Y賦值,所以x還是等于15;第3個表達式x-l=15-1-14,所以Y的值為14。
38有以下程序段:
int x:
for(x=3:x<6:X++
print[((x%2)?(”**%d”):(”##%d\n”),x);
程序段的輸出結(jié)果是( )。
A.**3B.##3
##4 **4
**5 ##5C.##3D.**3##4
**4##5 **5
參考答案:D
參考解析:voidmain(){intx;
for(x=3;x<6;X十+)
printf((X%2)?(”**%d”):(”##%d\n”),x);//x一33%2—1**3
//x一44%2—0##4\n//x一55%2=1**5//x一6退出循環(huán)
)
結(jié)果:
**3##4**5
因此正確答案為D選項。
39有以下程序:
#include
main()
{ int x,i;
for(i=1:i<=100:i++)
{ x=i:
if(++x$2==0)
if(++x%3==0)
if(++x%7==0)
printf(“%d”,x);
printf(”\n”);
程序的輸出結(jié)果是( )。
A.2870B.4284C.2668D.3981
參考答案:A
參考解析:1—100內(nèi)打印出如下數(shù),這個數(shù),可以被7整除,前一個數(shù)可以被3整除,再前一個數(shù)可以被2整除,最終運行結(jié)果為2870,因此正確答案為A。
40下面程序的運行結(jié)果是( )。
#include
void del(char*s)
{int i,j;
char*a:
a=s:
for(i=0,j一0;a[i]!='\o' ; i++)
{if(a[i]>='0'&&a[i]<='9')
{ s[j]=a[i];
j++;
}
s[j]='\0' ;
}
)
main()
{ char*s==”aa89gggh”:
del(s);
printf(”\n%s”,s);
A.1B.2C.3D.4
參考答案:B
參考解析:本題中del(char*s)函數(shù)實現(xiàn)的功能是逐個讀入S數(shù)組中的字符,如果遇到數(shù)字,則將數(shù)字存在S中,遇到非數(shù)字字符則跳過。所以最后輸出的應(yīng)該是字符串s中所有數(shù)字的個數(shù)。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |