2021-2022年陜西省咸陽市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第1頁
2021-2022年陜西省咸陽市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第2頁
2021-2022年陜西省咸陽市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第3頁
2021-2022年陜西省咸陽市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第4頁
2021-2022年陜西省咸陽市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021-2022年陜西省咸陽市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有以下的定義:‘intt[3][2];”,能正確表示t數(shù)組元素地址的表達(dá)式是()。

A.&t[3][2]B.t[3]C.t[l]D.t[2][2]

2.公司中有多個部門和多名職員,每個職員只能屬于一個部門,一個部門可以有多名職員。則實(shí)體部門和職員間的聯(lián)系是()。

A.1:m聯(lián)系B.m:n聯(lián)系C.1:1聯(lián)系D.m:1聯(lián)系

3.下列程序的運(yùn)行結(jié)果為()。

#deflneMAX(x,y)(x)>(y)(x):(y)

main()

{inta=2,b=3,c=1,d=3,t;

printf("%d\n",(MAX(a+b,c+D))*100);

}A.A.500B.5C.4D.400

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

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

5.執(zhí)行下面程序中的輸出語句后,輸出結(jié)果是()。A.65B.20C.15D.10

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

A.軟件交付使用后還需要進(jìn)行維護(hù)

B.軟件一旦交付使用就不需要再進(jìn)行維護(hù)

C.軟件交付使用后其生命周期就結(jié)束

D.軟件維護(hù)是指修復(fù)程序中被破壞的指令

7.設(shè)有以下程序段:要求輸入字符串給結(jié)構(gòu)體變量rec的title成員,錯誤的輸入語句是()A.seanf(”%s”Ptrtitle);

B.scanf(”%s”,rec.title);

C.scanf(’’%s”,(*pu).title);

D.scanf(”%s”,ptr->title);

8.

9.依次讀入數(shù)據(jù)元素序列{a,b,c,d,e,f,g}進(jìn)棧,元素進(jìn)?;虺鰲m樞蚴俏粗模铝行蛄兄?,不可能成為棧空時彈出的元素構(gòu)成序列的有()

A.{d,e,c,f,b,g,a}

B.{f,e,g,d,a,c,b}

C.{e,f,d,g,c,b,a}

D.{c,d,b,e,f,a,g}

10.有嵌套的if語句:if(a<b) if(a<c)k=a; elsek=c;elseif(b<c)k=b;elsek=c;以下選項中與上述if語句等價的語句是()。

A.k=(a<b)?((b<c)?a:b):((b>c)?b:c);

B.k=(a<b)?((a<c)?a:c):((b<c)?b:c);

C.k=(a<b)?a:b;k=(b<c)?b:c;

D.k=(a<b)?a:b;k=(a<c)?a:c;

11.有以下程序:

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);

printf("%s,%s\n",ss,aa);

}

程序運(yùn)行結(jié)果是A.A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

12.算術(shù)運(yùn)算符和圓括號有不同的運(yùn)算優(yōu)先級,對于表達(dá)式“a+b+c*(d+e)”,關(guān)于執(zhí)行順序,以下說法正確的是()。

A.先執(zhí)行“(d+e)”得r2,再執(zhí)行“c*r2”得r3,再執(zhí)行“a+b”得r1,最后執(zhí)行“r1+r3”得表達(dá)式最后結(jié)果

B.先執(zhí)行“a+b”得r1,再執(zhí)行“(d+e)”得r2,再執(zhí)行“c*r2”得r3,最后執(zhí)行“r1+r3”得表達(dá)式最后結(jié)果

C.先執(zhí)行“(d+e)”得r2,再執(zhí)行“c*r2”得r3,再執(zhí)行“b+r3”得r4,最后執(zhí)行“a+r4”得表達(dá)式最后結(jié)果

D.先執(zhí)行“a+b”得r1,再執(zhí)行“r1+c”得r5,再執(zhí)行“(d+e)”得r2,最后執(zhí)行“r5*r2”得表達(dá)式最后結(jié)果

13.設(shè)有定義“char*c;”,以下選項中能夠使c正確指向一個字符串的是()。

A.charstr[]=“string”;c=str;

B.scanf(“%s”,c);

C.c=getchar();

D.*c=“string”;

14.有下列程序:

main()

{inty=20;

do{y--;}while(--y);

phntf("%d\n",y--);

}

當(dāng)執(zhí)行程序時,輸出的結(jié)果是()。

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

15.設(shè)a和b均為double型變量,且a=5.5,b=2.5,則表達(dá)式(int)a+b/b的值是A.6.5B.6C.5.5D.6

16.在1,2,3,......1000中,有()個數(shù)各位乘積為0。

A.100B.101C.172D.181E.190F.191

17.若有定義intx=3,y=2和floata=2.5,b=3.5,則表達(dá)式:(x+y)%2+(int)a/(int)b的值是()。

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

18.設(shè)散列表長m=14,散列函數(shù)H(K)=K%11,已知表中已有4個結(jié)點(diǎn):r(15)=4;r(38)=5;r(61)=6;r(84)=7,其他地址為空,如用二次探測再散列處理沖突,關(guān)鍵字為49的結(jié)點(diǎn)地址是_____。

A.8B.3C.5D.9

19.有以下程序:#include<stdio.h>main(){inta[5]={1,2,3,4,5),b[5]={0,2,1,3,o},i,s=0;for(i=o;i<5;i++)s=s+a[b[i]];printf(”%d\n”,s);}程序運(yùn)行后的輸出結(jié)果是()。A.6B.10C.11D.15

20.fseek函數(shù)的正確調(diào)用形式是()。

A.fseek(文件指針,起始點(diǎn),位移量)

B.fseek(文件指針,位移量,起始點(diǎn))

C.fseek(位移量,起始點(diǎn),文件指針)

D.fseek(起始點(diǎn),位移量,文件指針)

二、2.填空題(20題)21.若a=1,b=2,c=3,d=4;則條件表達(dá)式a>b?a:c<d?c:d的結(jié)果為()。

22.以下程序的運(yùn)行結(jié)果是【】。

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%5ld\n",k);}

23.若有說明chars1[]="Thatgirl",s2[]="isbeautiful";則使用函數(shù)strcmp(s1,s2)后,結(jié)果是______。

24.某二叉樹中度為2的結(jié)點(diǎn)有18個,則該二叉樹中有【】個葉子結(jié)點(diǎn)。

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

#include<stdio.h>

main()

{inti;

for(i-'a';i<'f';i++,i++)printf("%c",i-'a'+'A');

printf("\n");

}

26.在關(guān)系運(yùn)算中,查找滿足一定條件的元組的運(yùn)算稱之為【】。

27.以下程序輸出的最后一個值是【】。

intff(intn)

{staticintf=1;

f=f*n;

retumf;

}

main()

{inti;

for(i=1;i<=5;i++)printf("%d\n",ff(i))i

}

28.設(shè)y是int型變量,請寫出y為奇數(shù)的關(guān)系表達(dá)式【】。

29.棧中允許進(jìn)行插入和刪除的一端叫做______。

30.若有以下定義語句,則不移動指針p,并且通過指針p引用值為98的數(shù)組元素的表達(dá)式是【】。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

31.對于長度為n的線性表,若進(jìn)行順序查找,時間復(fù)雜性為【】;若進(jìn)行二分查找,則時間復(fù)雜性為【】。

32.數(shù)據(jù)庫技術(shù)的主要特點(diǎn)為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)一管理與控制。

33.在鏈表的運(yùn)算過程中,能夠使空表與非空表的運(yùn)算統(tǒng)一的結(jié)構(gòu)是______。

34.執(zhí)行下面程序段后,k的值是【】。

