2021年河南省周口市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第1頁
2021年河南省周口市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第2頁
2021年河南省周口市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第3頁
2021年河南省周口市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第4頁
2021年河南省周口市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩110頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021年河南省周口市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.當(dāng)執(zhí)行下面的程序時(shí),如果輸入ABC,則輸出結(jié)果是()#include<stdio.h>#include<string.h>main(){charss[10]="12345";gets(ss);strcat(ss"6789");printf("%s\n",ss);}

A.ABC6789B.ABC67C.12345ABC6D.ABC456789

2.若a是數(shù)值類型,則邏輯表達(dá)式(a==1)II(a!=1)的值是()。

A.1B.0C.2D.不知道a的值,不能確定

3.有以下程序#include<stdio.h>main(){char*s=(“ABC);do{printf(“%d”,*s%10);s++;}while(*s);}注意,字母A的ASCII碼值為65。程序運(yùn)行后的輸出結(jié)果是A.5670B.656667C.567D.ABC

4.設(shè)有定義的語句:“charc1=92,c2=92;”,則以下表達(dá)式中的值為零的是()。

A.c1^c2B.c1&c2C.~c2D.c1|c2

5.若有以下說明:chars1[]={"tree"},s2[]={"flower"};,則以下對數(shù)組元素或數(shù)組的輸出語句中,正確的是()。

A.printf("%s%s",s1[5],s2[7]);

B.printf("%c%c",s1,s2);

C.puts(s1);puts(s2);

D.puts(s1,s2);

6.下列敘述中錯(cuò)誤的是()。A.程序可以由多個(gè)程序文件組成

B.一個(gè)C語言程序只能實(shí)現(xiàn)一種算法

C.程序可以由一個(gè)或多個(gè)函數(shù)組成

D.一個(gè)C函數(shù)可以單獨(dú)作為一一個(gè)c程序文件存在

7.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“TEXT”,*b=“++”,c[3]=“1”;printf(“%d,%d,”,strlen(a),sizeof(a));printf(“%d,%d,”,strlen(b),sizeof(b));printf(“%d,%d,\n”,strlen(c),sizeof(c));}程序運(yùn)行后的輸出結(jié)果是()。A.4,5,2,4,1,3,B.4,4,2,2,1,1,C.5,5,3,3,2,2,D.4,4,2,2,1,3

8.若有如下定義,則__________是對數(shù)組元素的正確的引用。.

inta[10],*p;p=a;

A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p

9.在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示

A.模塊之間的調(diào)用關(guān)系B.程序的組成成分C.控制程序的執(zhí)行順序D.數(shù)據(jù)的流向

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

A.算法的時(shí)間復(fù)雜度是指算法在執(zhí)行過程中基本運(yùn)算的次數(shù)

B.算法的時(shí)間復(fù)雜度是指算法執(zhí)行所需要的時(shí)間

C.算法的時(shí)間復(fù)雜度是指算法執(zhí)行的速度

D.算法的復(fù)雜度是指算法控制結(jié)構(gòu)的復(fù)雜程度

11.對于一個(gè)正常運(yùn)行的C程序,下列敘述中正確的是()。A.A.程序的執(zhí)行總是從main函數(shù)開始,在main函數(shù)結(jié)束

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

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

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

12.鏈表不具有的特點(diǎn)是()。A.A.不必事先估計(jì)存儲空間

B.可隨機(jī)訪問任意元素

C.插入、刪除不需要移動元素

D.所需空間與線性表長度成正比

13.可以判斷一個(gè)有向圖中是否含有回路的方法為()。

A.廣度優(yōu)先遍歷B.深度優(yōu)先遍歷C.拓?fù)渑判駾.求最短路徑

14.C語言中的標(biāo)識符分為關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符,以下敘述正確的是()。

A.預(yù)定義標(biāo)識符(如庫函數(shù)中的函數(shù)名)可用做用戶標(biāo)識符,但失去原有含義

B.用戶標(biāo)識符可以由字母和數(shù)字任意順序組成

C.在標(biāo)識符中大寫字母和小寫字母被認(rèn)為是相同的字符

D.關(guān)鍵字可用做用戶標(biāo)識符,但失去原有含義

15.設(shè)有以下語句,其中不是對a數(shù)組元素的正確引用的是:_____(其中0≤i<10)inta[10]={0,1,3,4,5,6,7,8,9,},*p=a;

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

16.

17.以下程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){st,uctdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}

A.6B.8C.10D.12

18.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.Zhao,m,85,Zhao,m,85

B.Sun,f,90,Zhao,m,85

C.Zhao,m,85,Sun,f,90

D.Sun,f,90,Sun,f,90

19.有以下程序:#include<stdio.h>main(){charb[]=“happynewyear”,k;for(k=0;b[k];k++) printf(“%c”,b[k]-‘a(chǎn)’+‘A’);}程序運(yùn)行后的輸出結(jié)果是()。

A.hAppynewyeArB.HappynewyearC.HAPPYNEWYEARD.HaPPYNEWYEaR

20.對于如圖所示二叉樹采用中根遍歷,正確的遍歷序列應(yīng)為()A.ABCDEFB.ABECDFC.CDFBEAD.CBDAEF

二、2.填空題(20題)21.若有定義inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},則初始化后,a[1][1]得到的初值是______。

22.若定義#definePI3.14159,則執(zhí)行完下列程序后輸出結(jié)果是______。

#definePI3.14159;printf("PI=%f",PI);

23.若x、y和z均是int型變量,則執(zhí)行下面表達(dá)式后的x值為【】。

x=(y=4)+(z=3)

24.對于圖書管理數(shù)據(jù)庫,將圖書表中"人民郵電出版社"的圖書的單價(jià)漲價(jià)5%。請對下面的SQL語句填空:UPDATE圖書【】WHERE出版單位="人民郵電出版社"

25.棧的3種基本運(yùn)算是:入棧、退棧和______。

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

typedefunionstudent

{charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{STUa[5];

Printf(“%d\n”,sizeof(a));

}

27.以下程序用于判斷a、b、c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當(dāng)給a、b、c輸入三角形三條邊長時(shí),確定a、b、c能構(gòu)成三角形的條件是需同時(shí)滿足三個(gè)條件:a+b>c,a+c>b,b+c>a。請?zhí)羁铡?/p>

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&C);

if(())printf("YES\n");/*a、b、c能構(gòu)成三角形*/

elseprintf("NO\n");/*a、b、c不能構(gòu)成三角形*/

}

28.函數(shù)調(diào)用語句:“fgets(buf,n,fp);”從中指向的文件中讀入n個(gè)字符放到buf字符數(shù)組中,函數(shù)返回值為______。

29.與表達(dá)式a+=b等價(jià)的另一書寫形式是______。

30.以下程序的功能是輸入任意整數(shù)給n后,輸出n行由大寫字母A開始構(gòu)成的三角形字符陣列圖形。例如,輸入整數(shù)5時(shí)(注意:n不得大于10),程序運(yùn)行結(jié)果如下:

ABCDE

FGHI

JKL

MN

O

請?zhí)羁胀瓿稍摮绦颉?/p>

main()

{inti,j,n;charch='A';

scanf("%d",&n);

if(n<11)

{for(i=1;i<=n;i++)

{for(j=1;j<=n-i+1;j++)

{printf("%2c",ch);

【】;

}

【】;

}

}

elseprintf("nistoolarge!\n")

printf("\n"0);

}

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

10ngfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

printf("%1d\n",x);}

32.設(shè)有以下定義

stnctss

{intinfo;sEruc5ss*link;}x.y,z;

且已建立如下圖所示鏈表結(jié)構(gòu):

請寫出刪除結(jié)點(diǎn)y的賦值語句______。

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

