2021-2022年安徽省巢湖市全國計算機等級考試C語言程序設(shè)計真題二卷(含答案)_第1頁
2021-2022年安徽省巢湖市全國計算機等級考試C語言程序設(shè)計真題二卷(含答案)_第2頁
2021-2022年安徽省巢湖市全國計算機等級考試C語言程序設(shè)計真題二卷(含答案)_第3頁
2021-2022年安徽省巢湖市全國計算機等級考試C語言程序設(shè)計真題二卷(含答案)_第4頁
2021-2022年安徽省巢湖市全國計算機等級考試C語言程序設(shè)計真題二卷(含答案)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2021-2022年安徽省巢湖市全國計算機等級考試C語言程序設(shè)計真題二卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列有關(guān)格式輸入函數(shù)scanf的敘述中正確的是()

A.輸入項可以是C語言中規(guī)定的任何變量,并且在任何變量前必須加地址符號“&”

B.可以只有格式控制項,沒有地址列表項

C.在輸入數(shù)據(jù)時,必須規(guī)定精度。如:scanf("%4.2f",&d);

D.當輸入數(shù)據(jù)時,必須指明變量地址

2.

有下列程序:

main

{charp[]={a,h,c},q[]="a";

printf("%d%d\n".sizeof(P),sizeof(q));

}

程序運行后的輸出結(jié)果是()。

A.44B.33C.34D.43

3.以下選項中不屬于c語言的類型的是()。

A.unsignedlongint

B.longshort

C.unsignedint

D.signedshortint

4.

5.在一個無向圖中,所有頂點的度數(shù)之和等于所有邊數(shù)的()倍。

A.2B.3C.1D.1.5

6.下列敘述中正確的是()。

A.在switch語句中不一定使用break語句

B.在switch語句中必須使用default語句

C.break語句必須與switch語句中的case配對使用

D.break語句只能用于switch語句

7.當一個函數(shù)無返回值時,定義它的函數(shù)類型應(yīng)是()。

A.voidB.intC.任意D.無

8.

9.下列關(guān)于棧敘述正確的是A.棧頂元素最先能被刪除B.棧頂元素最后才能被刪除C.棧底元素永遠不能被刪除D.上述三種說法都不對

10.有以下程序:#include<stdio.h>main(){inta=1,b=2,c=3;charflag;flag=b>=2&&c<=3;switch(a){ case1:switch(flag) { case0:printf(“**”);break; case1:printf(“%%”);break; } case0:switch(c) { case1:printf(“$$”);break; case2:printf(“&&”);break; default:printf(“##”); }}printf(“\n”);}程序運行后的輸出結(jié)果是()。

A.**$$B.%##C.%&&D.**##

11.算法的時間復(fù)雜度是指()A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法程序中的指令條數(shù)D.算法執(zhí)行過程中所需要的基本運算次數(shù)

12.有以下程序:#include<stdio.h>main(){inta=1,b=2,c=3,d=4,r=0;if(a!=1)r=1;if(b==2)r=2;elseif(c!=3)r=3;elseif(d==4)r=4;printf(“%d\n”,r);}程序運行后的輸出結(jié)果是()。

A.0B.4C.1D.2

13.已知inta=2,b=3;則執(zhí)行表達式a=a<b后,變量a的值為()。

A.0B.1C.2D.3

14.下列描述錯誤的是()。

A.繼承分為多重繼承和單繼承

B.對象之問的通信靠傳遞消息來實現(xiàn)

C.在外面看不到對象的內(nèi)部特征是基于對象的“模塊獨立性好”這個特征

D.類是具有共同屬性、共同方法的對象的集合

15.下列定義中,不正確的有______。

A.#definePI3.141592

B.#defineS345;

C.intmax(x,y);

D.staticcharc;intx,y;{...}

16.可以作為Windows外殼程序的是()

A.程序管理器B.文件管理C.程序管理器和文件管理器D.主群組

17.為了使模塊盡可能獨立,要求()。

A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強

B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱

C.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱

D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強

18.以下關(guān)于指針的說法錯誤的是()。

A.可以向指針中寫入任意數(shù)據(jù)

B.可以向指針所指內(nèi)存單元中寫入數(shù)據(jù)

C.指針可以指向與其基類型相同的普通變量