r=1;n=203;k=1

do}k*=n%10*r;n/=10;r++;}while(n);

35.數(shù)據(jù)模型是用來描述數(shù)據(jù)庫的結(jié)構(gòu)和語義的,數(shù)據(jù)模型有概念數(shù)據(jù)模型和結(jié)構(gòu)數(shù)據(jù)模型兩類,E-R模型是【】

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

main()

{chars[]="ABCD",*p;

for(p=s+1;p<s+4;p++)printf("%s\n",p);}

37.某二叉樹中度為2的結(jié)點(diǎn)有n個,則該二叉樹中有【】個葉子結(jié)點(diǎn)。

38.若有以下程序:

main()

{int,p,a=5;

if(P=a!=0)

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

else

printf("%d\n",p+2);

}

執(zhí)行后輸出結(jié)果是【】。

39.有以下程序:

main()

{inta=7,b=8,*p,*q,*r;

p=&a;q=&b;

r=p;p=q;q=r;

printf("%d,%d,%d,%d\n",*p,*q,a,b);

}

程序運(yùn)行后的輸出結(jié)果是【】。

40.若有定義doublea[5];,則a數(shù)組元素下標(biāo)的上限為______。

三、1.選擇題(20題)41.已知intt=0;while(t=1){…}則以下敘述正確的是()。

A.循環(huán)控制表達(dá)式的值為0B.循環(huán)控制表達(dá)式的值為1C.循環(huán)控制表達(dá)式不合法D.以上說法都不對

42.下列敘述中錯誤的是()。

A.在C語言中,對二進(jìn)制文件的訪問速度比文本文件快

B.在C語言中,隨機(jī)文件以二進(jìn)制代碼形式存儲數(shù)據(jù)

C.語句FILEfp;定義了一個名為fp的文件指針

D.C語言中的文本文件以ASCII碼形式存儲數(shù)據(jù)

43.有以下程序

#include<stdio.h>

main()

{inta[]={1,2,3,4},y,*p=&a[3];

--p;y=*p;printf("y=%d\n",y);

}

程序的運(yùn)行結(jié)果是

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

44.某一個漢字的區(qū)位碼為(2113H),則其內(nèi)碼為()

A.(2199)10B.(C1B3H)C.(C1B3)10D.(B1B3H)

45.若輸入60和13,以下程序的輸出結(jié)果為()#defineSURPLUS(a,b)((a)%(b))main(){inta,b;scanf("%d,%d",&a,&b);prind("\n",SURPLUS(a,b));}

A.60B.13C.73D.8

46.若有程序:fun(inta,intB){staticintc=0;c+=a+b;returnc;}main(){intx=5,y=3,z=7,rr=fun((y,x+y),z);r=fun(x,y);printf("%d\n",r);}上面程序的輸出結(jié)果是_______。

A.23B.15C.19D.18

47.對于下列定義,不正確的敘述是()。uniondata{inta;charb;doublec;}x=y;

A.變量x所占內(nèi)存的長度等于成員c的長度

B.變量x的地址和它的各成員地址都是相同的

C.可以在定義時對x初始化

D.不能對變量x賦值,故x=y非法

48.若有如下程序:main(){inta[3][4]={1,2,3,4,5,6,7,8,9};printf("%d%d%d\n",a[0][1],a[1][2],a[2][3]);}則程序運(yùn)行后的輸出結(jié)果是()

A.270B.480C.160D.不定值

49.有以下程序main(){inti,n=0;for(i=2;i<5;i++){do{if(i%3)continue;n++;}while(!i);n++;}printf("n=%d\n",n);}程序執(zhí)行后輸出結(jié)果是

A.n=5B.n=2C.n=3D.n=4

50.C語言規(guī)定函數(shù)返回值的類型由()

A.在定義時所指定的函數(shù)類型所決定

B.調(diào)用該函數(shù)時的主調(diào)函數(shù)類型所決定

C.return語句中的表達(dá)式類型所決定

D.調(diào)用該函數(shù)時系統(tǒng)臨時決定

51.以下錯誤的定義語句是()。

A.intx[][3]={{0},{1},{1,2,3}};

B.intx[4][3]={{1,2,3},{1,2,3),{1,2,3},{1,2,3}};

C.intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

D.intx[][3]={1,2,3,4};

52.下列有關(guān)數(shù)據(jù)庫的描述,正確的是______。

A.數(shù)據(jù)庫是一個DBF文件B.數(shù)據(jù)庫是一個關(guān)系C.數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合D.數(shù)據(jù)庫是一組文件

53.若調(diào)用一個函數(shù),且此函數(shù)中沒有return語句,則以下正確的說法是______。

A.該函數(shù)沒有返回值B.該函數(shù)返回若干個系統(tǒng)默認(rèn)值C.該函數(shù)能返回一個用戶所希望的函數(shù)值D.該函數(shù)返回一個不確定的值

54.有以下程序:intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf("%if",&x);x=fun(x);printf("%d\n",x);}執(zhí)行程序時,給變量X輸入10,程序的輸出結(jié)果是()。A.55B.54C.65D.45

55.有以下程序:#include<stdio.h>main(){charcl='1',c2='2';cl=getchar();c2=getchar();putchar(c1);putchar(c2);}當(dāng)運(yùn)行時輸入:a<回車>后,以下敘述正確的是()。

A.變量c1被賦予字符a,c2被賦予回車符

B.程序?qū)⒌却脩糨斎氲?個字符

C.變量c1被賦予字符a,c2中仍是原有字符2

D.變量c1被賦予字符a,c2中將無確定值

56.根據(jù)下列的定義,能打印出字母P的語句是()。structstu{charname[10];ihtage;};structstus[10]={"John",11,"Paul",12,"Mary",11,"adam",12};

A.printf("%c",s[3].name);

B.printf("%c",s[3].name[1]);

C.printf("%c",s[2].name[1]);

D.printf("%c",s[1].name[0]);

57.常采用的兩種存儲結(jié)構(gòu)是()。

A.順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)B.散列方法和索引方式C.鏈表存儲結(jié)構(gòu)和數(shù)組D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)

58.下面能正確進(jìn)行字符串賦值操作的是

A.chars[5]={"ABCDE"};

B.chars[5]={′A′,′B′,′C′,′D′,′E′};

C.char*s;s="ABCDE";

D.char*s;scanf("%s",s);

59.下面程序的輸出結(jié)果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}

A.121,0,4B.2,2,2C.0,2,4D.0,2,2

60.C語言提供的合法關(guān)鍵字是()

A.switchB.cherC.caseD.default

四、選擇題(20題)61.若有下面的程序段

#include"stdio.h"

main()

{inti=6;

while(i--)

printf("%d",--i);

printf("\n");

}

那么程序的輸出結(jié)果為

A.531B.420

C.654321D.死循環(huán)

62.計算機(jī)能直接執(zhí)行的程序是()。A.可執(zhí)行程序B.目標(biāo)程序C.匯編程序D.源程序

63.下列選擇中,不能用做標(biāo)識符的是()。

A.1234B._1_2C.int_2_D.2_int_

64.有以下程序:

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

A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

65.將c語言的整數(shù)設(shè)為整數(shù)類1,則下面屬于類I實(shí)例的是()。

A.一103B.10E3C.10.3D.“0103”

66.(54)在下列幾種排序方法中,要求內(nèi)存量最大的是______。

A.插入排序

B.選擇排序

C.快速排序

D.歸并排序

67.有以下程序在VC6平臺上編譯運(yùn)行。程序運(yùn)行后的輸出結(jié)果是(

)。

A.4,8B.4,4C.2,4D.10,6

68.

有以下程序:

main

{intk=5;

while(--k)printf("%d",k-=3);

printf("\n");

}