main()

{intp=30;

printf("%dkn",(p/3>0?p/10:p%3));

}

34.軟件定義時(shí)期主要包括______和需求分析兩個(gè)階段。

35.數(shù)據(jù)元素之間______的整體稱為邏輯結(jié)構(gòu)。

36.通常,將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程稱為【】。

37.用樹形結(jié)構(gòu)表示實(shí)體之間聯(lián)系的模型是()。

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

voidaverage();

main()

{floatscore[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,99}};

average(*score,12);

}

voidaverage(p,n)

intn;

float*p;

{inti;

floatsum=0;

for(i=0;i<n;i++,p++)sum+=(*p);

printf("%.2f\n",sum/n);

}

39.要求使下列程序輸出5個(gè)整數(shù),請?zhí)羁铡?/p>

for(i=0;i<=______;printf("%d\n",i+=2));

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

main()

{intX==1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

}

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

}

三、1.選擇題(20題)41.有以下程序:main(){intn=0,m=l,x=2;if(!n)x-=l:if(!m)x-=2;if(!x)x-=3;printf("%d\n",x);}執(zhí)行后的輸出結(jié)果是______。

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

42.有如下程序;

intfunc(inta,intb)

{return(a+b);}

main()

{intx=2,y=5,z=8,r;

r=func(func(x,y),z);printf("%\d\n",r);}

該程序的輸出的結(jié)果是______。

A.12B.13C.14D.15

43.下列一維數(shù)組說明中,不正確的是()。

A.intN;

B.floata[]={1,6,6,0,2};scanf("%d",&N);intb[N];

C.#defineS10

D.inta[S+5];

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

#include<stdio.h>

main()

{inta=2,b=3,p;

p=f(a,B);

pdntf("%d",p);

}

intf(a,B)

{intc;

if(a>B)c=1;

elseif(a==B)c=0;

elSec=-1;

return(C);

}

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

45.若要用函數(shù)fopen打開一個(gè)新的二進(jìn)制文件,該文件要既能讀也能寫,則應(yīng)以哪種方式打開文件()。

A.wbB.wb+C.rb+D.rb

46.結(jié)構(gòu)化程序設(shè)計(jì)的三種結(jié)構(gòu)是()。

A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)

B.分支結(jié)構(gòu)、等價(jià)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

C.多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價(jià)結(jié)構(gòu)

D.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

47.在軟件設(shè)計(jì)中,不屬于過程設(shè)計(jì)工具的是()。

A.PDL(過程設(shè)計(jì)語言)B.PAD圖C.N-S圖D.DFD圖

48.若有定義語句:floatx[6];則以下對x數(shù)組元素的正確引用形式是()。

A.x+2B.&x[6]C.*(x+2)D.*&x[6]

49.標(biāo)有/$$$/的語句的執(zhí)行次數(shù)是______。inty,i;for(i=0;i<20;i++){if(i%2==0)continue;y+=i;/$$$/;}

A.20B.19C.10D.9

50.下列敘述中正確的是A.數(shù)據(jù)庫系統(tǒng)是一個(gè)獨(dú)立的系統(tǒng),不需要操作系統(tǒng)的支持

B.數(shù)據(jù)庫設(shè)計(jì)是指設(shè)計(jì)數(shù)據(jù)庫管理系統(tǒng)

C.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)共享的問題

D.數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致