D.可以通過加法運算,使指針指向下一個內(nèi)存單元

19.

20.現(xiàn)有以下結(jié)構(gòu)體說明和變量定義,如圖所示,指針p、q、r分別指向一個鏈表中連續(xù)的三個節(jié)點。structnode{chardata;structnode*next;}*p,*q,*r;

現(xiàn)要將q和r所指節(jié)點交換前后位置,同時要保持鏈表的連續(xù),以下不能完成此操作的語句是()。

A.q->next=r->next;p->next=r;r->next=q;

B.p->next=r;q->next=r->next;r->next=q;

C.q->next=r->next;r->next=q;p->next=r;

D.r->next=q;p->next=r;q->next=r->next;

二、2.填空題(20題)21.下面程序的功能是將字符串a(chǎn)下標值為偶數(shù)的元素由小到大排序,其他元素不變,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{

chara[]="labchmfye",t:

int1,j;

for(i=0;i<7;i+=2)

for(j=i+2;j<9;【】)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;j++;}

puts(a);printf("\n");

}

22.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型的動態(tài)存儲單元______。

23.若輸入字符串:abcde<回車>,則以下while循環(huán)體將執(zhí)行【】次。

while((ch=getchar())=='e')printf("*");

24.以下程序的輸出結(jié)果是【】。

main()

{charc='z';

printf("%c",c-25);}

25.下面程序的輸出是【】

main()

{enumem{eml=3,em2=1,em3};

char*aa[]={"AA',"BB","CC","DD"}

printf("%s%s%\n",aa[em1],aa[em2],aa[em3]);

}

26.以下程序運行后的輸出結(jié)果是【】。

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

printf("%d\n",S(i+j));

}

27.下列程序?qū)⒍S數(shù)組a的行和列元素互換后存放到另一個二維數(shù)組b中。請?zhí)羁铡?/p>

main()

{inta[2][3]={{1,2,3},{4,5}},b[3][2],i,j;

for(i=0;i<2;i++)

{for(j=0;j<3;j++)

}

}

28.當運行以下程序時,從鍵盤輸入abcdabcdef<CR>

cde<CR>

(<CR>表示回車),則下面程序的運行結(jié)果是【】。

#include<stdio.h>

main()

{inta;chars[80],t[80];

gets(s);gets(t);

a=fun(s,t);

printf("a=%d\n",a);}

fun(char*p,char*q)

{inti;

char*p1=p;

char*q1;

for(i=0;*p!='\0';p++,i++)

{p=p1+i;

if(*p!=*q)continue;

for(q1=q+1,p=p+1;*p!='\0'&&*q1!='\0';q1++,p++)

if(*p!=*q1)break;

if(*q1=='\0')returni;}

return(-1);}

29.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。

30.以下程序運行后的輸出結(jié)果是______。

main()

{

intx=10,y=20,t=0

if(x==y)t=x;x=y;y=t;

printf("%d,%d/n",x,y);

}

31.數(shù)據(jù)庫系統(tǒng)的三級模式分別為______模式、內(nèi)部級模式與外部級模式。

32.下面程序的輸出是()。

main()

{intarr[8],i,k=0;

for(i=0;i<8;i++)

arr[i]=i;

for(i=1;i<5;i++)

k+=arr[i]+i;

printf("%d\n",k);

}

33.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊列屬于[]。

34.以下程序運行后的輸出結(jié)果是【】。

#include<stdio.h>

intf(ihta[],intn)

{if(n>=1)returnf(a,n-1)+a[n-1];

elsereturn0;

main()

intaa[5]={1,2,3,4,5},s;

s=f(aa,5);prinff("%d\n",s);

}

35.有以下語句段

intn1=10,n2=20;

printf("【】",n1,n2);

要求按以下格式輸出n1和n2的值,每個輸出行從第一列開始,請?zhí)羁铡?/p>

n1=10

n2=20

36.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,當s<t時返回負值。請?zhí)羁铡?/p>

my_cmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}return【】;

}

37.已定義charch=′$′;inti=1,j;,執(zhí)行j!=ch&&i++以后,i的值為【】。

38.以下程序的輸出結(jié)果是______。

#include<stdio.h>

main()

{inta[5]={2,4,6,8,10},*p;

p=a;p++;

printf("%d",*p);

}