執(zhí)行后的輸出結(jié)果是()。

A.1B.2C.4D.死循環(huán)

69.

70.下面各選項中,均是C語言合法標(biāo)識符的選項組是()。

A.

B.

C.

D.

71.下列程序的輸出結(jié)果是()。

#include<stdio.h>

main

{inti;

for(i=1;i<=10,i++)

{if((i*i>=20)&&(i*i<=100))

break;

}

printf("%d\n",i*i;

}A.A.49B.36C.25D.64

72.

73.

74.

75.在以下給出的表達(dá)式中,與while(E)中的(E)不等價的表達(dá)式是()。

76.有以下程序:

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

A.AfternoonB.ftemoonC.MorningD.oming

77.下列關(guān)于指針變量賦空值的說法錯誤的是

A.當(dāng)賦空值的時候,變量指向地址為0的存儲單元B.賦值語句可以表達(dá)為變量名=’\0’;

C.賦值語句可以表達(dá)為變量名=0;D.一個指針變量可以被賦空值

78.

79.數(shù)據(jù)庫關(guān)系模型中可以有三類完整性約束,下列選項中不屬于三類完整性約束的是()。

A.實(shí)體完整性規(guī)則B.參照完整性規(guī)則C.對象完整性規(guī)則D.用戶自定義完整性規(guī)則

80.下列關(guān)于數(shù)據(jù)庫設(shè)計的敘述中,正確的是()。

A.在需求分析階段建立數(shù)據(jù)字典

B.在概念設(shè)計階段建立數(shù)據(jù)字典

C.在邏輯設(shè)計階段建立數(shù)據(jù)字典

D.在物理設(shè)計階段建立數(shù)據(jù)字典

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:從字符串str中,刪除所有大寫字母F。

請修改程序中的錯誤,使它能得到正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

voidproc(char*str)

{

inti,j;

//****found****

for(i=j=0;str[i]一0;i++)

if(str[i]!=F)

//****found****

str[i]=str[i];

str[j]=\0;

}

voidmain

{

charstr[80];

printf("\nEnterastring:");

gets(str);

printf("Theoriginalstring:");

puts(str);

proc(str);

printf("Thestringafterdeleted:");

puts(str);

printf("\n\n");}

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。例如,若二維數(shù)組中的值為13579299946999813570則函數(shù)值為61。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include2#include3#include4#defineM45#defineN56intfun(inta[m][n])7{89}10voidmain()11{12FILE*wf;13intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};14inti,j,y;15system("CLS");16printf("Theoriginaldatais:\n");17for(i=0;i<m;i++)18{for(j=0;j<n;j++)19printf("%6d",aa[i][j]);20printf("\n");21}22y=fun(aa);23printf("\nThesum:%d\nM,y);24printf("\n");25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%d",y);28fclose(wf)29/******************/30}

參考答案

1.C數(shù)組的下標(biāo)是從0開始的,A中越界,行下標(biāo)和列下標(biāo)都不能越界;B中,雖然是個地址,但是也同樣越界了;選項C中表示的是第一個的首地址;選項D表示的為其元素的值,并不是地址。

2.A部門到職員是一對多的,職員到部門是多對一的,因此,實(shí)體部門和職員間的聯(lián)系是l:m聯(lián)系。

3.A解析:本題考查帶參數(shù)的宏的定義及相關(guān)運(yùn)算:(x)>(y)(x):(y)是x>y時輸出x,否則輸出y,調(diào)用(MAX(a+b,c+d))*100時,(a+b=5)>(c+d=4),所以輸出a+b=5,所以x=5*100。

4.A聲明data是結(jié)構(gòu)S的數(shù)組。初始化時data[0].a(chǎn)=10;data[0].b:104);data[1].a(chǎn)=20;data[1].b=200。主函數(shù)中p=data[1];即p.a(chǎn)=data[1].a(chǎn);p.b=data[11.b;執(zhí)行語句prinff(”%dkn”,++(p.A));打印輸出時p.a(chǎn)先增l再打印。即p.a(chǎn)=data[1].a(chǎn)=20,先增1等于21,因此程序運(yùn)行結(jié)果是21。

5.B

6.A解析:維護(hù)是軟件生命周期的最后一個階段,也是持續(xù)時間最長、付出代價最大的階段。軟件工程學(xué)的目的就在于提高軟件的可維護(hù)性,同時也要設(shè)法降低維護(hù)的代價。

軟件維護(hù)通常有以下四類;

①為糾正使用中出現(xiàn)的錯誤而進(jìn)行的改正性維護(hù);

②為適應(yīng)環(huán)境變化而進(jìn)行的適應(yīng)性維護(hù);

③為改進(jìn)原有軟件而進(jìn)行的完善性維護(hù);

④為將來的可維護(hù)和可靠而進(jìn)行的預(yù)防性維護(hù)。

軟件維護(hù)不僅包括程序代碼的維護(hù),還包括文檔的維護(hù)。文檔可以分為用戶文檔和系統(tǒng)文檔兩類。但無論是哪類文檔,都必須與程序代碼同時維護(hù)。只有與程序代碼完全一致的文檔才有意義和價值。由此可知,本題中選項B、C、D中的說法都是錯誤的。

7.A符號“_>”是指針特用的,符號“.”用于指定元素的成員。ptr是指針,只能用符號“一>”,因此選項A錯誤。+P是指定元素(Fee)可以使用“.”運(yùn)算,因此選項D正確。選項B,F(xiàn)ee.title代表數(shù)組title,同理選項C正確。答案為A選項。

8.C

9.B

10.B題目中嵌套語句的含義是當(dāng)“a<b”且“a<c”成立時,將a的值賦給k。如果“a<b”成立而“a<c”不成立,則將c的值賦給k。如果“a<b”不成立而“b<c”成立,則將b的值賦給k。如果“a<b”不成立且“b<c”也不成立,則將c的值賦給k。判斷條件表達(dá)式,只有B選項可以表示這個含義。故本題答案為B選項。

11.D

12.B題干表達(dá)式中,圓括號的優(yōu)先級最高,乘法運(yùn)算符次之,加法運(yùn)算符最低。同優(yōu)先級中,加法運(yùn)算符的結(jié)合性從左向右結(jié)合,所以題干中的表達(dá)式執(zhí)行順序是:先執(zhí)行“a+b”得r1,再執(zhí)行“(d+e)”得r2,再執(zhí)行“c*r2”得r3,最后執(zhí)行“r1+r3”得表達(dá)式最后結(jié)果。故本題答案為B選項。

13.A選項A為正確用法,先將字符串存于字符數(shù)組中,然后將數(shù)組名賦給字符指針(數(shù)組名代表數(shù)組首地址,定義數(shù)組時為其分配確定的地址)。C選項錯誤,getchar函數(shù)輸入一個字符給字符型變量,而不是字符指針。B選項和D選項有類似的錯誤,兩個選項并無語法錯誤,但運(yùn)行時可能會出現(xiàn)問題。因?yàn)樵贐選項和D選項中,字符指針沒有被賦值,是一個不確定的值,指向一個不確定的內(nèi)存區(qū)域,這個區(qū)域可能存放有用的指令或數(shù)據(jù)。在這個不確定的區(qū)域重新存放字符串,可能會發(fā)生無法預(yù)知的錯誤。故本題答案為A選項。

14.D解析:本題考查do…while循環(huán)。當(dāng)--寸是0(即y是0)時結(jié)束循環(huán),輸出y--是先輸出y的值再將y的值減1。