51.下列程序的輸出結(jié)果是()。point(char*pt);main(){charb[4]={'a','c','s','f},*pt=b;pt=point(pt);printf("%c\n",*pt);}point(char*p){p+=3;returnp;}

A.sB.cC.fD.a

52.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

53.下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)方法的是()。

A.自頂向下B.逐步求精C.模塊化D.可復(fù)用

54.將E-R圖轉(zhuǎn)換到關(guān)系模式時(shí),實(shí)體與聯(lián)系都可以表示成________。

A.屬性B.關(guān)系C.鍵D.域

55.按條件f對關(guān)系R進(jìn)行選擇,其關(guān)系代數(shù)表達(dá)式是()。

A.R||R

B.

C.f(R)

D.f(R)

56.若希望下列的程序運(yùn)行后輸出25,程序空白處的正確選項(xiàng)是()。

main()

{inti,j=50,a[]={7,4,10,5,8};

for()

j+=a[i];

printf("%d",j-40);

}

A.i=1;i<4;++iB.i=1;i<3;++iC.i=4;i>2;i--D.i:2;i<4;++i

57.以下程序的輸出結(jié)果為()。inta,b,C;a=10;b=50;C=30;if(a<b)a=b;b=C;c=a;printf("a=%d,b=%d,c=%d",a,b,C);

A.a=50,b=30,c=30

B.a=10,b=30,c=10

C.a=50,b=30,c=10

D.a=50,b=30,c=50

58.下面函數(shù)intfunl(char*x){char*y=x;while(*y++);return(y-x-1);}的功能是_______。

A.求字符串的長度B.比較兩個(gè)字符串的大小C.將字符串x復(fù)制到字符串yD.將字符串x連接到字符串y后面

59.有以下程序:voidchange(intk[]){k[0]=k[5];)main(){intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;while(n<=4)(change(&x[n]);n++;}for(n=0;n<5;n++)printf("%d",x[n]);printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。

A.678910B.13579C.12345D.62345

60.以下選項(xiàng)中,合法的一組C語苦數(shù)值常量是()。

A.28.5e-3-0xf

B.12OXa234.5

C.1774c1.5Oabc

D.0x8A10,0003.e5

四、選擇題(20題)61.下列敘述中錯(cuò)誤的是()。

A.一個(gè)C語言程序只能實(shí)現(xiàn)一種算法

B.c程序可以由多個(gè)程序文件組成

C.C程序可以由一個(gè)或多個(gè)函數(shù)組成

D.一個(gè)c函數(shù)可以單獨(dú)作為一個(gè)C程序文件存在

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

A.對長度為n的有序鏈表進(jìn)行查找,最壞情況下需要的比較次數(shù)為n

B.對長度為n的有序鏈表進(jìn)行對分查找,最壞情況下需要的比較次數(shù)為n/2

C.對長度為n的有序鏈表進(jìn)行對分查找,最壞情況下需要的比較次數(shù)為log2n

D.對長度為n的有序鏈表進(jìn)行對分查找,最壞情況下需要的比較次數(shù)為nlog2n

63.

64.有以下程序:

#include<stdio.h>

main()

{inta,b,k,m,*pl,*p2;

k=1,m=8;

p1=&k,p2=&m;

a=/*pl-m;b=*p1+*p2+6;

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

}

編譯時(shí)編譯器提示錯(cuò)誤信息,你認(rèn)為出錯(cuò)的語句是()。

A.a=/*pl-m;

B.b=*p1+*p2+6;

C.k=1,m=8;

D.pl=&k,p2-&m;

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

A.zB.0C.元素Ch[5]地址D.字符y的地址

66.

67.若程序中定義了以下函數(shù)doublemyadd(doublea,doubleb){return(a+b);}并將其放在調(diào)用語句之后,則在調(diào)用之前應(yīng)該對該函數(shù)進(jìn)行說明,以下選項(xiàng)中錯(cuò)誤的說明是()A.doublemyadd(doublea,b);

B.doublemyadd(double,double);

C.doublemyadd(doubleb,doublea);

D.doublemyadd(doublex,doubley);

68.

69.以下錯(cuò)誤的定義語句是()。

70.有以下程序程序運(yùn)行后的輸出結(jié)果是()。A.24B.28C.32D.36

71.若有定義intx,y;并已正確給變量賦值,則以下選項(xiàng)中與表達(dá)式(x—y)?(x++):(y++)中的條件表達(dá)式(x—Y)等價(jià)的是()。

A.(x—Y<01Ix—Y>O)B.(x—y<0)C.(x—Y>0)D.(x—Y==0)

72.有以下程序:

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

A.4B.34C.31D.32

73.設(shè)有定義:

則以下賦值語句中錯(cuò)誤的是()。

A.data2=datal;

B.data2=(2,6.;

C.

D.

74.有以下程序

#include<stdio.h>

voidprt(int*x,int*y,int*z)

{printf("%d,%d,%d\n",++*x,++*y,*z++);}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);

prt(&a,&b,&c);

}

程序的輸出結(jié)果是

75.設(shè)有條件表達(dá)式:(EXP)?i++;j--,則以下表達(dá)式中(EXP)完全等價(jià)的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)

76.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點(diǎn)訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

77.

78.若有說明語句:double*p,a;則通過scanf語句正確給輸入項(xiàng)讀人數(shù)據(jù)的程序段是()。

A.*p=&a;scanf("%1f”,p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%",*p);

D.p=&a;scanf("%1f",p);

79.

80.有以下程序:

當(dāng)執(zhí)行程序時(shí)從鍵盤上輸入HelloBeijing<;回車>;,則程序運(yùn)行后的輸出結(jié)果是()。

A.hellobajiIlg

B.HelloBeijing

C.HELLOBEIJING

D.hELLOBeijing

五、程序改錯(cuò)題(1題)81.下列給定程序中函數(shù)fun的功能是:用遞歸算法計(jì)算斐波拉契數(shù)列中第n項(xiàng)的值。從第l項(xiàng)起,斐波拉契數(shù)列為:1,1,2,3,5,8,13,21,…

例如,若給n輸入7,則該項(xiàng)的斐波拉契數(shù)值為l3。

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

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

試題程序:

#include<stdio.h>

longfun(intg)

{

//****found****

switch(g);

{

case0:return0;

//****found****

casel:case2:return1;

}

return(fun(g-1)+fun(g-2));

}

voidmain

{

longfib;intn;

printf("Inputn:");

scanf("%d",&n);

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

fib=fun(n);

printf("fib=%d\n\n",fib);

}

六、程序設(shè)計(jì)題(1題)82.請編寫一個(gè)函數(shù)proc,它的功能是:求出1~m(含m)能被7或11整除的所有整數(shù)放在數(shù)組a中,通過n返回這些數(shù)的個(gè)數(shù)。

例如,若傳給m的值為70,則程序輸出:

7111421222833354244495556636670

注意:部分源程序給出如下。

請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填人所編寫的若干語句。

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidproc(intm,int*a,int*n)

{}

voidmain

{

intarr[N],n,k;

system("CLS");

proc(70,arr,&n);

for(k=0;k<n;k++)

if((k+1)%20==0)//每行輸出20個(gè)數(shù)

{printf("%4d",arr[k]);

printf("\n");

}

else

printf("%4d",arr[k]);

printf("\n");

}

參考答案

1.A

2.A由于a==l和a!=1兩者互斥,即總有一個(gè)為真,因此二者的或也必定為真。

3.C

4.A當(dāng)值相同時(shí)按位異或,則為0,按位或與按位與時(shí)仍不變,負(fù)數(shù)也為非0。

5.C

6.B[解析]在一個(gè)C語言程序中可以進(jìn)行多種算法的實(shí)現(xiàn),對算法的個(gè)數(shù)沒有規(guī)定,所以B)錯(cuò)誤。

7.Asizeof是運(yùn)算符,計(jì)算數(shù)組、指針、類型、對象、函數(shù)等所占的字節(jié)大小。strlen(*char)是函數(shù),參數(shù)必須是字符型指針(char*)。該函數(shù)的功能是:返回字符串的長度,不包括字符串結(jié)束標(biāo)識?!皊izeof(a)”是求數(shù)組a所占空間的大小,包括字符串最后的‘\\0’。所以“sizeof(a)”=5,strlen遇到‘\\0’就結(jié)束,“strlen(a)”=4?!皊trier(b)”是指針指向的字符串長度,“sizeof(b)”是指針的大小?!皊trlen(c)”是字符串的長度,“sizeof(c)”是數(shù)組的長度。因此,輸出結(jié)果是4,5,2,4,1,3,。故本題答案為A選項(xiàng)。

8.D

9.D解析:數(shù)據(jù)流相當(dāng)于一條管道,并有一級數(shù)據(jù)(信息)流經(jīng)它。在數(shù)據(jù)流圖中,用標(biāo)有名字的箭頭表示數(shù)據(jù)流。數(shù)據(jù)流可以從加工流向加工,也可以從加工流向文件或從文件流向加工,并且可以從外部實(shí)體流向系統(tǒng)或從系統(tǒng)流向外部實(shí)體。

10.A算法的時(shí)間復(fù)雜度是指執(zhí)行算法所需要的計(jì)算工作量,其計(jì)算工作量是用算法所執(zhí)行的基本運(yùn)算次數(shù)來度量的。本題答案為A選項(xiàng)。

11.A解析:一個(gè)C語言源程序無論包括了多少函數(shù),總是從main函數(shù)開始執(zhí)行,從main函數(shù)結(jié)束。

12.B鏈表采用的是鏈?zhǔn)酱鎯Y(jié)構(gòu),它的結(jié)點(diǎn)空間可以動態(tài)申請和釋放;它的數(shù)據(jù)元素的邏輯次序靠結(jié)點(diǎn)的指針來指示,插入、刪除不需要移動數(shù)據(jù)元素。但是鏈?zhǔn)酱鎯Y(jié)構(gòu)也有不足之處:每個(gè)結(jié)點(diǎn)中的指針域需額外占用存儲空間,它是一種非隨機(jī)存儲結(jié)構(gòu)。

13.C

14.A用戶標(biāo)識符不能以數(shù)字開頭,C語言中標(biāo)識符是區(qū)分大小寫的,關(guān)鍵字不能用做用戶標(biāo)識符。

15.D解析:觀察程序可知,a實(shí)際上就是數(shù)組a的首地址,所以“*(a+i)”表示的就是數(shù)組a中的第i個(gè)元素的值,進(jìn)而,我們可以知道*(*(a+i))必然不是對a數(shù)組元素的正確引用。

16.C

17.A解析:結(jié)構(gòu)體變量的長度是其內(nèi)部成員總長度之和,在本題中,structdate中包含year,month,day三個(gè)整型變量。通常一個(gè)整型變量占2個(gè)字節(jié),因此,用sizeof求得該結(jié)構(gòu)體變量的長度為6個(gè)字節(jié)。

18.D程序定義結(jié)構(gòu)體類型STU,main函數(shù)定義結(jié)構(gòu)體STU變量b,并將b的地址賦給指針變量a。調(diào)用函數(shù)f,傳入a。在函數(shù)f中,定義了STU變量c,并將c的地址賦給d,再用d指向的值賦給a指向的地址,接著輸出a指向的值,也就是c的值:Sun,f,90。由于函數(shù)f的調(diào)用通過指針參數(shù)a修改了變量b的值,因此a指向的值也就是b的值等價(jià)于c:Sun,f,90。本題答案為D選項(xiàng)。

19.C程序定義一個(gè)字符數(shù)組b,并使用字符串“happynewyeai”進(jìn)行初始化。然后通過for循環(huán),遍歷字符數(shù)組b中的每個(gè)字符,再將b中的字符元素修改為大寫字母。程序輸出:HAPPYNEWYEAR。故本題答案為C選項(xiàng)。

20.D

21.00解析:二維數(shù)組可以看成是按矩陣形式排列的,題目中給二維數(shù)組賦初值是按行分段賦值的,a[4][4]可以分解為4個(gè)一維數(shù)組,其數(shù)組名分別為a[0]、a[1]、a[2]、a[3],這4個(gè)一維數(shù)組都有4個(gè)元素,a[0]的元素為a[0][0]、a[0][1]、a[0][2]、a[0][3]。

22.PI=3.14159PI=3.14159解析:本題先定義了一個(gè)宏名PI,以后在程序中出現(xiàn)PI都用3.14159替代,但是C語言規(guī)定:雙引號中的宏名是不進(jìn)行替換的。

23.77解析:x=(y=4)+(z=3)等價(jià)于y=4,z=3,x=y+z=4+3=7。

24.SET單價(jià)=單價(jià)*1.05SET單價(jià)=單價(jià)*1.05解析:更新表中元組的值,使用UPDATE命令,一次可以更新表中的一個(gè)或多個(gè)屬性值。UPDATE短語之后指定更新數(shù)據(jù)所屬的表,將新的屬性值或表達(dá)式賦值給對應(yīng)的屬性名(SET單價(jià)=單價(jià)*1.05),并置于SET短語之后。要求對人民郵電出版社的圖書漲5%,需要用WHERE短語對元組進(jìn)行限制,即對符合條件的元組進(jìn)行更新。

25.讀棧頂元素讀棧頂元素解析:棧的基本運(yùn)算有3種:入棧、退棧和讀取棧頂元素。其中,入棧是指在棧頂插入一個(gè)新的元素;退棧是指取出棧頂元素并賦值給一個(gè)變量;讀棧頂元素是將棧頂元素賦值給一個(gè)指定的變量,不刪除棧頂元素。

26.8080解析:數(shù)組a是共用體變量,共用體類型變量所占的內(nèi)存長度為最大成員的長度,即單精度數(shù)組的長度,為4×4=16,因此,數(shù)組a所占的內(nèi)存長度為5×16=80,所以最后輸出的s的值為80。

27.(a+b>C)&&(a+c>B)&&(b+c>A)(a+b>C)&&(a+c>B)&&(b+c>A)解析:本題主要考查運(yùn)算符邏輯與“&&”的用法。

28.buf的首地址buf的首地址解析:考查fsets()函數(shù)的功能,f8ets()函數(shù)用來從文件中讀入字符串。調(diào)用格式為:f8ets(buf,n,fp)。此處,fp是文件指針,buf是存放字符串的起始地址,n是一個(gè)int型變量。調(diào)用函數(shù)fsets()時(shí),最多能讀入n-1個(gè)字符,系統(tǒng)自動在最后加字符串結(jié)束標(biāo)志,并以buf作為函數(shù)值返回。

29.a=a+ba=a+b解析:a+=b與a=a+b等價(jià),作用是把變量a的值加b后再賦給變量a。

30.ch++;或++ch;或ch=ch+1;或ch=1+ch;或ch+=1;priintf("\n");或putchar('\n');ch++;或++ch;或ch=ch+1;或ch=1+ch;或ch+=1;\r\npriintf('\\n');或putchar(\'\\n\');解析:因?yàn)閏h被初始化為\'A\',而內(nèi)循環(huán)中有—條輸出ch的語句,整個(gè)程序都沒有一條改變ch值的語句。所以,第1空應(yīng)該填ch++或其它類似的表達(dá)式,以使每次輸出一個(gè)字母后ch都能變?yōu)橄乱粋€(gè)字母。內(nèi)循環(huán)結(jié)束后,代表這一行已經(jīng)輸出完畢,此時(shí)即將開始下一行的輸出,所以在第2空位置應(yīng)該輸出一個(gè)換行符,故應(yīng)填入printf('\\n');或其他等價(jià)形式。

31.99解析:考查ifelse語句,n==4不滿足條件,所以fun5(4)=4+fun5(3),n==3也不滿足條件,fun5(3)=3+fun5(2),n==2滿足條件fun5(2)=2,故x=4+3+2=9。

32.x.link=&z;或x.link=y.link;或x.1ink=x.1ink->link;或x.1ink=*(x.link).link;x.link=&z;或x.link=y.link;或x.1ink=x.1ink->link;或x.1ink=*(x.link).link;解析:本題考核的知識點(diǎn)是鏈表中結(jié)點(diǎn)的刪除。要?jiǎng)h除結(jié)點(diǎn)y,只需要讓結(jié)點(diǎn)x的指針域指向y結(jié)點(diǎn)的指針域所指向的后續(xù)結(jié)點(diǎn)就可,因此只需把結(jié)點(diǎn)2的地址賦給x的指針域就可以了即讓結(jié)點(diǎn)x的指針域指向結(jié)點(diǎn)2。而結(jié)點(diǎn)z得地址保存在節(jié)點(diǎn)y的指針域中,因此只需把節(jié)點(diǎn)y的指針城賦值給節(jié)點(diǎn)x的指針域即可。

33.33本試題中,先判斷表達(dá)式p/3>0,該值為真,所以此表達(dá)式等于p/10的值3,故最后輸出的值為3。

34.可行性研究可行性研究解析:軟件生命周期一般包括可行性研究與需求分析、設(shè)計(jì)、實(shí)現(xiàn)、測試、交付使用及維護(hù)等,還可以將軟件生命周期分為三個(gè)階段:①軟件定義階段:可行性研究和需求分析;②軟件開發(fā)階段:設(shè)計(jì)、實(shí)現(xiàn)和測試;③軟件運(yùn)行維護(hù)階段:交付使用和維護(hù)。

35.邏輯關(guān)系邏輯關(guān)系

36.軟件生命周期軟件生命周期解析:軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個(gè)時(shí)期都屬于軟件生命周期。一般包括可行性研究與需求分析、設(shè)計(jì)、實(shí)現(xiàn)、測試、交付使用以及維護(hù)等活動。

37.層次模型層次模型解析:層次模型是最早發(fā)展起來的數(shù)據(jù)庫模型。層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu)。

38.82.25

39.88解析:本題考查基本的for循環(huán)條件,i+=2表示i每次遞增2,從0開始,輸出5個(gè)整數(shù)則需要的條件是i<=8。

40.2121解析:外層switch語句后面括號里的x的值為1,所以執(zhí)行從case1:后面的語句開始執(zhí)行,而case1:后面語句也為switch語句,這個(gè)switch語句后面括號里的y的值為0,所以從該switch語句里的case0:開始執(zhí)行即執(zhí)行a++,這時(shí)a的值變?yōu)?,執(zhí)行完畢,遇到break語句,退出內(nèi)層switch語句,又回到外層switch語句,繼續(xù)執(zhí)行case1:下面的語句即case2:執(zhí)行完畢后,a自加1變?yōu)?,b自加1變1。所以最后輸出的a和b的值為21。

41.B解析:因n=0,故!n為真,執(zhí)行語句x-=1得x=x-1=2-1=1;條件!m和!x不成立,所以x=1,正確答案為1。

42.D解析:函數(shù)func的功能是計(jì)算兩個(gè)形參之和,并將值返回主調(diào)函數(shù)。所以:r=func(func(x,y),z)=func(func(2,5),8)=func(7,8)=15。

43.A

44.A解析:本題考查ifelse語句。在intf(a,b)中:第一個(gè)if語句,先判斷條件,發(fā)現(xiàn)a>b條件不成立,則執(zhí)行與其配對的else語句:第二個(gè)if語句,先判斷條件,發(fā)現(xiàn)a==b條件不成立,則執(zhí)行與其配對的else語句,c=-1。

45.B解析:本題考查文件使用方式標(biāo)識符。方式“wb”為輸出打開一個(gè)二進(jìn)制文件;方式“wb+”為讀寫建立一個(gè)新的二進(jìn)制文件;方式“rb+”為讀寫打開一個(gè)二進(jìn)制文件:方式“rb”為輸入打開一個(gè)二進(jìn)制文件。

46.D結(jié)構(gòu)化程序設(shè)計(jì)以模塊化設(shè)計(jì)為中心,采用自頂向下、逐步求精的程序設(shè)計(jì)方法。任何算法功能都可以通過由程序模塊組成的三種基本程序結(jié)構(gòu)的組合:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)。

47.D解析:PDL一種設(shè)計(jì)性語言,用于書寫軟件設(shè)計(jì)規(guī)約。它是軟件設(shè)計(jì)中廣泛使用的語言之一。N-S圖是無線的流程圖,是算法描述工具;PAD圖是問題分析圖,它用二維樹狀結(jié)構(gòu)的圖表示程序的控制流,將這種圖轉(zhuǎn)換為程序代碼比較容易。此3類均是過程設(shè)計(jì)工具,數(shù)據(jù)流圖(DataFunctionDiagram):又名數(shù)據(jù)功能圖表,簡稱DFD,是采用圖形方式來表達(dá)系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過程,是結(jié)構(gòu)化系統(tǒng)分析方法的主要表達(dá)工具及用于表示軟件模型的一種圖示方法。

48.C解析:數(shù)組名x為該數(shù)組的首地址即第1個(gè)元素的地址,x+2表示數(shù)組第3個(gè)元素的值地址。x[6]表示數(shù)組中長度為6,數(shù)組元素的下標(biāo)從0到5,沒有x[6]。&為取地址符,取得的是元素的地址。*為間接訪問運(yùn)算符,其運(yùn)算對象為地址或存放地址的指針變量。*(x+2)為取數(shù)組第3個(gè)元素的值,因此只有選項(xiàng)C正確引用了數(shù)據(jù)元素,選項(xiàng)C正確。

49.C解析:程序中標(biāo)有/$$$/的語句y+=i在for循環(huán)中,由于該語句前面的條件語句使循環(huán)變量i在對2求余為0時(shí)就結(jié)束本次循環(huán),直接跳過標(biāo)有/$$$/的語句,因此該語句執(zhí)行了10次。

50.C解析:數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持,這一點(diǎn)必不可少,故選項(xiàng)A敘述不正確。選項(xiàng)B錯(cuò)誤,數(shù)據(jù)庫設(shè)計(jì)是指設(shè)計(jì)一個(gè)能滿足用戶要求,性能良好的數(shù)據(jù)庫。選項(xiàng)D也不對,數(shù)據(jù)庫應(yīng)該具有物理獨(dú)立性和邏輯獨(dú)立性,改變其中的一個(gè)而不影響另一個(gè)。正確答案為選項(xiàng)C。

51.C解析:本題考查函數(shù)調(diào)用時(shí)的參數(shù)傳遞。函數(shù)point的參數(shù)為字符指針,當(dāng)執(zhí)行函數(shù)point時(shí),剛開始指針p指向“a”,經(jīng)過+3操作后,指針p指向“f”,所以最后的輸出結(jié)果是f。

52.A解析:本題考查如何通過地址來引用數(shù)組元素。通過地址來引用數(shù)組元素的方法有下列5種:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

53.D解析:20世紀(jì)70年代以來,提出了許多軟件設(shè)計(jì)方法,主要有①逐步求精:對復(fù)雜的問題,應(yīng)設(shè)計(jì)一些子目標(biāo)作過渡,逐步細(xì)化;②自頂向下:程序設(shè)計(jì)時(shí)應(yīng)先考慮總體,后考慮細(xì)節(jié);先考慮全局目標(biāo),后考慮局部目標(biāo)。不要一開始就過多追求眾多的細(xì)節(jié),先從最上層總目標(biāo)開始設(shè)計(jì),逐步使問題具體化;⑧模塊化:一個(gè)復(fù)雜問題,肯定是由若干稍簡單的問題構(gòu)成。模塊化是把程序要解決的總目標(biāo)分解為分目標(biāo),再進(jìn)一步分解為具體的小目標(biāo),把每個(gè)小目標(biāo)稱為一個(gè)模塊,而可復(fù)用是面向?qū)ο蟪绦蛟O(shè)計(jì)的一個(gè)優(yōu)點(diǎn)。

54.B解析:關(guān)系數(shù)據(jù)庫邏輯設(shè)計(jì)的主要工作是將\ue008E-R\ue009圖轉(zhuǎn)換成指定RDBMS中的關(guān)系模式。首先,從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實(shí)體與聯(lián)系都可以表示成關(guān)系,E-R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性,實(shí)體集也可以轉(zhuǎn)換成關(guān)系。

55.C解析:選項(xiàng)A表示關(guān)系R與關(guān)系R進(jìn)行自然連接;選項(xiàng)B表示關(guān)系R與關(guān)系R按條件f做連接運(yùn)算;選項(xiàng)C表示按條件f對關(guān)系R做選擇運(yùn)算;選項(xiàng)D表示在域f上對關(guān)系R做投影運(yùn)算。

56.D解析:要想使程序輸出是25,則i-40=25,j=65,而j初值是50,所以填入for循環(huán)中的語句,使引用的數(shù)組元素累加為65-50=15即可。

57.D解析:a的初值為10,b的初值為50,a<b為真,執(zhí)行a=b,則a的值為50。繼續(xù)執(zhí)行b=c;和c=a;,則b=30,c=50。所以選項(xiàng)D正確。

58.A解析:本題的考查點(diǎn)是while()循環(huán)語句。本題首先要注意的是對*y++的運(yùn)算,由于++和*為同—優(yōu)先級別,且結(jié)合方向?yàn)樽杂蚁蜃?,因此它相?dāng)于*(y++)。由于++在y的右側(cè)是“后加”,因此先對y的原值進(jìn)行*運(yùn)算,然后使y的值改變。

59.A解析:本題主要考查數(shù)組元素的地址作為實(shí)參,當(dāng)n=0時(shí),把x[0]的地址傳遞給被調(diào)函數(shù)change(),即把形參k和實(shí)參x指向同一個(gè)存儲單元,執(zhí)行被調(diào)函數(shù)后k[0]=6,即x[0]=6;當(dāng)n=1時(shí),執(zhí)行被調(diào)函數(shù)后x[1]=7,以此類推,最后得到x數(shù)組的值為6,7,8,9,10。

60.B

61.A答案A

解析:一個(gè)C程序可以有一個(gè)或多個(gè)程序文件,也可以有一個(gè)或多個(gè)函數(shù),所以一個(gè)C語言程序可以實(shí)現(xiàn)多種算法。

62.C\n\tC。【解析】二分法查找只適用于順序存儲的有序表,對于長度為n的有序線性表,最壞情況只需比較log2n次。

63.A

64.A\n本題考查指針,pl=&k表示P指向k的地址,則*p=k,依次類推,在對指針進(jìn)行賦值時(shí)沒有錯(cuò)誤。a=/*p+m賦值,在c語言中'/*'表示的注釋,所以答案選擇A。

\n

65.A表達(dá)式*(pc+5)先將指針向后移動5

66.A

67.A解析:本題考核的知識點(diǎn)是函數(shù)聲明的應(yīng)用。函數(shù)聲明是對所用到的函數(shù)的特征進(jìn)行必要的聲明,編譯系統(tǒng)以函數(shù)聲明中給出的信息為依據(jù),對調(diào)用表達(dá)式進(jìn)行檢測,以保證調(diào)用表達(dá)式與函數(shù)之間的參數(shù)正確傳遞。函數(shù)聲明的一般格式為:

類型標(biāo)識符函數(shù)名(類型標(biāo)識符形參…);

這些信息就是函數(shù)定義中的第一行的內(nèi)容。這里形參的名字是不重要的,重要的是類型標(biāo)識符,函數(shù)聲明中也可以不寫形參名只寫該形參的聲明類型,但不能只寫形參名而不寫該形參的類型。本題中,選項(xiàng)A中doublemyadd(doublea,b),沒寫出形參b的類型,故選項(xiàng)A不正確。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合題意。

68.C

69.A二維數(shù)組定義行數(shù)可以省略,列數(shù)不能省略,所以答案選擇A)。

70.A第一次循環(huán)返回l2,第二次循環(huán)返回l2,累加結(jié)果為24。

71.A條件表達(dá)式:x=表達(dá)式17表達(dá)式2:表送式3的含義是:先求解表達(dá)式1,若為非0(真),則求解表達(dá)芪2,將表達(dá)式2的值賦給x。若表達(dá)式1的值為0(假),則求辭表達(dá)式3,將表達(dá)式3的值賦給x。在本題中與表達(dá)式1::x—y)等價(jià)的是(x—Y<0I|x—Y>O)。

72.C本題重點(diǎn)考察二維數(shù)組名作為實(shí)參進(jìn)行參數(shù)傳遞,在主函數(shù)中調(diào)用了fun函數(shù),實(shí)參為二維數(shù)組名a和兩個(gè)整數(shù)4.0,這樣對應(yīng)定義fun函數(shù)首部有三種形式,這里采用了第一種形式——行指針,這樣在fun函數(shù)對s[i][j]進(jìn)行操作實(shí)際上就是對主函數(shù)中的a[i][j]進(jìn)行操作,再分析fun函數(shù)的作用便可知,是求二維數(shù)組第0列中最大的那個(gè)元素。因此C選項(xiàng)正確。

73.B選項(xiàng)8需要強(qiáng)制轉(zhuǎn)換數(shù)據(jù)類型,應(yīng)該為

(structcomplex){2,6};。

74.B在本題中,程序首先定義了一個(gè)prt函數(shù),該函數(shù)帶有三個(gè)整型指針變量,分別為x,y,z,程序體是一條輸出語句,由于運(yùn)算符*和++的優(yōu)先級一樣,且都是自右向左結(jié)合的運(yùn)算符,因此,++*x等價(jià)于++(*x),這個(gè)操作可描述為:選取值,再加1,最后輸出相加后的結(jié)果,并將相加后的結(jié)果修改到實(shí)參中;*z++等價(jià)于*(z++),這個(gè)操作可描述為:先調(diào)用值,然后對其進(jìn)行自加,最后通過取值運(yùn)算符*取其值輸出,這里還要注意,由于值自加后,沒有對其地址進(jìn)行操作,采用的是傳值方式,此次修改并不能改變實(shí)參的結(jié)果值。

在主函數(shù)中,首先定義三個(gè)整型變量a、b、c,并分別賦值為10、40和20,然后第一次調(diào)用prt函數(shù),用這三個(gè)變量的地址值作為實(shí)參,即分別使指針變量指向整型變量的值。根據(jù)上面對prt函數(shù)的分析可知,第一次調(diào)用輸出的結(jié)果分別為11、41和20,第一次調(diào)用后實(shí)參a,b,c的值分別為11、41和20。然后第二次調(diào)用prt函數(shù),同理,輸出的結(jié)果為12、42和20。因此,本題的正確答案是B。

75.B解析:條件表達(dá)式的形式為:“表達(dá)式1?表達(dá)式2:表達(dá)式3”。其含義為:當(dāng)“表達(dá)式1”的值為非零時(shí),求出“表達(dá)式2”的值,此時(shí)“表達(dá)式2”的值就是整個(gè)條件表達(dá)式的值;當(dāng)“表達(dá)式1”的值為零時(shí),求出“表達(dá)式3”的值,此時(shí)“表達(dá)式3”的值就是整個(gè)條件表達(dá)式的值。對于本題來說,當(dāng)表達(dá)式EXP為非0值時(shí)條件成立,即執(zhí)行語句i++;當(dāng)EXP等于0時(shí),執(zhí)行語句j--;這等同于條件表達(dá)式“(EXP!=0)?i++:i++;”。

76.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結(jié)點(diǎn);③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結(jié)點(diǎn);②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結(jié)點(diǎn)。根據(jù)前序遍歷的結(jié)果可知,a是根結(jié)點(diǎn)。由中序遍歷的結(jié)果dgbaechf可知,d、g、b是左子樹的結(jié)點(diǎn),e、c、h、f是右子樹的結(jié)點(diǎn)。再由前序遍歷的結(jié)果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結(jié)果dgb可知,d、g是b左邊子樹的結(jié)點(diǎn),b右邊子樹無結(jié)點(diǎn)。再由前序遍歷結(jié)果dg可知,d為b左子樹的根,g是以d為根的子樹的右結(jié)點(diǎn)。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結(jié)點(diǎn)位置。所以可知后序遍歷的結(jié)果是D。

77.B

78.Ddouble*p,a定義了一個(gè)指向雙精度型的指針變量P和雙精度型變量a,p=&a表示將變量a的地址賦給指針變量p;scanf("%If",p)表示用鍵盤輸入的數(shù)賦給指針變量P所指向的地址單元中,scanf函數(shù)要求在輸入double型數(shù)據(jù),格式控制符必須用%1f。否則,數(shù)據(jù)不能正確輸入。所以選項(xiàng)D正確。

79.B

80.C主程序讀取整個(gè)字符串存于s中,調(diào)用fun函數(shù)。字符指針c指向數(shù)組S。函數(shù)fun的功能是把指針C所指向的字符數(shù)組中的所有小寫字符轉(zhuǎn)換為大寫。囂cts函數(shù)可以把空格作為字符串的一部分輸入,以回車作為輸入結(jié)束。如果·c為小寫字符,則}C={C一32(轉(zhuǎn)大寫)。因此C選項(xiàng)正確。

81.(1)錯(cuò)誤:switch(g);

\n正確:switch(g)

\n(2)錯(cuò)誤:casel:case2:returnl;

\n正確:casel;case2:returnl;

\n【解析】此題考查C語言的語法規(guī)則,switch(表達(dá)式)后不應(yīng)該帶有“;”,case語句常量后應(yīng)該是“:”。

\nswitch語句的一般形式如下:

\nswitch(表達(dá)式){

\ncase常量表達(dá)式1:語句1;

\ncase常量表達(dá)式2:語句2;

\ncase常量表達(dá)式n:語句i;

\ndefault:語句n+1;

\n}

\n

82.\n\tvoidproc(intm,int*a,int*n)

\n{

\ninti,j=0;

\nfor(i=1;i<=m;i++)//進(jìn)行m次循環(huán)

\nif(i%7==0||i%11==0)//能被7或11整除的所有整數(shù)

\na[j++]=i;//符合條件的數(shù)放在數(shù)組a中

\n*n=j;//返回這些數(shù)的個(gè)數(shù)

\n}

\n【解析】本題需要先判斷1~m每一個(gè)整數(shù)能否被7或11整除,然后將符合條件的整數(shù)放在數(shù)組a中,最后將符合條件的數(shù)的個(gè)數(shù)通過形參n返回主函數(shù)。\n2021年河南省周口市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.當(dāng)執(zhí)行下面的程序時(shí),如果輸入ABC,則輸出結(jié)果是()#include<stdio.h>#include<string.h>main(){charss[10]="12345";gets(ss);strcat(ss"6789");printf("%s\n",ss);}

A.ABC6789B.ABC67C.12345ABC6D.ABC456789

2.若a是數(shù)值類型,則邏輯表達(dá)式(a==1)II(a!=1)的值是()。

A.1B.0C.2D.不知道a的值,不能確定

3.有以下程序#include<stdio.h>main(){char*s=(“ABC);do{printf(“%d”,*s%10);s++;}while(*s);}注意,字母A的ASCII碼值為65。程序運(yùn)行后的輸出結(jié)果是A.5670B.656667C.567D.ABC

4.設(shè)有定義的語句:“charc1=92,c2=92;”,則以下表達(dá)式中的值為零的是()。

A.c1^c2B.c1&c2C.~c2D.c1|c2

5.若有以下說明:chars1[]={"tree"},s2[]={"flower"};,則以下對數(shù)組元素或數(shù)組的輸出語句中,正確的是()。

A.printf("%s%s",s1[5],s2[7]);

B.printf("%c%c",s1,s2);

C.puts(s1);puts(s2);

D.puts(s1,s2);

6.下列敘述中錯(cuò)誤的是()。A.程序可以由多個(gè)程序文件組成

B.一個(gè)C語言程序只能實(shí)現(xiàn)一種算法

C.程序可以由一個(gè)或多個(gè)函數(shù)組成

D.一個(gè)C函數(shù)可以單獨(dú)作為一一個(gè)c程序文件存在

7.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“TEXT”,*b=“++”,c[3]=“1”;printf(“%d,%d,”,strlen(a),sizeof(a));printf(“%d,%d,”,strlen(b),sizeof(b));printf(“%d,%d,\n”,strlen(c),sizeof(c));}程序運(yùn)行后的輸出結(jié)果是()。A.4,5,2,4,1,3,B.4,4,2,2,1,1,C.5,5,3,3,2,2,D.4,4,2,2,1,3

8.若有如下定義,則__________是對數(shù)組元素的正確的引用。.

inta[10],*p;p=a;

A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p

9.在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示

A.模塊之間的調(diào)用關(guān)系B.程序的組成成分C.控制程序的執(zhí)行順序D.數(shù)據(jù)的流向

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

A.算法的時(shí)間復(fù)雜度是指算法在執(zhí)行過程中基本運(yùn)算的次數(shù)

B.算法的時(shí)間復(fù)雜度是指算法執(zhí)行所需要的時(shí)間

C.算法的時(shí)間復(fù)雜度是指算法執(zhí)行的速度

D.算法的復(fù)雜度是指算法控制結(jié)構(gòu)的復(fù)雜程度

11.對于一個(gè)正常運(yùn)行的C程序,下列敘述中正確的是()。A.A.程序的執(zhí)行總是從main函數(shù)開始,在main函數(shù)結(jié)束

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

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

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

12.鏈表不具有的特點(diǎn)是()。A.A.不必事先估計(jì)存儲空間

B.可隨機(jī)訪問任意元素

C.插入、刪除不需要移動元素

D.所需空間與線性表長度成正比

13.可以判斷一個(gè)有向圖中是否含有回路的方法為()。

A.廣度優(yōu)先遍歷B.深度優(yōu)先遍歷C.拓?fù)渑判駾.求最短路徑

14.C語言中的標(biāo)識符分為關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符,以下敘述正確的是()。

A.預(yù)定義標(biāo)識符(如庫函數(shù)中的函數(shù)名)可用做用戶標(biāo)識符,但失去原有含義

B.用戶標(biāo)識符可以由字母和數(shù)字任意順序組成

C.在標(biāo)識符中大寫字母和小寫字母被認(rèn)為是相同的字符

D.關(guān)鍵字可用做用戶標(biāo)識符,但失去原有含義

15.設(shè)有以下語句,其中不是對a數(shù)組元素的正確引用的是:_____(其中0≤i<10)inta[10]={0,1,3,4,5,6,7,8,9,},*p=a;

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

16.

17.以下程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){st,uctdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}

A.6B.8C.10D.12

18.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.Zhao,m,85,Zhao,m,85

B.Sun,f,90,Zhao,m,85

C.Zhao,m,85,Sun,f,90

D.Sun,f,90,Sun,f,90

19.有以下程序:#include<stdio.h>main(){charb[]=“happynewyear”,k;for(k=0;b[k];k++) printf(“%c”,b[k]-‘a(chǎn)’+‘A’);}程序運(yùn)行后的輸出結(jié)果是()。

A.hAppynewyeArB.HappynewyearC.HAPPYNEWYEARD.HaPPYNEWYEaR

20.對于如圖所示二叉樹采用中根遍歷,正確的遍歷序列應(yīng)為()A.ABCDEFB.ABECDFC.CDFBEAD.CBDAEF

二、2.填空題(20題)21.若有定義inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},則初始化后,a[1][1]得到的初值是______。

22.若定義#definePI3.14159,則執(zhí)行完下列程序后輸出結(jié)果是______。

#definePI3.14159;printf("PI=%f",PI);

23.若x、y和z均是int型變量,則執(zhí)行下面表達(dá)式后的x值為【】。

x=(y=4)+(z=3)

24.對于圖書管理數(shù)據(jù)庫,將圖書表中"人民郵電出版社"的圖書的單價(jià)漲價(jià)5%。請對下面的SQL語句填空:UPDATE圖書【】WHERE出版單位="人民郵電出版社"

25.棧的3種基本運(yùn)算是:入棧、退棧和______。

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

typedefunionstudent

{charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{STUa[5];

Printf(“%d\n”,sizeof(a));

}

27.以下程序用于判斷a、b、c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當(dāng)給a、b、c輸入三角形三條邊長時(shí),確定a、b、c能構(gòu)成三角形的條件是需同時(shí)滿足三個(gè)條件:a+b>c,a+c>b,b+c>a。請?zhí)羁铡?/p>

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&C);

if(())printf("YES\n");/*a、b、c能構(gòu)成三角形*/

elseprintf("NO\n");/*a、b、c不能構(gòu)成三角形*/

}

28.函數(shù)調(diào)用語句:“fgets(buf,n,fp);”從中指向的文件中讀入n個(gè)字符放到buf字符數(shù)組中,函數(shù)返回值為______。

29.與表達(dá)式a+=b等價(jià)的另一書寫形式是______。

30.以下程序的功能是輸入任意整數(shù)給n后,輸出n行由大寫字母A開始構(gòu)成的三角形字符陣列圖形。例如,輸入整數(shù)5時(shí)(注意:n不得大于10),程序運(yùn)行結(jié)果如下:

ABCDE

FGHI

JKL

MN

O

請?zhí)羁胀瓿稍摮绦颉?/p>

main()

{inti,j,n;charch='A';

scanf("%d",&n);

if(n<11)

{for(i=1;i<=n;i++)

{for(j=1;j<=n-i+1;j++)

{printf("%2c",ch);

【】;

}

【】;

}

}

elseprintf("nistoolarge!\n")

printf("\n"0);

}

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

10ngfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

printf("%1d\n",x);}