39.以下函數(shù)的功能是求x的y次方,請?zhí)羁?/p>

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

}

40.若a=1,b=2,則表達式!(x=A)‖(y=B)&&0的值是______。

三、1.選擇題(20題)41.若運行以下程序時,從鍵盤輸入ADescriptor<CR>(<CR>表示回車),則下面程序的運行結(jié)果是#include<stdio.h>main(){charc;intv0=1,v1=0,v2=0;do{switch(c=getchar()){case'a':case'A':case'e':case'E':case'i':case'I':case'o':case'O':case'u':case'U':v1+=1default:v0+=1;v2+=1;}}while(c!='\n');printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}

A.v0=7,v1=4,v2=7

B.v0=8,v1=4,v2=8

C.v0=11,v1=4,v2=11

D.v0=13,v1=4,v2=12

42.有定義語句:ihtb;charc[10];,則正確的輸入語句是

A.scanf("%d%s",&b,&c);

B.scanf("%d%s",&b,c);

C.scanf("%d%s",b,c);

D.scanf("%d%s",b,&c);

43.若有下列說明和語句,則對結(jié)構(gòu)體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;

A.st.iB.*p.iC.(*p).iD.p->i

44.在軟件測試設(shè)計中,軟件測試的主要目的是()

A.實驗性運行軟件B.證明軟件正確C.找出軟件中全部錯誤D.發(fā)現(xiàn)軟件錯誤而執(zhí)行程序

45.設(shè)有下列語句inta=1,b=2,c;c=ab(b<<2);執(zhí)行后,C的值為()。

A.6B.7C.8D.9

46.有以下程序:#include<stdio.h>floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序運行后的輸出結(jié)果是()。

A.編譯出錯B.9C.21D.9

47.若進棧序列為1,2,3,4,進棧過程中可以出棧,則下列不可能的一個出棧序列是______。

A.1,4,3,2B.2,3,4,1C.3,1,4,2D.3,4,2,1

48.以下敘述中正確的是()。

A.C語言的源程序不必通過編譯就可以直接運行

B.C語言中的每條可執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令

C.C源程序經(jīng)編譯形成的二進制代碼可以直接運行

D.C語言中的函數(shù)不可以單獨進行編譯

49.以下程序的輸出結(jié)果是

#include<stdio.h>

main()

{inta=15,b=21,m=0;

switch(a%3)

{case0:m++;break;

case1:m++;

switch(b%2)

{default:m++;

case0:m++;break;}}

printf("%d\n",m);}

A.1B.2C.3D.4

50.設(shè)x=061,y=016,則z=x|y的值是()。

A.1111B.1.11111e+007C.111111D.1.1e+007

51.在C語言中,函數(shù)調(diào)用時()。

A.實參和形參各占獨立的存儲單元

B.實參和形參共用存儲單元

C.由系統(tǒng)自動確定實參和形參是否共用存儲單元

D.由用戶指定實參和形參是否共用存儲單元

52.有以下程序#defineP3voidF(intx){return(p'x'x);main(){pritnf("%d\n",F(3+5));}程序運行后的輸出結(jié)果是

A.192B.29C.25D.編譯出錯

53.若有以下定義和語句,則輸出結(jié)果是______。int**pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp);

A.10,20B.10,10C.20,10D.20,20

54.若x=4,y=5,則x&y的結(jié)果是()。

A.0B.4C.3D.5

55.下列程序的運行結(jié)果是()。#include<stdio.h>#include<string.h>main(){char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}

A.正數(shù)B.負數(shù)C.零D.不確定的值