15.D解析:本題考查的知識點(diǎn)是運(yùn)算符的優(yōu)先級。在這個表達(dá)式中,優(yōu)先級最高的是(int)a,也就是對5.5取整,結(jié)果是5,其次是b/b,即2.5/2.5,結(jié)果是1.000000,最后相加結(jié)果為6.000000(表達(dá)式的最終結(jié)果為實(shí)型),所以4個選項中D正確。

16.D

17.D

18.D

19.C本題考查數(shù)組的使用。本題定義了兩個數(shù)組,注意數(shù)組的下標(biāo)是從0開始的,進(jìn)行第1次for循環(huán):當(dāng)i=0時,b[0]為數(shù)組b中第l個元素,結(jié)果為0,那么a[0]也是數(shù)組a中第l個元素,結(jié)果為1,所以S的值為1。第2次循環(huán):i此時自加為l,b[1]為數(shù)組的第2個元素,值為2,所以可求出a[2](數(shù)組中的第3個元素)的值為3,s=s+3,所以S的值為4。進(jìn)入第3次for循環(huán),依此類推,第3次for循環(huán)結(jié)束時s的值為6。第4次for循環(huán),s的值變?yōu)閘0。第5次for循環(huán)時,此時i的值為4,s的值變?yōu)閘l,i=5不符合題意,所以跳出循環(huán),輸出結(jié)果,所以本題答案為C。

20.B解析:本題考查函數(shù)fseek的用法。fseek函數(shù)的調(diào)用形式為:

fseek(文件指針,位移量,起始點(diǎn))

“起始點(diǎn)”用0,1或2代替,0代表“文件開始”,1為“當(dāng)前位置”,2為“文件末尾”。

“位移量”指以“起始點(diǎn)”為基點(diǎn),向前移動的字節(jié)數(shù)。ANSIC和大多數(shù)C版本要求位移量是long型數(shù)據(jù),這樣當(dāng)文件長度大于64k時不致出現(xiàn)問題。ANSIC標(biāo)準(zhǔn)規(guī)定在數(shù)字末尾加一個字母L表示long型。

21.3

22.k=5k=5解析:本題主要考查了函數(shù)的遞歸調(diào)用方法。g=0或\ue008g=1\ue009或g=2是遞歸的終止條件,然后用回代的方法從一個已知值推出下一個值,直到計算出最終結(jié)果。

23.-1-1解析:strcmp(s1,s2)函數(shù)的作用是:對字符數(shù)組s2和字符數(shù)組s1進(jìn)行比較。如果s1<s2,則返回負(fù)數(shù);如果s1==s2,則返回0;如果s1>s2,則返回正數(shù)。

24.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個。本題中度為2的結(jié)點(diǎn)數(shù)為18,故葉子結(jié)點(diǎn)數(shù)為18+1=19個。

25.ACEACE解析:題目中for循環(huán)的循環(huán)變量i從字符'a'變到字符'e',但由于每次循環(huán)后都連續(xù)執(zhí)行了兩次i++,所以for循環(huán)將執(zhí)行3次,循環(huán)變量i的值依次為'a'、'c'、'e'。循環(huán)體中是一條輸出語句,按字符輸出表達(dá)式i-'a'+'A'。因?yàn)榇笮懽帜傅腁SCII碼是連續(xù)的,例如'b'+1='c'、'W'-1='V',而且小寫字母的ASCII碼比大寫字母的大。所以,同一個字母的大小寫字符之差是一個固定值。由此可見,將一個字符從小寫轉(zhuǎn)換為大寫,只需將其減去這個固定值,而將大寫轉(zhuǎn)為小寫可以加上這個固定值。固定值可以通過任一字符的小寫減去大寫來得到。所以本題的i-'a'+'A'=i-('a'-'A'),即讓i減去了此固定值,從而使整個表達(dá)式的值為i所代表的小寫字母的大寫形式。故本題的輸出結(jié)果是ACE。

26.選擇選擇解析:在關(guān)系數(shù)據(jù)庫中,選擇運(yùn)算也是一個元運(yùn)算,關(guān)系R通過選擇運(yùn)算(并由該運(yùn)算給出所選擇的邏輯條件)后仍為一個關(guān)系。這個關(guān)系是由R中的那些滿足邏輯條件的元組所組成。

27.120120解析:靜態(tài)變量的類型說明符是static,靜態(tài)局部變量屬于靜態(tài)存儲方式,它具有以下特點(diǎn):

①靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整個運(yùn)行期間都不釋放。

②對靜態(tài)局部變量是在編譯時賦初值的,即只賦初值一次,在程序運(yùn)行時它已有初值。以后每次調(diào)用函數(shù)時不再重新賦初值而只是保留上次函數(shù)調(diào)用結(jié)束時的值。

③如在定義局部變量時不賦初值的話,則對靜態(tài)局部變量來說,編譯對自動賦初值0(對數(shù)值型變量)或空字符(對字符變量)。(注意:C語言中的非靜態(tài)變量在定義時,系統(tǒng)并不會自動給它賦初值)

④雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后仍然存在,但其他函數(shù)是不能引用它的。

本題中函數(shù)的功能是:與for語句一起求一個整數(shù)的階乘。

28.(y%2)==1或(y%2)!=0(y%2)==1或(y%2)!=0

29.棧頂棧頂解析:棧是限定在表的一端進(jìn)行插入和刪除操作的線性表。在表中,允許插入和刪除的一端叫做“棧頂”,不允許插入和刪除的一端叫做“棧底”。

30.*(p+5)

31.O(n)O(log2n)

32.共享性共享性解析:數(shù)據(jù)庫技術(shù)的主要特點(diǎn)有以下幾個方面:數(shù)據(jù)的集成性,數(shù)據(jù)的高共享性與低冗余性,數(shù)據(jù)的獨(dú)立性,數(shù)據(jù)統(tǒng)一管理與控制。

33.循環(huán)鏈表循環(huán)鏈表解析:在循環(huán)鏈表中,由于設(shè)置了一個頭結(jié)點(diǎn),因此在任何情況下,循環(huán)鏈表中至少有一個結(jié)點(diǎn)存在,從而使空表與非空表的運(yùn)算統(tǒng)一。

34.00解析:本題考查的是do…while循環(huán)。第一次執(zhí)行循環(huán)體,因?yàn)閗=1,r=1,n=20;所以k=1*20%10*1=0,n=20/10=2,r=2;第二次執(zhí)行循環(huán)體,k=0*2%10*2=0,n=10/10=1,r=3;第三次執(zhí)行循環(huán)體,k=0*1%10*3=0,n=1/10=0,r=4。所以k的值為0。

35.概念數(shù)據(jù)模型概念數(shù)據(jù)模型

36.BCDCDDBCD\r\nCD\r\nD解析:本題考查指向字符串的指針的運(yùn)算方法。指針變量p首先指向字符串中的第一個字符A,執(zhí)行p=s+1后,p指向字符串中的第二個字符B,然后輸出值“BCD”并換行,依次執(zhí)行循環(huán)語句。

37.n+1n+1解析:在任意一棵二叉樹中,度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為0的結(jié)點(diǎn)多一個。

38.11解析:首先計算if語句后面的表達(dá)式,根據(jù)運(yùn)算符的優(yōu)先級可知,先算“a!=0”,該值為1,再把1賦值給p,結(jié)果為1(真),執(zhí)行其后的printf語句,輸出的值為1。

39.87788,7,7,8解析:本題中執(zhí)行語句p=&a和q=&b后,*p=7,*q=8;執(zhí)行完語句r=p,p=q,q=r后,*p=8,*q=7,故答案為8,7,7,8。

40.44解析:一維數(shù)組元素的定義形式為:數(shù)組名[N],則該數(shù)組中元素的下限是0,上限是N-1。