32.設(shè)有以下定義

stnctss

{intinfo;sEruc5ss*link;}x.y,z;

且已建立如下圖所示鏈表結(jié)構(gòu):

請寫出刪除結(jié)點(diǎn)y的賦值語句______。

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

main()

{intp=30;

printf("%dkn",(p/3>0?p/10:p%3));

}

34.軟件定義時(shí)期主要包括______和需求分析兩個(gè)階段。

35.數(shù)據(jù)元素之間______的整體稱為邏輯結(jié)構(gòu)。

36.通常,將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程稱為【】。

37.用樹形結(jié)構(gòu)表示實(shí)體之間聯(lián)系的模型是()。

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

voidaverage();

main()

{floatscore[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,99}};

average(*score,12);

}

voidaverage(p,n)

intn;

float*p;

{inti;

floatsum=0;

for(i=0;i<n;i++,p++)sum+=(*p);

printf("%.2f\n",sum/n);

}

39.要求使下列程序輸出5個(gè)整數(shù),請?zhí)羁铡?/p>

for(i=0;i<=______;printf("%d\n",i+=2));

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

main()

{intX==1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

}

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

}

三、1.選擇題(20題)41.有以下程序:main(){intn=0,m=l,x=2;if(!n)x-=l:if(!m)x-=2;if(!x)x-=3;printf("%d\n",x);}執(zhí)行后的輸出結(jié)果是______。

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