56.有如下程序:main(){inta[3][3]={{i,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d\n",s);}該程序的輸出結(jié)果是______。

A.18B.19C.20D.21

57.設(shè)x、y和z是int型變量,且x=4,y=6,z=8,則下列表達式中值為0的是()。

A.x&&y

B.x<=y

C.x‖y+z&&y-z

D.!((x<y)&&!z‖1)

58.下列術(shù)語中,與數(shù)據(jù)的存儲結(jié)構(gòu)有關(guān)的是______。

A.隊列B.棧C.二叉樹D.堆

59.

執(zhí)行下列程序中的輸出語句后,a的值是()。

main

{inta;

printf("%d\n",(a=2*3,a*5,a+7));

}

A.17B.37C.6D.13

60.設(shè)有如下說明typedefstructST{longa;intb;charc[2];}NEW;則下面敘述中正確的是______。A.以上的說明形式非法B.ST是一個結(jié)構(gòu)體類型C.NEW是一個結(jié)構(gòu)體類型D.NEW是一個結(jié)構(gòu)體變量

四、選擇題(20題)61.有以下程序

62.

63.有以下程序程序運行后的輸出結(jié)果是()。

A.21B.11C.20D.10

64.

65.

66.

67.為了提高測試的效率,應(yīng)該()。

A.隨機選取測試數(shù)據(jù)

B.取一切可能的輸入數(shù)據(jù)作為測試數(shù)據(jù)

C.在完成編碼以后制定軟件的測試計劃

D.集中對付那些錯誤群集的程序

68.

69.在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。

A.人工管理階段B.文件系統(tǒng)階段C.數(shù)據(jù)庫系統(tǒng)階段D.三個階段相同

70.(28)在數(shù)據(jù)管理技術(shù)的發(fā)展過程中,經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中數(shù)據(jù)獨立性最高的階段是()

A.數(shù)據(jù)庫系統(tǒng)

B.文件系統(tǒng)

C.人工管理

D.數(shù)據(jù)項管理

71.以下敘述中錯誤的是()。

A.函數(shù)的返回值類型不能是結(jié)構(gòu)體類型,只能是簡單類型

B.函數(shù)可以返回指向結(jié)構(gòu)體變量的指針

C.可以通過指向結(jié)構(gòu)體變量的指針訪問所指結(jié)構(gòu)體變量的任何成員

D.只要類型相同,結(jié)構(gòu)體變量之間可以整體賦值

72.設(shè)有定義:intm=0;。以下選項的四個表達式中與其他三個表達式的值不相同的是()。

A.++mB.m+=1C.m++D.m+1

73.

74.設(shè)有下列二叉樹:

對此二叉樹中序遍歷的結(jié)果為()。

A.ACBDEFB.DEBFCAC.ABDECFD.DBEAFC

75.有三個關(guān)系R、s和T如下:

由關(guān)系R和s通過運算得到關(guān)系T,則所使用的運算為()。

A.并B.自然連接C.笛卡爾積D.交

76.在一個C語言源程序文件中所定義的全局變量,其作用域為()。

A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

77.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是A.循環(huán)隊列B.帶鏈隊列C.二叉樹D.帶鏈棧

78.下列描述錯誤的是()。

A.繼承分為多重繼承和單繼承

B.對象之間的通信靠傳遞消息來實現(xiàn)

C.在外面看不到對象的內(nèi)部特征是基于對象的“模塊獨立性好”這個特征

D.類是具有共同屬性、共同方法的對象的集合

79.對于一個正常運行的C程序,以下敘述中正確的是()。

A.程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

B.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束.

C.程序的執(zhí)行總是從main函數(shù)開始、

D.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:從m個學生的成績中統(tǒng)計出低于平均分的學生人數(shù),人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲單元中。例如,輸入8名學生的成績:6070809065758595則低于平均分的學生人數(shù)為4(平均分為77.5)。實際輸入時學生數(shù)以“Enter”鍵作為結(jié)束,成績與成績之間也與Enter鍵作為分隔。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將兩個兩位數(shù)的正整數(shù)a、b合并成一個整數(shù)放在c中。合并的方式是將a中的十位數(shù)和個位數(shù)依次放在c數(shù)的十位和千位上,b中的十位數(shù)和個位數(shù)依次放在c數(shù)的百位和個位上。例如,當a=45,b=12時,調(diào)用該函數(shù)后,c=5142。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}

參考答案

1.D解析:如果是指針型變量或數(shù)組名,則變量前不加地址符號&,所以選項A的說法有誤。必須有地址列表項才能實現(xiàn)正確輸入,所以選項B的說法有誤。在輸入數(shù)據(jù)時,不可以指定實型數(shù)據(jù)的精度,所以選項C的說法有誤。只有選項D的說法正確。

2.C

\n語句charp[]={a,b,c);定義了一個一維字符數(shù)組p[],并用3個字符a,b,c進行了初始化;而語句q[]='abe'表示定義了一個一維字符數(shù)組,并用一個字符串常量'abc'進行了初始化。在C語言中,系統(tǒng)在每個字符串常量的最后自動加入一個字符\0作為字符串的結(jié)束符。所以函數(shù)sizeof(q)=4,而sizeof(p)=3,因而選項C為正確答案。

\n

\n

\n

3.Bc語言中整型變量分為4種,基本型int,短整型shortint,長整型longint和無符號型(unsignedint、un-signedshort、unsignedlong)。因此B)選項不屬于c語言的類型。

4.C

5.A

6.Adefault語句在switch語句中可以省略,所以B選項錯誤;switch語句中并非每個case后都需要使用break語句,所以C選項錯誤;break語句還可以用于for等循環(huán)結(jié)構(gòu)中,所以D選項錯誤。故本題答案為A選項。

7.A

8.D

9.A解析:在棧中,允許插人與刪除的一端稱為棧頂,而不允許插入與刪除的另一端稱為棧底。棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素。故本題選A。

10.Bmain函數(shù)中,根據(jù)“b=2,c=3”可知表達式“b>=2&&c<=3”為真,flag值為1。由“a=1”和外層switch語句的case標號沒有break語句,可知外層switch語句執(zhí)行case1,case0。對于外層case1:嵌套的switch語句根據(jù)“flag=1”執(zhí)行case1,執(zhí)行“printf(“%%”);”,輸出“%”,接著執(zhí)行break語句,結(jié)束內(nèi)層switch執(zhí)行外層;對于外層case0:嵌套的switch語句根據(jù)“c=3”執(zhí)行default語句,執(zhí)行“printf(“##”);”,輸出“##”。故本題答案為B選項。

11.D解析:算法的時間復(fù)雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算工具以及程序員的水平無關(guān)。

選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤。因為算法所編寫的程序長度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。

選項C錯誤,因為根據(jù)一個算法所編制出的程序程序中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。

所以,本題的正確答案為D。

12.D第1個if語句是單獨的一條語句,所以執(zhí)行完第1個if語句后,r的值仍為初值0。第2個if語句與后續(xù)的兩個elseif都是嵌套的,所以只會執(zhí)行其中的一個語句,即“if(b==2)r=2;”這條語句。故本題答案為D選項。

13.B解析:先計算關(guān)系表達式a<b=2<3為真(表達式為真時,如果變量為int型變量則真用1表示,假用0表示),即a=1。

14.C對象的封裝性是指從外面看只能看到對象的外部特性,而對象的內(nèi)部,其處理能力的實行和內(nèi)部狀態(tài)對外是不可見的,是隱蔽的。

15.C

16.C

17.B解析:模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。耦合性與內(nèi)聚性是模塊獨立性的兩個定性標準,耦合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各模塊的內(nèi)聚性越強,則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。本題答案為B。

18.A指針變量必須區(qū)分基類型,可以向指針所指內(nèi)存單元寫入與基類型相同的數(shù)據(jù),而不能寫入任意數(shù)據(jù),選項A錯誤,選項B正確;指針可以指向與其基類型相同的普通變量,選項C正確;指針是一個內(nèi)存地址,它是一個整數(shù),可以通過加法運算,使指針指向下一個內(nèi)存單元,選項D正確。故本題答案為A選項。

19.D

20.D解析:D中的操作將會丟失r后面的鏈表結(jié)構(gòu),不能保持鏈表的連續(xù)。

21.j++a[j]>a[j]

22.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函數(shù)只有一個參數(shù),該參數(shù)指定了需要分配多少字節(jié)的內(nèi)存。然后將分配好的內(nèi)存塊的首地址作為void*(未知類型指針)返回.故標準的調(diào)用形式應(yīng)該寫成:

p(double*)malloc(sizeof(double));

23.0

24.aa解析:“z”的ASCII碼值為122,經(jīng)過c-25運算后得97,以字符形式輸出是a。

25.DDBBCCDDBBCC解析:C語言對枚舉的定義規(guī)定:在枚舉中聲明的各個枚舉元素,如果沒有明確指出某個枚舉元素的值,它的上—個元素存在并有明確值的情況下,這個牧舉元素的值為其上一個元素的值+1。在本題中,沒有明確說明枚舉元素em3的值,則em3=cm2+1=1+1=2,進而可知,在printf()打印函數(shù)中,要打印的數(shù)組元素是aa[3]、aa[1]、aa[2],因此最后的打印結(jié)果應(yīng)當為'DDBBCC'。

26.8181解析:將S(i+j)展開來有:S(i+j)=S(6+8)=4×6+8×6+8+1=81。

27.b[j][i]=a[i][j]b[j][i]=a[i][j]解析:本題考查二維數(shù)組的基本知識。它是要將一個二維數(shù)組,的行和列元素互換后存放到另一個二維數(shù)組b中,只要將數(shù)組a的行標和列標互換,然后賦給數(shù)組b即可。

28.a=6a=6解析:字符指針p++使指針向后移動一個字符的位置,而*p則是取得指針p所在位置的字符元素。

29.存儲結(jié)構(gòu)

30.20020,0解析:本題考查的知識點是if語句的基本概念。在主函數(shù)中首先定義了三個整型變量x、y,t,并分別給它們賦初值為10,20,0,接著執(zhí)行if語句,在if后面括號內(nèi)的條件表達式中,條件“x==y”即“10==20”不成立,則不執(zhí)行其后的語句“t=x”,然后退出if語句,順序執(zhí)行語句X=y;y=t;。執(zhí)行完這兩條語句后x的值變?yōu)?0,y的值變?yōu)?,所以最后輸出x,y的值為20和0。