41.B解析:t=1是將t賦值為1,所以循環(huán)控制表達(dá)式的值為1。判斷t是否等于1時,應(yīng)用t==1,注意“=”與“==”的用法。

42.C在C語言中,文件指針實(shí)際上是指向一個結(jié)構(gòu)體類型的指針,一般稱這個結(jié)構(gòu)體類型名為FILE,可以用此類型名來定義文件指針。定義文件類型指針變量的一般形式為:FILE*指針變量名:選項c)中少了“*”,所以選項C)錯誤。

43.D解析:在程序中指針變量p初始指向a[3],執(zhí)行p減1后,p指向a[2],語句y=*p的作用是把a(bǔ)[2]的值賦給變量y,所以輸出為y=3。

44.B

45.D

46.A解析:static聲明的外部變量只限于被本文件引用,而不能被其他文件引用。用static來聲明一個變量的作用有:①對局部變量用static聲明,則為該變量分配的空間在整個程序執(zhí)行期間始終存在;②全部變量用static聲明,則該變量的作用域只限于本文件模塊(即被聲明的文件中)。調(diào)用第一個fun,其兩個實(shí)參的值為(3,5+3)與7即8與7,在函數(shù)fun執(zhí)行結(jié)束返回15。第二次調(diào)用fun時,由于static為靜態(tài)類型,其值保留,執(zhí)行fun(5,3)后,其返回值為23,故選A。

47.C解析:本題主要考查的知識點(diǎn)是聯(lián)合體的內(nèi)存使用。聯(lián)合體所占用的內(nèi)存空間為最長的成員所占用的空間,各個成員分量全部是從低地址方向開始使用內(nèi)存單元。不能在定義共用體變量時對它初始化。

48.A

49.D解析:do…while的結(jié)構(gòu)形式為:do循環(huán)體,while(條件表達(dá)式),當(dāng)程序執(zhí)行到do后,先執(zhí)行循環(huán)體一次,然后才對條件表達(dá)式進(jìn)行計算、判斷。若條件表達(dá)式的值為真,則重復(fù)執(zhí)行一次循環(huán)體;否則退出,與while結(jié)構(gòu)相比,do…while結(jié)構(gòu)至少要執(zhí)行一次循環(huán)體;運(yùn)算符%是求模運(yùn)算,即求兩個數(shù)相除的余數(shù)。continue語句的作用時結(jié)束本次循環(huán),即跳過本次循環(huán)中余下尚未執(zhí)行的語句,接著再一次進(jìn)行循環(huán)的條件判定。本題中,當(dāng)i=2時,執(zhí)行do循環(huán)。由于if表達(dá)式的條件為真,執(zhí)行continue語句,結(jié)束本次循環(huán),判斷while循環(huán)條件為假,故退出while循環(huán),執(zhí)行n++,此時n的值為1,當(dāng)i=3時,執(zhí)行do循環(huán)。由于if(3%3)為假,執(zhí)行下面的n++語句,此時n的值為2,結(jié)束本次循環(huán),繼續(xù)判斷while循環(huán)條件為假,故退出while循環(huán),執(zhí)行n++語句,此時n的值為3;當(dāng)i=4時,執(zhí)行do循環(huán)。由于if(4%3)為真,執(zhí)行continue語句,結(jié)束本次循環(huán),繼續(xù)判斷while循環(huán)條件為假,故退出while循環(huán),執(zhí)行n++,此時n的值為4;當(dāng)i=5時,退出for循環(huán),因此最后輸出的n的值為4。

50.A

51.C解析:若在定義二維數(shù)組的同時對數(shù)組進(jìn)行初始化,可以不指定一維長度.但二維長度不能省略,因此選項C是錯誤的。如果數(shù)據(jù)不足,系統(tǒng)將自動給后面的元素自動補(bǔ)初值0。

52.C解析:數(shù)據(jù)庫(Database,簡稱DB)是數(shù)據(jù)的集合,它具有統(tǒng)一的結(jié)構(gòu)形式并存放于統(tǒng)一的存儲介質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,并可被各個應(yīng)用程序所共享。數(shù)據(jù)庫中的數(shù)據(jù)具有“集成”、“共事”之特點(diǎn)。

53.D解析:函數(shù)體可以沒有return語句,程序執(zhí)行到末尾為“}”時結(jié)束,然后返回調(diào)用函數(shù),但沒有確定的函數(shù)值返回。

54.A函數(shù)fun()通過遞歸調(diào)用實(shí)現(xiàn)的功能為n+(n-1)+…+1,故程序的輸出結(jié)果為55。

55.A解析:函數(shù)getchar()的作用是從終端(或系統(tǒng)隱含的輸入沒備)輸入一個字符,且只能接收一個字符(回車符也算一個字符)。所以本題中c1被賦值字符a,c2被賦予回車符。

56.D解析:本題主要考查按結(jié)構(gòu)數(shù)組元素方式引用結(jié)構(gòu)成員。字母P為“Paul”的第一個字母,是結(jié)構(gòu)體s[1]的name成員的第一個元素的值,即s[1].name[0]的值。

57.AA。【解析】線性表的存儲通常分為兩種存儲結(jié)構(gòu):順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)。

\n

58.C解析:考查了一維字符數(shù)組的定義和初始化。選項A)和B)定義的數(shù)組空間太小,至少應(yīng)該為6個字符的長度才可以。選項D)中的指針s未賦初值,所以指向一個不確定的地址,因而不能用scanf輸入數(shù)據(jù)到這一指針?biāo)赶虻牡刂分小?/p>

59.B解析:sizeof函數(shù)是取變量所占的存儲空間的字節(jié)數(shù),標(biāo)識a代表常量121;constb=12;,其中數(shù)據(jù)類型可以缺省,默認(rèn)為整型;enumc{a1,a2};定義了—個枚舉類型enumc,a1,a2為枚舉元素,在C編譯時,對枚舉元素按常量處理,它們的值按定義順序依次為0,1。因此它們的字節(jié)數(shù)均為2,2,2。

60.C

61.B題目給出的程序主要結(jié)構(gòu)是while循環(huán)。自減運(yùn)算符“--”在題目中出現(xiàn)了兩次,一次是在while語句的判別表達(dá)式中,出現(xiàn)的形式為i--,即先利用變量i的值進(jìn)行判別,再執(zhí)行i-1操作。另一次是在輸出函數(shù)printf中,出現(xiàn)的形式為--i,先執(zhí)行i-1操作,再將結(jié)果進(jìn)行輸出。程序初始時,i=6,第一次循環(huán)時,因?yàn)閕滿足while的判別條件,故執(zhí)行while內(nèi)部的語句,并進(jìn)行i-1操作,i=5。執(zhí)行到printf語句時,先進(jìn)行i-1操作,再將結(jié)果輸出,得到i=4,這時i的值依然滿足while循環(huán)條件,故可以執(zhí)行下一次循環(huán),過程與第一次循環(huán)類似。以此類推,直到while循環(huán)終止,最終程序輸出的結(jié)果為420。

62.A計算機(jī)能直接執(zhí)行的程序是二進(jìn)制的可執(zhí)行程序,其他的不能直接執(zhí)行。

63.DC語言規(guī)定標(biāo)識符是由字母、數(shù)字和下劃線組成的,且必須以字母或下劃線開頭,因此可知D選項錯誤。

64.A本題重點(diǎn)考察函數(shù)的調(diào)用,首先要了解字母對應(yīng)的ASCIl碼。例如A為65,a為97。即字母+1劂可得到下一個字母。-其次是函數(shù)形參和實(shí)參的問題,運(yùn)行過程如下:在fun(&b,a)中,}c=.a(chǎn)-,d=65。}c+l=V,d+1=66,prinff(”%c,%c,”,}C,d);輸出b,B,因?yàn)橹羔榗指向地址的值為b,此時b=}C=.b.;豳數(shù)返回執(zhí)行ptud(。%C,%c、n”,b,8);輸出b,A,因此A選項正確。