42.有如下程序;

intfunc(inta,intb)

{return(a+b);}

main()

{intx=2,y=5,z=8,r;

r=func(func(x,y),z);printf("%\d\n",r);}

該程序的輸出的結(jié)果是______。

A.12B.13C.14D.15

43.下列一維數(shù)組說明中,不正確的是()。

A.intN;

B.floata[]={1,6,6,0,2};scanf("%d",&N);intb[N];

C.#defineS10

D.inta[S+5];

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

#include<stdio.h>

main()

{inta=2,b=3,p;

p=f(a,B);

pdntf("%d",p);

}

intf(a,B)

{intc;

if(a>B)c=1;

elseif(a==B)c=0;

elSec=-1;

return(C);

}

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

45.若要用函數(shù)fopen打開一個(gè)新的二進(jìn)制文件,該文件要既能讀也能寫,則應(yīng)以哪種方式打開文件()。

A.wbB.wb+C.rb+D.rb

46.結(jié)構(gòu)化程序設(shè)計(jì)的三種結(jié)構(gòu)是()。

A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)

B.分支結(jié)構(gòu)、等價(jià)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

C.多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價(jià)結(jié)構(gòu)

D.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

47.在軟件設(shè)計(jì)中,不屬于過程設(shè)計(jì)工具的是()。