31.概念(或概念級)概念(或概念級)

32.20

33.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:與棧類似,隊列也是線性表,也町以采用鏈式存儲結(jié)構(gòu)。

34.1515解析:程序通過遞歸調(diào)用實現(xiàn)求數(shù)組aa各元素之和,即a[4]+a[3]+a[2]+a[1]+a[0]=15。

35.n1=%d\nn2=%d\n或n1=%d\nn2=%d或n1=%2d\nn2=%2d\n或n1=%2d\nn2=%2dn1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2d\\n或n1=%2d\\nn2=%2d解析:printf函數(shù)有兩種參數(shù):格式控制參數(shù)和輸出項參數(shù),其中格式控制參數(shù)由兩種成分組成:格式說明和普通字符,普通字符將被簡單地復(fù)制顯示,格式說明項將引起一個輸出參數(shù)項的轉(zhuǎn)換與顯示,它是由“%”引出并以一個類型描述符結(jié)束的字符串。本題中,n1=和n2=就是普通字符,可以直接顯示,又因為n1,n2為整數(shù),所以格式說明項為%d,也可以在%與d之間加上域?qū)?,另外還要在每行輸出結(jié)束時加轉(zhuǎn)義字符\\n進行換行。所以,應(yīng)填寫n1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2dn或n1=%2d\\nn2=%2d。