65.A整數(shù)類實(shí)例包括:十進(jìn)制常量用0—9表示,不能以0開頭;/k進(jìn)制常量用0-7表示,必須用0開頭;十六進(jìn)制常量用0—9和A—F(a—f)表示,必須以0x或OX開頭。本題中B選項是科學(xué)計數(shù)法表示的浮點(diǎn)數(shù)實(shí)例,c選項是浮點(diǎn)數(shù)實(shí)例,D選項是字符串實(shí)例。故選A選項。

66.D

67.Ac語言中利用sizeof()函數(shù)判斷數(shù)據(jù)類型長度,在VC6平臺中,整型數(shù)據(jù)int占4個字節(jié),double型數(shù)據(jù)占8個字節(jié)。因此本題答案為A)。

68.A解析:因?yàn)樵趙hile循環(huán)的循環(huán)條件中,一運(yùn)算符是前綴形式,所以表達(dá)式—k的值是k自減之后的值。程序開始時,將k的值初始化為5,然后進(jìn)入while循環(huán),因?yàn)椤猭的值為4(非零),所以執(zhí)行循環(huán)體輸出k-=3的值1,此時k的值也變?yōu)?。第2次執(zhí)行循環(huán)條件,—k的值為0,所以循環(huán)結(jié)束。因此最后輸出的結(jié)果是1,故應(yīng)該選擇A。

69.B

70.B合法的標(biāo)識符由字母、數(shù)字和下劃線組成,并且第一個字符必須為字母或下劃線,用戶定義的標(biāo)識符不能與關(guān)鍵字相同。選項A),數(shù)字不能為第一個字母,auto為關(guān)鍵字;選項c)中,也是數(shù)字不能為第一個字母,else為關(guān)鍵字;選項D)中負(fù)號不合法。

71.C本題考查for循環(huán)及if語句。當(dāng)執(zhí)行到第一個滿足(i*i>一20)&&(i*i<=100)這個條件的i出現(xiàn)時,break跳出循環(huán),執(zhí)行下列的printf語句。

72.A

73.A

74.D

75.AE為0,while條件為假,而E為0,(E=--0)為真,所以選擇A)。

76.A本題主函數(shù)中定義了一個指針數(shù)組a,可以將它看成一個以字符指針為元素的一維數(shù)組。和一般的一維數(shù)組名能賦給同類型指針變量一樣,該字符指針數(shù)組也可以賦給指向字符指針的指針,所以數(shù)組名a可以用做函數(shù)fun()的實(shí)參。在fun()函數(shù)中,++P操作使形參P往后移動一個字符指針的位置,即指針a[1]的位置。故最后通過礎(chǔ)nd()函數(shù)輸出的字符串為“Afternoon”。因此A選項正確。

77.A本題考查的是對指針變量賦空值。在C語言中用NULL給指針賦空值,如p=NULL。當(dāng)指針值為NULL時,指針不指向任何有效數(shù)據(jù)。由于NULL與整數(shù)0相對應(yīng),所以有下面三條語句等價:

p=NULL;p=0;p=’\\0’。

78.D

79.C數(shù)據(jù)庫關(guān)系模型中可以有三類完整性約束,實(shí)體完整性,參照完整性和用戶自定義完整性。

80.A數(shù)據(jù)字典是在需求分析階段建立,在數(shù)據(jù)庫設(shè)計過程中不斷修改、充實(shí)和完善的。故答案為A選項。

81.(1)錯誤:for(i=j=0;str[i]!=0;i++)

\n正確:for(i=j=0;str[i]!=\0;i++)

\n(2)錯誤:str[j]=str[i];

\n正確:str[i++]=str[i];

\n【解析】根據(jù)題目中的要求,從字符串str中刪除所有大寫字母F,需要檢查字符串str中的每一個字符,直到字符串結(jié)束,因此,“for(i=j=0;str[i]!=0;i++)”應(yīng)改為“for(i=J=0;str[i]!=0;i++)”;將每一個不是F的字符放入原來的字符串中,形成新的字符串,因此,“str[j]=str[i];”應(yīng)改為“str[j++]=str[i];”。

\n

82.1intfun(inta[M][N])2{3inti,j,sum=0;4for(i=0;i<m;i++)5for(j=0;j<n;j++)6if(i==o||i==M-1||j==0||j==N-1)/*只要下標(biāo)中有一個為?;騇-1或N-1,則它一定是周邊元素*/7sum=sum+a[i][j];/*將周邊元素相加*/8returnsum;9}本題采用逐一判斷的方式求數(shù)組周邊元素和。二維數(shù)組周邊元素的規(guī)律是,其兩個下標(biāo)中一定有一個是0或M-1或N-1。程序中循環(huán)語句用來控制數(shù)組的行和列,條件語句用來判斷數(shù)組元素是否為周邊元素。</n;j++)</m;i++)</n;j++)</m;i++)2021-2022年陜西省咸陽市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有以下的定義:‘intt[3][2];”,能正確表示t數(shù)組元素地址的表達(dá)式是()。

A.&t[3][2]B.t[3]C.t[l]D.t[2][2]

2.公司中有多個部門和多名職員,每個職員只能屬于一個部門,一個部門可以有多名職員。則實(shí)體部門和職員間的聯(lián)系是()。

A.1:m聯(lián)系B.m:n聯(lián)系C.1:1聯(lián)系D.m:1聯(lián)系

3.下列程序的運(yùn)行結(jié)果為()。

#deflneMAX(x,y)(x)>(y)(x):(y)

main()

{inta=2,b=3,c=1,d=3,t;

printf("%d\n",(MAX(a+b,c+D))*100);

}A.A.500B.5C.4D.400

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

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

5.執(zhí)行下面程序中的輸出語句后,輸出結(jié)果是()。A.65B.20C.15D.10

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

A.軟件交付使用后還需要進(jìn)行維護(hù)

B.軟件一旦交付使用就不需要再進(jìn)行維護(hù)

C.軟件交付使用后其生命周期就結(jié)束

D.軟件維護(hù)是指修復(fù)程序中被破壞的指令

7.設(shè)有以下程序段:要求輸入字符串給結(jié)構(gòu)體變量rec的title成員,錯誤的輸入語句是()A.seanf(”%s”Ptrtitle);

B.scanf(”%s”,rec.title);

C.scanf(’’%s”,(*pu).title);

D.scanf(”%s”,ptr->title);

8.

9.依次讀入數(shù)據(jù)元素序列{a,b,c,d,e,f,g}進(jìn)棧,元素進(jìn)?;虺鰲m樞蚴俏粗?,下列序列中,不可能成為??諘r彈出的元素構(gòu)成序列的有()

A.{d,e,c,f,b,g,a}

B.{f,e,g,d,a,c,b}

C.{e,f,d,g,c,b,a}

D.{c,d,b,e,f,a,g}

10.有嵌套的if語句:if(a<b) if(a<c)k=a; elsek=c;elseif(b<c)k=b;elsek=c;以下選項中與上述if語句等價的語句是()。

A.k=(a<b)?((b<c)?a:b):((b>c)?b:c);

B.k=(a<b)?((a<c)?a:c):((b<c)?b:c);

C.k=(a<b)?a:b;k=(b<c)?b:c;

D.k=(a<b)?a:b;k=(a<c)?a:c;

11.有以下程序:

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);

printf("%s,%s\n",ss,aa);

}

程序運(yùn)行結(jié)果是A.A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