A.PDL(過程設(shè)計(jì)語言)B.PAD圖C.N-S圖D.DFD圖

48.若有定義語句:floatx[6];則以下對x數(shù)組元素的正確引用形式是()。

A.x+2B.&x[6]C.*(x+2)D.*&x[6]

49.標(biāo)有/$$$/的語句的執(zhí)行次數(shù)是______。inty,i;for(i=0;i<20;i++){if(i%2==0)continue;y+=i;/$$$/;}

A.20B.19C.10D.9

50.下列敘述中正確的是A.數(shù)據(jù)庫系統(tǒng)是一個(gè)獨(dú)立的系統(tǒng),不需要操作系統(tǒng)的支持

B.數(shù)據(jù)庫設(shè)計(jì)是指設(shè)計(jì)數(shù)據(jù)庫管理系統(tǒng)

C.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)共享的問題

D.數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致

51.下列程序的輸出結(jié)果是()。point(char*pt);main(){charb[4]={'a','c','s','f},*pt=b;pt=point(pt);printf("%c\n",*pt);}point(char*p){p+=3;returnp;}

A.sB.cC.fD.a

52.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

53.下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)方法的是()。

A.自頂向下B.逐步求精C.模塊化D.可復(fù)用

54.將E-R圖轉(zhuǎn)換到關(guān)系模式時(shí),實(shí)體與聯(lián)系都可以表示成________。

A.屬性B.關(guān)系C.鍵D.域

55.按條件f對關(guān)系R進(jìn)行選擇,其關(guān)系代數(shù)表達(dá)式是()。

A.R||R

B.

C.f(R)

D.f(R)

56.若希望下列的程序運(yùn)行后輸出25,程序空白處的正確選項(xiàng)是()。

main()

{inti,j=50,a[]={7,4,10,5,8};

for()

j+=a[i];

printf("%d",j-40);

}

A.i=1;i<4;++iB.i=1;i<3;++iC.i=4;i>2;i--D.i:2;i<4;++i

57.以下程序的輸出結(jié)果為()。inta,b,C;a=10;b=50;C=30;if(a<b)a=b;b=C;c=a;printf("a=%d,b=%d,c=%d",a,b,C);

A.a=50,b=30,c=30

B.a=10,b=30,c=10

C.a=50,b=30,c=10

D.a=50,b=30,c=50

58.下面函數(shù)intfunl(char*x){char*y=x;while(*y++);return(y-x-1);}的功能是_______。

A.求字符串的長度B.比較兩個(gè)字符串的大小C.將字符串x復(fù)制到字符串yD.將字符串x連接到字符串y后面

59.有以下程序:voidchange(intk[]){k[0]=k[5];)main(){intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;while(n<=4)(change(&x[n]);n++;}for(n=0;n<5;n++)printf("%d",x[n]);printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。

A.678910B.13579C.12345D.62345

60.以下選項(xiàng)中,合法的一組C語苦數(shù)值常量是()。

A.28.5e-3-0xf

B.12OXa234.5

C.1774c1.5Oabc

D.0x8A10,0003.e5

四、選擇題(20題)61.下列敘述中錯(cuò)誤的是()。

A.一個(gè)C語言程序只能實(shí)現(xiàn)一種算法

B.c程序可以由多個(gè)程序文件組成

C.C程序可以由一個(gè)或多個(gè)函數(shù)組成

D.一個(gè)c函數(shù)可以單獨(dú)作為一個(gè)C程序文件存在

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

A.對長度為n的有序鏈表進(jìn)行查找,最壞情況下需要的比較次數(shù)為n

B.對長度為n的有序鏈表進(jìn)行對分查找,最壞情況下需要的比較次數(shù)為n/2

C.對長度為n的有序鏈表進(jìn)行對分查找,最壞情況下需要的比較次數(shù)為log2n

D.對長度為n的有序鏈表進(jìn)行對分查找,最壞情況下需要的比較次數(shù)為nlog2n

63.

64.有以下程序:

#include<stdio.h>

main()

{inta,b,k,m,*pl,*p2;

k=1,m=8;

p1=&k,p2=&m;

a=/*pl-m;b=*p1+*p2+6;

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

}

編譯時(shí)編譯器提示錯(cuò)誤信息,你認(rèn)為出錯(cuò)的語句是()。

A.a=/*pl-m;

B.b=*p1+*p2+6;

C.k=1,m=8;

D.pl=&k,p2-&m;

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

A.zB.0C.元素Ch[5]地址D.字符y的地址

66.

67.若程序中定義了以下函數(shù)doublemyadd(doublea,doubleb){return(a+b);}并將其放在調(diào)用語句之后,則在調(diào)用之前應(yīng)該對該函數(shù)進(jìn)行說明,以下選項(xiàng)中錯(cuò)誤的說明是()A.doublemyadd(doublea,b);

B.doublemyadd(double,double);

C.doublemyadd(doubleb,doublea);

D.doublemyadd(doublex,doubley);

68.

69.以下錯(cuò)誤的定義語句是()。

70.有以下程序程序運(yùn)行后的輸出結(jié)果是()。A.24B.28C.32D.36

71.若有定義intx,y;并已正確給變量賦值,則以下選項(xiàng)中與表達(dá)式(x—y)?(x++):(y++)中的條件表達(dá)式(x—Y)等價(jià)的是()。

A.(x—Y<01Ix—Y>O)B.(x—y<0)C.(x—Y>0)D.(x—Y==0)

72.有以下程序:

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

A.4B.34C.31D.32

73.設(shè)有定義:

則以下賦值語句中錯(cuò)誤的是()。

A.data2=datal;

B.data2=(2,6.;

C.

D.

74.有以下程序

#include<stdio.h>

voidprt(int*x,int*y,int*z)

{printf("%d,%d,%d\n",++*x,++*y,*z++);}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);

prt(&a,&b,&c);

}

程序的輸出結(jié)果是

75.設(shè)有條件表達(dá)式:(EXP)?i++;j--,則以下表達(dá)式中(EXP)完全等價(jià)的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論