36.*s-*t*s-*t解析:兩字符串大小比較必須從它們的首字符開始,在對應(yīng)字符相等情況下循環(huán),直至不相等結(jié)束。相等時,若字符串已到了字符串的結(jié)束標記符,則兩字符串相同,函數(shù)返回0值;如還有后繼字符,則準備比較下一對字符。對應(yīng)字符不相同,循環(huán)結(jié)束。循環(huán)結(jié)束時,就以兩個當前字符的差返回。所以在空框處應(yīng)填入*s-*t,保證在e>t時返回正值,當s<t時返回負值。

37.11解析:在執(zhí)行邏輯表達式'j=!ch&&i++'時,首先判斷j=!ch的值,因為'ch=\'$\''不為0,所以'j=!ch=0',編譯系統(tǒng)便不再計算表達式'i++'的值,i的值不變,仍為1。

38.指針P指向數(shù)組a的首地址,執(zhí)行語句p++;后p指向數(shù)組a的第2個元素的地址,即a[1]的地址,因此*p=a[1]=4。\r\n\r\n

39.xx解析:函數(shù)的定義形式為:

函數(shù)類型函數(shù)名(形參表)

{

類型說明語句;

執(zhí)行語句;

}

本題中函數(shù)的功能是:累積變量以求捐變量的Y次方。

40.00解析:根據(jù)運算符的運算順序可知,該表達式最后運算的是與(&&)運算,而任何表達式與“0”進行“與”運算,結(jié)果都為0。

41.D解析:本題考查switch語句的掌握。必須撐握以下內(nèi)容:首先應(yīng)該明白switch語句的語法格式:

switch語句的語法格式為:

switch(表達式)

{

case常量表達式1:語句組1;

case常量表達式2:語句組2;

……

case常量表達式n:語句組n;

default:語句組n+1;

}

另外,注意以下幾點關(guān)于switch語句的重點:

①系統(tǒng)在執(zhí)行時計算開關(guān)表達式的值;②根據(jù)所得的值在各個case標號表達式中尋找匹配,直到發(fā)現(xiàn)與表達式匹配的標號(本例中匹配的是case'B':);③找到匹配后執(zhí)行后面相應(yīng)的語句表,順序往下執(zhí)行;④如果無相匹配的標號,若存在default標號,則執(zhí)行該語句標號后面的語句表n+1;當不存在default標號時,不執(zhí)行switch中的任何一個語句表。

一般而言,在多分支結(jié)構(gòu)中總會出現(xiàn)“意外”的情況,這時均可歸入default:程序段,作統(tǒng)一的處理;default標號是可選性的,不必每次都有,視需要而定。switch語句中還可以包含switch語句,形成switch的嵌套。

42.B解析:定義b為整型數(shù),c為字符數(shù)組,所以在輸入語句的地址表列中,要在b前加上取址符“&”,而c就是字符數(shù)組的首地址,所以不用加上取址符&。

43.B解析:本題主要考查結(jié)構(gòu)指針:p=&st,訪問結(jié)構(gòu)體的成員,可以通過結(jié)構(gòu)變量訪問,即st.i,也可以用等價的指針形式,即(*p).i和p->i。

44.D解析:使用人工或自動手段來運行或測定某個系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或是弄清預(yù)期結(jié)果與實際結(jié)果之間的差別。軟件測試的目的是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。測試要以查找錯誤為中心,而不是為了演示軟件的正確功能。

45.D解析:變量b的初值等于2,所以表達式b<<2表示b的值二進制左移兩位,即擴大4倍,所以變量b的等于8。然后與a的值1進行異或運算,得9。

46.B解析:本題考查函數(shù)調(diào)用。將a,b,c的值代入函數(shù)調(diào)用fun((int)fun(a+c,b),a-c)可得到fun((int)fun(10,5),-6)。函數(shù)調(diào)用分為兩步:

①調(diào)用函數(shù)fun(10,5)。

②利用強制類型轉(zhuǎn)換(int)將函數(shù)fun(10,5)的返回值15.000000轉(zhuǎn)換成15,再將其結(jié)果作為函數(shù)的實參進行第二次函數(shù)調(diào)用fun(15,-6),其結(jié)果為9。

47.C解析:棧是一種后進先出表,選項C中,先出棧的是3,說明此時棧內(nèi)必然有1,2,由于1先于2進淺,所以1不可能在2之前出棧,故選項C這種出棧序列是不可能的。

48.B解析:本題考核的知識點是C程序從編寫到生成可執(zhí)行文件的步驟。C語言采用編譯方式將源程序轉(zhuǎn)換為二進制的目標代碼,編寫好一個C程序到完成運行一般經(jīng)過以下幾個步驟:編輯;編譯,就是將已經(jīng)編輯好的源程序翻譯成二進制的目標代碼,經(jīng)編譯后的得到的二進制代碼還不能直接執(zhí)行,因為每一個模塊往往是單獨編譯的,必須把經(jīng)過編譯的各個模塊的目標代碼與系統(tǒng)提供的標準模塊連接后才能運行;連接,將各模塊的二進制目標代碼與系統(tǒng)標準模塊經(jīng)連接處理后,得到具有絕對地址的可執(zhí)行文件,它是計算機能直接執(zhí)行的文件;執(zhí)行,執(zhí)行一個經(jīng)過編譯和連接的可執(zhí)行的目標文件。由以上定義可知,選項A、C、D均不正確。所以,4個選項中選項B符合題意。

49.A解析:考查switch語句的使用。switch語句的條件是'a%3=15%3=0',所以執(zhí)行case0后面的語句,m++;m=1,然后就執(zhí)行break,跳出switch語句,所以最后輸出m的值為1\ue009。

50.C解析:本題主要考查按位或運算,x=061(二進制為00110001),y=016(二進制為00001110),進行或運算后結(jié)果為00111111。