12.算術(shù)運(yùn)算符和圓括號有不同的運(yùn)算優(yōu)先級,對于表達(dá)式“a+b+c*(d+e)”,關(guān)于執(zhí)行順序,以下說法正確的是()。

A.先執(zhí)行“(d+e)”得r2,再執(zhí)行“c*r2”得r3,再執(zhí)行“a+b”得r1,最后執(zhí)行“r1+r3”得表達(dá)式最后結(jié)果

B.先執(zhí)行“a+b”得r1,再執(zhí)行“(d+e)”得r2,再執(zhí)行“c*r2”得r3,最后執(zhí)行“r1+r3”得表達(dá)式最后結(jié)果

C.先執(zhí)行“(d+e)”得r2,再執(zhí)行“c*r2”得r3,再執(zhí)行“b+r3”得r4,最后執(zhí)行“a+r4”得表達(dá)式最后結(jié)果

D.先執(zhí)行“a+b”得r1,再執(zhí)行“r1+c”得r5,再執(zhí)行“(d+e)”得r2,最后執(zhí)行“r5*r2”得表達(dá)式最后結(jié)果

13.設(shè)有定義“char*c;”,以下選項中能夠使c正確指向一個字符串的是()。

A.charstr[]=“string”;c=str;

B.scanf(“%s”,c);

C.c=getchar();

D.*c=“string”;

14.有下列程序:

main()

{inty=20;

do{y--;}while(--y);

phntf("%d\n",y--);

}

當(dāng)執(zhí)行程序時,輸出的結(jié)果是()。

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

15.設(shè)a和b均為double型變量,且a=5.5,b=2.5,則表達(dá)式(int)a+b/b的值是A.6.5B.6C.5.5D.6

16.在1,2,3,......1000中,有()個數(shù)各位乘積為0。

A.100B.101C.172D.181E.190F.191

17.若有定義intx=3,y=2和floata=2.5,b=3.5,則表達(dá)式:(x+y)%2+(int)a/(int)b的值是()。

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

18.設(shè)散列表長m=14,散列函數(shù)H(K)=K%11,已知表中已有4個結(jié)點(diǎn):r(15)=4;r(38)=5;r(61)=6;r(84)=7,其他地址為空,如用二次探測再散列處理沖突,關(guān)鍵字為49的結(jié)點(diǎn)地址是_____。

A.8B.3C.5D.9

19.有以下程序:#include<stdio.h>main(){inta[5]={1,2,3,4,5),b[5]={0,2,1,3,o},i,s=0;for(i=o;i<5;i++)s=s+a[b[i]];printf(”%d\n”,s);}程序運(yùn)行后的輸出結(jié)果是()。A.6B.10C.11D.15

20.fseek函數(shù)的正確調(diào)用形式是()。

A.fseek(文件指針,起始點(diǎn),位移量)

B.fseek(文件指針,位移量,起始點(diǎn))

C.fseek(位移量,起始點(diǎn),文件指針)

D.fseek(起始點(diǎn),位移量,文件指針)

二、2.填空題(20題)21.若a=1,b=2,c=3,d=4;則條件表達(dá)式a>b?a:c<d?c:d的結(jié)果為()。

22.以下程序的運(yùn)行結(jié)果是【】。

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%5ld\n",k);}

23.若有說明chars1[]="Thatgirl",s2[]="isbeautiful";則使用函數(shù)strcmp(s1,s2)后,結(jié)果是______。

24.某二叉樹中度為2的結(jié)點(diǎn)有18個,則該二叉樹中有【】個葉子結(jié)點(diǎn)。

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

#include<stdio.h>

main()

{inti;

for(i-'a';i<'f';i++,i++)printf("%c",i-'a'+'A');

printf("\n");

}

26.在關(guān)系運(yùn)算中,查找滿足一定條件的元組的運(yùn)算稱之為【】。

27.以下程序輸出的最后一個值是【】。

intff(intn)

{staticintf=1;

f=f*n;

retumf;

}

main()

{inti;

for(i=1;i<=5;i++)printf("%d\n",ff(i))i

}

28.設(shè)y是int型變量,請寫出y為奇數(shù)的關(guān)系表達(dá)式【】。

29.棧中允許進(jìn)行插入和刪除的一端叫做______。

30.若有以下定義語句,則不移動指針p,并且通過指針p引用值為98的數(shù)組元素的表達(dá)式是【】。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

31.對于長度為n的線性表,若進(jìn)行順序查找,時間復(fù)雜性為【】;若進(jìn)行二分查找,則時間復(fù)雜性為【】。

32.數(shù)據(jù)庫技術(shù)的主要特點(diǎn)為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)一管理與控制。

33.在鏈表的運(yùn)算過程中,能夠使空表與非空表的運(yùn)算統(tǒng)一的結(jié)構(gòu)是______。

34.執(zhí)行下面程序段后,k的值是【】。

r=1;n=203;k=1

do}k*=n%10*r;n/=10;r++;}while(n);

35.數(shù)據(jù)模型是用來描述數(shù)據(jù)庫的結(jié)構(gòu)和語義的,數(shù)據(jù)模型有概念數(shù)據(jù)模型和結(jié)構(gòu)數(shù)據(jù)模型兩類,E-R模型是【】

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

main()

{chars[]="ABCD",*p;

for(p=s+1;p<s+4;p++)printf("%s\n",p);}

37.某二叉樹中度為2的結(jié)點(diǎn)有n個,則該二叉樹中有【】個葉子結(jié)點(diǎn)。

38.若有以下程序:

main()

{int,p,a=5;

if(P=a!=0)

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

else

printf("%d\n",p+2);

}

執(zhí)行后輸出結(jié)果是【】。

39.有以下程序:

main()

{inta=7,b=8,*p,*q,*r;

p=&a;q=&b;

r=p;p=q;q=r;

printf("%d,%d,%d,%d\n",*p,*q,a,b);

}

程序運(yùn)行后的輸出結(jié)果是【】。

40.若有定義doublea[5];,則a數(shù)組元素下標(biāo)的上限為______。

三、1.選擇題(20題)41.已知intt=0;while(t=1){…}則以下敘述正確的是()。

A.循環(huán)控制表達(dá)式的值為0B.循環(huán)控制表達(dá)式的值為1C.循環(huán)控制表達(dá)式不合法D.以上說法都不對

42.下列敘述中錯誤的是()。

A.在C語言中,對二進(jìn)制文件的訪問速度比文本文件快

B.在C語言中,隨機(jī)文件以二進(jìn)制代碼形式存儲數(shù)據(jù)

C.語句FILEfp;定義了一個名為fp的文件指針

D.C語言中的文本文件以ASCII碼形式存儲數(shù)據(jù)

43.有以下程序

#include<stdio.h>

main()

{inta[]={1,2,3,4},y,*p=&a[3];

--p;y=*p;printf("y=%d\n",y);

}

程序的運(yùn)行結(jié)果是

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

44.某一個漢字的區(qū)位碼為(2113H),則其內(nèi)碼為()

A.(2199)10B.(C1B3H)C.(C1B3)10D.(B1B3H)

45.若輸入60和13,以下程序的輸出結(jié)果為()#defineSURPLUS(a,b)((a)%(b))main(){inta,b;scanf("%d,%d",&a,&b);prind("\n",SURPLUS(a,b));}

A.60B.13C.73D.8

46.若有程序:fun(inta,intB){staticintc=0;c+=a+b;returnc;}main(){intx=5,y=3,z=7,rr=fun((y,x+y),z);r=fun(x,y);printf("%d\n",r);}上面程序的輸出結(jié)果是_______。

A.23B.15C.19D.18

47.對于下列定義,不正確的敘述是()。uniondata{inta;charb;doublec;}x=y;

A.變量x所占內(nèi)存的長度等于成員c的長度

B.變量x的地址和它的各成員地址都是相同的

C.可以在定義時對x初始化

D.不能對變量x賦值,故x=y非法

48.若有如下程序:main(){inta[3][4]={1,2,3,4,5,6,7,8,9};printf("%d%d%d\n",a[0][1],a[1][2],a[2][3]);}則程序運(yùn)行后的輸出結(jié)果是()

A.270B.480C.160D.不定值

49.有以下程序main(){inti,n=0;for(i=2;i<5;i++){do{if(i%3)continue;n++;}while(!i);n++;}printf("n=%d\n",n);}程序執(zhí)行后輸出結(jié)果是

A.n=5B.n=2C.n=3D.n=4

50.C語言規(guī)定函數(shù)返回值的類型由()

A.在定義時所指定的函數(shù)類型所決定

B.調(diào)用該函數(shù)時的主調(diào)函數(shù)類型所決定

C.return語句中的表達(dá)式類型所決定

D.調(diào)用該函數(shù)時系統(tǒng)臨時決定

51.以下錯誤的定義語句是()。

A.intx[][3]={{0},{1},{1,2,3}};

B.intx[4][3]={{1,2,3},{1,2,3),{1,2,3},{1,2,3}};

C.intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

D.intx[][3]={1,2,3,4};

52.下列有關(guān)數(shù)據(jù)庫的描述,正確的是______。

A.數(shù)據(jù)庫是一個DBF文件B.數(shù)據(jù)庫是一個關(guān)系C.數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合D.數(shù)據(jù)庫是一組文件

53.若調(diào)用一個函數(shù),且此函數(shù)中沒有return語句,則以下正確的說法是______。

A.該函數(shù)沒有返回值B.該函數(shù)返回若干個系統(tǒng)默認(rèn)值C.該函數(shù)能返回一個用戶所希望的函數(shù)值D.該函數(shù)返回一個不確定的值

54.有以下程序:intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf("%if",&x);x=fun(x);printf("%d\n",x);}執(zhí)行程序時,給變量X輸入10,程序的輸出結(jié)果是()。A.55B.54C.65D.45

55.有以下程序:#include<stdio.h>main(){charcl='1',c2='2';cl=getchar();c2=getchar();putchar(c1);putchar(c2);}當(dāng)運(yùn)行時輸入:a<回車>后,以下敘述正確的是()。

A.變量c1被賦予字符a,c2被賦予回車符

B.程序?qū)⒌却脩糨斎氲?個字符

C.變量c1被賦予字符a,c2中仍是原有字符2

D.變量c1被賦予字符a,c2中將無確定值

56.根據(jù)下列的定義,能打印出字母P的語句是()。structstu{charname[10];ihtage;};structstus[10]={"John",11,"Paul",12,"Mary",11,"adam",12};

A.printf("%c",s[3].name);

B.printf("%c",s[3].name[1]);

C.printf("%c",s[2].name[1]);

D.printf("%c",s[1].name[0]);

57.常采用的兩種存儲結(jié)構(gòu)是()。

A.順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)B.散列方法和索引方式C.鏈表存儲結(jié)構(gòu)和數(shù)組D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)

58.下面能正確進(jìn)行字符串賦值操作的是

A.chars[5]={"ABCDE"};

B.chars[5]={′A′,′B′,′C′,′D′,′E′};

C.char*s;s="ABCDE";

D.char*s;scanf("%s",s);

59.下面程序的輸出結(jié)果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}

A.121,0,4B.2,2,2C.0,2,4D.0,2,2

60.C語言提供的合法關(guān)鍵字是()

A.switchB.cherC.caseD.default

四、選擇題(20題)61.若有下面的程序段

#include"stdio.h"

main()

{inti=6;

while(i--)

printf("%d",--i);

printf("\n");

}

那么程序的輸出結(jié)果為

A.531B.420

C.654321D.死循環(huán)

62.計算機(jī)能直接執(zhí)行的程序是()。A.可執(zhí)行程序B.目標(biāo)程序C.匯編程序D.源程序

63.下列選擇中,不能用做標(biāo)識符的是()。

A.1234B._1_2C.int_2_D.2_int_

64.有以下程序:

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

A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

65.將c語言的整數(shù)設(shè)為整數(shù)類1,則下面屬于類I實(shí)例的是()。

A.一103B.10E3C.10.3D.“0103”

66.(54)在下列幾種排序方法中,要求內(nèi)存量最大的是______。

A.插入排序

B.選擇排序

C.快速排序

D.歸并排序

67.有以下程序在VC6平臺上編譯運(yùn)行。程序運(yùn)行后的輸出結(jié)果是(

)。

A.4,8B.4,4C.2,4D.10,6

68.

有以下程序:

main

{intk=5;

while(--k)printf("%d",k-=3);

printf("\n");

}

執(zhí)行后的輸出結(jié)果是()。

A.1B.2C.4D.死循環(huán)

69.

70.下面各選項中,均是C語言合法標(biāo)識符的選項組是()。

A.

B.

C.

D.

71.下列程序的輸出結(jié)果是()。

#include<stdio.h>

main

{inti;

for(i=1;i<=10,i++)

{if((i*i>=20)&&(i*i<=100))

break;

}

printf("%d\n",i*i;

}A.A.49B.36C.25D.64

72.

73.

74.

75.在以下給出的表達(dá)式中,與while(E)中的(E)不等價的表達(dá)式是()。

76.有以下程序:

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

A.AfternoonB.ftemoonC.MorningD.oming

77.下列關(guān)于指針變量賦空值的說法錯誤的是

A.當(dāng)賦空值的時候,變量指向地址為0的存儲單元B.賦值語句可以表達(dá)為變量名=’\0’;

C.賦值語句可以表達(dá)為變量名=0;D.一個指針變量可以被賦空值

78.

79.數(shù)據(jù)庫關(guān)系模型中可以有三類完整性約束,下列選項中不屬于三類完整性約束的是()。

A.實(shí)體完整性規(guī)則B.參照完整性規(guī)則C.對象完整性規(guī)則D.用戶自定義完整性規(guī)則

80.下列關(guān)于數(shù)據(jù)庫設(shè)計的敘述中,正確的是()。

A.在需求分析階段建立數(shù)據(jù)字典

B.在概念設(shè)計階段建立數(shù)據(jù)字典

C.在邏輯設(shè)計階段建立數(shù)據(jù)字典

D.在物理設(shè)計階段建立數(shù)據(jù)字典

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:從字符串str中,刪除所有大寫字母F。

請修改程序中的錯誤,使它能得到正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

voidproc(char*str)

{

inti,j;

//****found****

for(i=j=0;str[i]一0;i++)

if(str[i]!=F)

//****found****

str[i]=str[i];

str[j]=\0;

}

voidmain

{

charstr[80];

printf("\nEnterastring:");

gets(str);

printf("Theoriginalstring:");

puts(str);

proc(str);

printf("Thestringafterdeleted:");

puts(str);

printf("\n\n");}

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。例如,若二維數(shù)組中的值為13579299946999813570則函數(shù)值為61。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include2#include3#include4#defineM45#defineN56intfun(inta[m][n])7{89}10voidmain()11{12FILE*wf;13intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};14inti,j,y;15system("CLS");16printf("Theoriginaldatais:\n");17for(i=0;i<m;i++)18{for(j=0;j<n;j++)19printf("%6d",aa[i][j]);20printf("\n");21}22y=fun(aa);23printf("\nThesum:%d\nM,y);24printf("\n");25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%d",y);28fclose(wf)29/******************/30}

參考答案

1.C數(shù)組的下標(biāo)是從

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論