51.A解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。函數(shù)的形參是函數(shù)定義時由用戶定義的形式上的變量,實參是函數(shù)調(diào)用時,主調(diào)函數(shù)為被調(diào)函數(shù)提供的原始數(shù)據(jù)。

在函數(shù)調(diào)用時,實參和其所對應(yīng)的形參分別占用不同的存儲單元,彼此之間不影響。

52.D解析:本題考查的是函數(shù)的定義。C語言中有兩種函欺,一種是沒有返回值的函數(shù),這種函數(shù)的返回值類型是void;另一種是有返回值的函數(shù),其返回值類型是void以外的任何類型。void類型函數(shù)不能返回值,否則編譯通不過。本題是一道陷阱題,考生如果沒注意到F()函數(shù)被定義為void類型的話,很容易錯選為選項A,其實應(yīng)該選擇選項D,編譯出錯!

53.D

54.B解析:本題主要考查按位與運算的知識點。按位與是對兩個運算量相應(yīng)的位進行邏輯與,“&”的規(guī)則與邏輯與“&&”相同。x=4的二進制為00000100,y=5的二進制為00000101,x&y=00000100,轉(zhuǎn)化為十進制即為4。

55.A解析:本題考查字符串比較函數(shù)和兩個字符串比較的原則兩個知識點,①原則是依次比較兩個字符串同一位置的對字符,若它們的ASCII碼值相同,則繼續(xù)比較下一對字符,若它們的ASCII碼值不同,則ASCII碼值較大的字符所在的字符串較大;若所有字符相同,則兩個字符串相等;若一個字符串全部i個字符與另一個字符串的前i個字符相同,則字符串較長的較大。②strcmp(s1,s2)的返回值,當str1<str2時,返回值<0;當str1=str2時,返回值為0;當str1>str2,返回值>0。

56.A解析:題中的外循環(huán)只執(zhí)行了2次:

第1次:a[1][0]=3,a[1][1]=4,所以s=7;

第2次:a[2][0]=5,a[2][1]=6,a[2][2]=0,所以s=7+5+6+0=18。

57.D解析:本題考查邏輯運算符的使用。當“&&”的兩個運算對象都是邏輯1時,表達式才返回值是1;當“‖”的兩個運算對象至少有一個是邏輯1時,表達式返回值是1。選項A)中,x和y都是邏輯1。所以返回值是1:選項B)中,x=4<=y=6為邏輯1,所以返回值是1;選項C)中,y+z的值等于14,非0,y-z的值為-2,非0,所以邏輯表達式4‖14&&-2的值不為0;選項D)中,x<y為1,!z為0,1&&0為1,0‖1為1,因此,!1為0。

58.C

59.C解析:本題考查逗號表達式。本題的返回值是a+7,a=2*3=6,a+7=13(注意:本題問的是a的值,而不是程序的輸出值)。

60.C解析:將題目中的定義語句去掉前面的typedef和后面的NEW(分號保留),就是一條完整的結(jié)構(gòu)體定義語句,其中struct是說明符,ST是結(jié)構(gòu)體名,大括號里面的是結(jié)構(gòu)體成員的定義。此時要聲明該結(jié)構(gòu)體變量時需要使用struct加結(jié)構(gòu)體名一起來聲明,struetST一起構(gòu)成一個結(jié)構(gòu)體類型,就好像字符類型char.若只去掉前面的typedef,就是一條結(jié)構(gòu)體定義同時聲明一個結(jié)構(gòu)體變量NEW的語句,因為NEW的前面部分是structST的完整寫法??梢钥醋魇莝tructST.C語言允許用typedef說明一種新類型名,其語法格式為:

typedef類型名標識符;

以后就可以用該標識符來代替被說明的類型名了。因此,當前面存在typedef時,該語句就變成了給stmctST的完整寫法定義一個新的名稱NEW。所以,此時的NEW是一個結(jié)構(gòu)體類型,它相當于structST,即可以和char一樣單獨用來聲明該結(jié)構(gòu)體變量,而ST只是一個結(jié)構(gòu)體名,不能單獨用來聲明變量。所以,4個選項中C符合題意。

61.A函數(shù)fun的功能是將第二個字符串鏈接到第一個字符串的末尾,第二個字符串

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論