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

下載本文檔

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

文檔簡介

2021年陜西省銅川市全國計算機(jī)等級考試C語言程序設(shè)計測試卷一(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序段:intx=3;do{printf("%d",x-=2);)while(!(--x));其輸出結(jié)果是()。A.1B.30C.1-2D.死循環(huán)

2.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序輸出為()。

A.編譯有錯B.0,0,0,3C.1,1,2,0D.0,1,2,0

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

A.一個算法的空間復(fù)雜度打,則其時間復(fù)雜度也必定大

B.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度也必定小

C.一個算法的時間復(fù)雜度大,則其空間復(fù)雜度也必定小

D.算法的時間復(fù)雜度與空間復(fù)雜度沒有直接相關(guān)

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

A.對于double類型數(shù)組,不可以直接用數(shù)組名對數(shù)組進(jìn)行整體輸入或輸出

B.數(shù)組名代表的是數(shù)組所占存儲區(qū)的首地址,其值不可改變

C.當(dāng)程序執(zhí)行中,數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時,系統(tǒng)將給出“下標(biāo)越界”的出錯信息

D.可以通過賦初值的方式確定數(shù)組元素的個數(shù)

5.若查找每個記錄的概率均等,則在具有n個記錄的連續(xù)順序文件中采用順序查找法查找一個記錄,其平均查找長度ASL為()

A.(n-1)/2B.n/2C.(n+1)/2D.n

6.下列選項中,能正確定義數(shù)組的語句是()。

A.intnum[0..2008];

B.intnum[];

C.intN=2008;intnum[N];

D.#defineN2008;intnum[N];

7.若有定義語句:“charsE10]="1234567\0\0";”,則strlen(s)的值是()。

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

8.有以下程序:#include<stdio.h>#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf(“%4.1f\n”,S(a+b));}程序的運(yùn)行結(jié)果是()。

A.7.5B.31.5C.程序有錯,無輸出結(jié)果D.14.0

9.

10.

11.

12.設(shè)文件指針fp已定義,執(zhí)行語句“fP=foPen(“file”,“w”);”后,下列針對文本文件file操作敘述的選項中正確的是()。

A.只能寫,不能讀B.寫操作結(jié)束后可以從頭開始讀C.可以在原有內(nèi)容后追加寫D.可以隨意讀和寫

13.下列函數(shù)的類型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

14.對線性表進(jìn)行折半查找最方便的存儲結(jié)構(gòu)是()。

A.順序表B.有序順序表C.鏈表D.有序鏈表

15.對一個算法的評價,不包括()方面的內(nèi)容。

A.健壯性和可讀性B.并行性C.正確性D.時空復(fù)雜度

16.下面程序段的輸出結(jié)果是______。char*s="abcde";s+=2;printf("%d",s);

A.cdeB.字符'c'C.字符'c'的地址D.無確定的輸出結(jié)果

17.

18.

有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",);

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式輸出數(shù)組右上半三角

1234

678

1112

16

則在程序下劃線處應(yīng)填入的是()。

A.i-1B.iC.i+1D.4一i

19.在數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機(jī)無關(guān)的是數(shù)據(jù)的()結(jié)構(gòu)。

A.邏輯B.存儲C.邏輯和存儲D.物理

20.有以下程序:#include<stdio.h>main(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i*j;}}printf(“m=%d\n”,m);}程序運(yùn)行后的輸出結(jié)果是()A.m=4B.m=2C.m=6D.m=5

二、2.填空題(20題)21.表示“整數(shù)x的平方大于36"時的值為“真”的C語言邏輯表達(dá)式是【】。

22.在scanf()函數(shù)調(diào)用語句中,可以在格式字符和%號之間加上一個星號,它的作用是跳過對應(yīng)的輸入數(shù)據(jù);當(dāng)輸入以下數(shù)據(jù)時,100200300400500<回車>,下面語句的執(zhí)行結(jié)果為【】。

main()

{inta,b,C;

scanf("%d%*d%d%d",&a,&b,&c);

printf("%d%d%d",a,b,c);}

23.閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是【】。

#include"stdio.h"

main()

{charfun(char,int);

chara=′A′;

intb=13;

a=fun(a,b);

putchar(a);}

charfun(chara,intb)

{chark;

k=a+b;

returnk;}

24.樹中度為零的結(jié)點(diǎn)稱為______。

25.數(shù)據(jù)庫的邏輯模型設(shè)計階段的任務(wù)是將______轉(zhuǎn)換成關(guān)系模式。

26.下列程序的功能是把從終端讀入的文本(用@作為文本結(jié)束標(biāo)志)輸出到一個名為bi.dat的新文件中。請?zhí)羁铡?/p>

#include"stdio.h"

FILE*fp;

{charch;

if((fp=fopen("bi.dat","w"))==NULL)exit(0);

while(______)fputc(ch,fp);

______;

}

27.以下程序的運(yùn)行結(jié)果是______。

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wbt");

fwtite(a,sizeof(int),5,fp);

fwlite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

for(i=0;i

28.關(guān)系代數(shù)是關(guān)系操作語言的一種傳統(tǒng)表示方式,它以集合代數(shù)為基礎(chǔ),它的運(yùn)算對象和運(yùn)算結(jié)果均為()。

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

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

for(i=0;i<3;i++)printf("%d%d",i,fun(a));

prind("\n");

}

30.閱讀下面語句,則程序的執(zhí)行結(jié)果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

elseprintf("%d,%d\n",b,a);}

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

voidfun(int*n)

{

while((*n)--);

printf("%d",++(*n));

}

main()

{inta=100;

fun(&a);

}

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

main()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2==0)

*p='*';

p++;i++;

}

puts(a);

}

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

#include<stdio.h>

main()

{inti;

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

printf("\n");

}

34.排序是計算機(jī)程序設(shè)計中的一種重要操作,常見的排序方法有插入排序、______和選擇排序。

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

#include<stdio.h>

main()

{intx=1,y=1,a=1,b=1;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:

a++;b++;break;

}

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

}

36.衡量軟件的模塊獨(dú)立性使用耦合性和內(nèi)聚性兩個定性的度量標(biāo)準(zhǔn),其中()是度量一個模塊功能強(qiáng)度的一個相對指標(biāo)。

37.在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅需要存儲各數(shù)據(jù)元素的信息,還要存放各元素之間______的信息。

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

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

main()

{inti=6,j=8;

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

}

39.函數(shù)YangHui的功能是把楊輝三角形的數(shù)據(jù)賦給二維數(shù)組的下半三角,形式如下:

1

11

121

1331

14641

其構(gòu)成規(guī)律是:

①第0列元素和主對角線元素均為1。

②其余元素為其左上方和正上方元素之和。

③數(shù)據(jù)的個數(shù)每行遞增1。

請將程序補(bǔ)充完整。

#defineN6

voidyanghui(intx[N][N])

{inti,j;

x[O][0]=1;

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

{x[i][0]=【】=1;

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

x[i][j]=【】;

}

)

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

三、1.選擇題(20題)41.設(shè)有如下程序段:intx=2002,y=2003;printf("%d\n",(x,y));則以下敘述中正確的是()。

A.輸出語句中格式說明符的個數(shù)少于輸出項的個數(shù),不能正確輸出

B.運(yùn)行時產(chǎn)生出錯信息

C.輸出值為2002

D.輸出值為2003

42.設(shè)x為int型變量,執(zhí)行以下語句,x=10;x+=x-=x-x;x的值為______。

A.10B.20C.30D.40

43.在下列敘述中,錯誤的一條是______。

A.有下列語句組,則c=(*p)(a,b)與c=max(a,b)等價intmax();int(*p)();intc;p=max;

B.執(zhí)行下列語句后,則*p的值為1inta=1,*p;*p=&a;

C.已知指針變量p1指向數(shù)組元素a[1],p2指向數(shù)組元素a[4],則p2-p1=4-1=3

D.2個指針變量指向同一數(shù)組時可以進(jìn)行比較,其值為1或0

44.下列關(guān)于字符串的說法中錯誤的是

A.在C語言中,字符串是借助于字符型一維數(shù)組來存放的,并規(guī)定以字符'\0'作為字符串結(jié)束標(biāo)志

B.'\0'作為標(biāo)志占用存儲空間,計入串的實(shí)際長度

C.在表示字符串常量的時候不需要人為在其末尾加入'\0'

D.在C語言中,字符串常量隱含處理成以'\0'結(jié)尾

45.下面程序的運(yùn)行結(jié)果是#include<stdio.h>main(){chara[]="morning",t;inti,j=0;for(i=1;i<7;i++)if(a[j]<a[i])j=i;t=a[j];a[j]=a[7];a[7]=a[j];puts[a];}

A.mrgninrB.moC.moringD.morning

46.執(zhí)行以下程序后輸出的結(jié)果是______。main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}

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

47.以下程序的輸出結(jié)果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}

A.19B.17C.15D.12

48.一個存儲結(jié)點(diǎn)存放一個______。

A.數(shù)據(jù)項B.數(shù)據(jù)元素C.數(shù)據(jù)結(jié)構(gòu)D.數(shù)據(jù)類型

49.軟件需求分析階段的工作可以分為4個方面:需求獲取、需求分析、編寫需求分析說明書和

A.階段性報告B.需求評審C.總結(jié)D.都不正確

50.請選出以下程序的輸出結(jié)果______。#include<stdio.h>sub(x,y,z)intx,y*z;{*z=y-x;}main(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%d,%d,%d\n",a,b,c);}

A.5,23B.-5,-12,7C.-5,-12,-17D.5,2,-7

51.下面不屬于軟件設(shè)計原則的是()。

A.抽象B.模塊化C.自底向上D.信息隱蔽

52.有以下程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,"k);k=fun(j,m);printf("%d\n",k);}執(zhí)行后的輸出結(jié)果是()。

A.5,5B.5,11C.11,11D.11,5

53.打印當(dāng)前屏幕內(nèi)容應(yīng)使用的控制鍵是()

A.Scroll-LockB.Num-LockC.PgDnD.PrtSc(PrintScreen)

54.在設(shè)計程序時,應(yīng)采納的原則之一是______。

A.程序結(jié)構(gòu)應(yīng)有助于讀者理解B.不限制goto語句的使用C.減少或取消注解行D.程序越短越好

55.以下程序的輸出結(jié)果是______。#include<stdio.h>#defineFUDGE(y)2.84+y#definePR(a)printf("%d",(int)(a))#definePRINT1(a)PR(a);putchar('\n')main(){intx=2;PRINT1(FUDGE(5)*x);}

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

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

A.用戶所定義的標(biāo)識符允許使用關(guān)鍵字

B.用戶所定義的標(biāo)識符應(yīng)盡量做到“見名知意”

C.用戶所定義的標(biāo)識符必須以字母或下劃線開頭

D.用戶定義的標(biāo)識符中,大、小寫字母代表不同標(biāo)識

57.有以下定義#include<stdio.h>chara[10],*b=a;不能給數(shù)組a輸入字符串的語句是()A.gets(a)B.gets(a[0])C.gets(&a[0]);D.gets(b);

58.下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是()

A.便于用戶,開發(fā)人員進(jìn)行理解和交流

B.反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)

C.作為確認(rèn)測試和驗(yàn)收的依據(jù)

D.便于開發(fā)人員進(jìn)行需求分析

59.在下列敘述中,錯誤的一條是()

A.關(guān)系表達(dá)式的值是一個邏輯值,即“真”或“假”,可賦給一個邏輯變量

B.數(shù)組必須先定義后使用,且只能逐個引用數(shù)組元素,不能一次引用整個數(shù)組

C.在C語言中,判斷一個量是否為“真”時,用。代表“假”,1代表“真”

D.將字符串常量賦給字符數(shù)組時,必須在字符串后加飛'\0',表示字符結(jié)束

60.若已建立如下圖所示的單向鏈表結(jié)構(gòu):在該鏈表結(jié)構(gòu)中,指針p、s分別指向圖中所示結(jié)點(diǎn),則不能將s所指的結(jié)點(diǎn)插入到鏈表末尾仍構(gòu)成單向鏈表的語句組是______。

A.p=p->next;s->next=p;p->next=s;

B.p=p->next;s->next=p->next;p->next=s;

C.s->next=NULL;p=p->next;p->next=s;

D.p=(*p).next;(*s).next=(*p).next;(*p).next=s;

四、選擇題(20題)61.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A.軟件集成測試計劃B.軟件詳細(xì)設(shè)計說明書C.用戶手冊D.軟件需求規(guī)格說明書

62.

若變量已正確定義,有以下程序段

i—o;

doprintf("%d,",i);while(i++);

printf("%d",i)

其輸出結(jié)果是()。

A.0,0B.0,1C.1,1D.程序進(jìn)入無限循環(huán)

63.

64.

65.第

13

設(shè)有程序段

intk=10;

while(k=0)k=k-1;

則下面描述中正確的是A.while循環(huán)執(zhí)行10次B.循環(huán)是無限循環(huán)C.循環(huán)體語句一次也不執(zhí)行D.循環(huán)體語句執(zhí)行一次

66.排序的一個重要目的是為了對已排序數(shù)據(jù)進(jìn)行

A.合并B.打印輸出C.查找D.分類

67.第

11

若有定義:char*st="howareyou";下列程序段中正確的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

68.面向?qū)ο蠓椒ㄖ校粚儆趯ο蠡咎攸c(diǎn)的是()。

A.標(biāo)識唯一性B.分類性C.封裝性D.一致性

69.

70.

71.

72.(41)在下列選項中,哪個不是一個算法一般應(yīng)該具有的基本特征()

A.確定性

B.可行性

C.無窮性

D.擁有足夠的情報

73.以下描述中正確的是()。

A.由于do-while循環(huán)中循環(huán)體語句只能是一條可執(zhí)行語句,所以循環(huán)體內(nèi)不能使用復(fù)合語句

B.do-while循環(huán)由do開始,用while結(jié)束,在while(表達(dá)式.后面不能寫分號

C.在do-while循環(huán)體中,是先執(zhí)行一次循環(huán),再進(jìn)行判斷

D.do-while循環(huán)中,根據(jù)情況可以省略while

74.若已建立如下圖所示的單向鏈表結(jié)構(gòu):在該鏈表結(jié)構(gòu)中,指針p、s分別指向圖中所示結(jié)點(diǎn),則不能將s所指的結(jié)點(diǎn)插入到鏈表末尾仍構(gòu)成單向鏈表的語句組是A.p=p->next;s->next=p;p->next=s;

B.p=p->next;s->next=p->next;p->next=s;

C.s->next=NULL;p=p->next;p->next=s;

D.p=(*p).next;(*s).next=(*p).next;(*p).next=s;

75.設(shè)有以下函數(shù):

voidfun(intn,char}s){……}

則下面對函數(shù)指針的定義和賦值均正確的是()。

A.void(*pf)(int,char);pf=&fun;

B.void+pf();pf=fun;

C.void*pf();*pf=fun;

D.void(*pf)(int,char*);pf=fun;

76.設(shè)有定義:floatx=123.4567;則執(zhí)行以下語句后的輸出結(jié)果是()。

A.123.460000B.123.456700C.123.450000D.123

77.

78.若有以下程序段:

輸出結(jié)果是()。

A.2B.4C.8D.16

79.

有以下程序.

#include<stdio.h>

main

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar;c6=getchar;

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序運(yùn)行后,若從鍵盤輸入(從第l列開始)

123<回車>

45678<回車>

則輸出結(jié)果是()。

A.1267B.1256C.1278D.1245

80.以下程序段

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:給一維數(shù)組arr輸人任意4個整數(shù),并按如下的規(guī)律輸出。例如,若輸入2345,則程序運(yùn)行后輸出以下矩陣:請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun(),其功能是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為“****A*BC*DEF*G****”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:

參考答案

1.C本題考查do-while循環(huán),先執(zhí)行d0輸出的x的值為1,接著執(zhí)行while語句,此時--x的值為0,x也為0,而非0為1,循環(huán)成立,接著執(zhí)行do輸出X值為-2,執(zhí)行--x后,表達(dá)式為-2,而!(--x)為0,退出循環(huán)。

2.AC語言中規(guī)定else總是和之前與其最近的且不帶else的if配對。題目中,“if(a=1)b=1;c=2;”默認(rèn)省略了else,導(dǎo)致下一句else沒有匹配語句。故本題答案為A選項。

3.D

4.C解析:在C語言中,除字符數(shù)組外,一個數(shù)組不能通過數(shù)組名對數(shù)姐進(jìn)行整體引用,因此選項A是對的。數(shù)組名中存放的是一個地址常量,它代表整個數(shù)組的首地址,因此選項B是對的。C語言程序在運(yùn)行過程中,系統(tǒng)不自動檢驗(yàn)數(shù)組元素的下標(biāo)是否越界,因此選項C是錯誤的。C語官規(guī)定可以通過賦初值來定義數(shù)組的大小,這時數(shù)組說明符的一對方括號中可以不指定數(shù)組的大小,因此選項D也是正確的。所以,4個選項中選項C符合題意。

5.C

6.DC語言不允許定義動態(tài)數(shù)組,定義數(shù)組的大小必須為常量表達(dá)式。A選項錯誤,C語言中的數(shù)組沒有此類型的定義方法;B選項錯誤,定義數(shù)組應(yīng)指明數(shù)組大小,如果不指明數(shù)組大小,需要給定元素的個數(shù);C選項錯誤,N為變量,不能用來定義數(shù)組大小。故本題答案為D選項。

7.A"\0"表示空字符,strlen函數(shù)求得的是不包括字符串結(jié)束符\0的長度。故選A。

8.C宏定義不是C語句,末尾不需要有分號。語句“printf(“%4.1f\\n”,S(a+b));”展開后為“printf(“%4.1f\\n”,3.5;*a+b*a+b;);”,所以程序會出現(xiàn)語法錯誤。故本題答案為C選項。

9.C

10.A

11.B

12.A以“w”方式打開文件時只能寫,不能讀。故本題答案為A選項。

13.A本題考查函數(shù)值的類型。在函數(shù)調(diào)用時,盡管Y的類型是float.x的類型是double,但是因?yàn)楹瘮?shù)定義時沒有指定類型說明,系統(tǒng)默認(rèn)函數(shù)值的類型為int型,所以計算后Y的類型是int型。

14.B

15.B

16.C解析:語句s+=2;使指針指向字符'c',此時s中保存的便是字符'c'的地址。

17.C

18.B

\n本題中要求輸出右上半角的數(shù),對角線上的數(shù)的下標(biāo)相同,所以j=i。

\n

19.A

20.C第一次外循環(huán)的值為1,第一次內(nèi)循環(huán)j的值為3,不滿足條件執(zhí)行m*=i*j即m的值為3;第二次j的值為2。不滿足條件執(zhí)行m*=i*j,即的值為6;第三次j的值為1,不滿足條件執(zhí)行m*=i*j,即m的值仍為6。第二次外循環(huán)的值2,j的值為3,滿足條件執(zhí)行break語句跳出循環(huán)。

21.x<-6||x>6

22.100300400100300400解析:scanf的格式控制字符串中,“*”表示跳過對應(yīng)的輸入數(shù)據(jù),所以第二個輸入數(shù)200被跳過去了,只有100,300,400三個數(shù)被從鍵盤輸入了進(jìn)來。

23.NN解析:函數(shù)說明語句中的類型名必須與函數(shù)返回值的類型一致。本題實(shí)現(xiàn)的是在字符'A'的ASCII碼值上加上一個常數(shù),使之變成另一個ASCII碼值,從而輸出字符。

24.葉子結(jié)點(diǎn)葉子結(jié)點(diǎn)解析:樹中度為零的結(jié)點(diǎn),也就是沒有后件的結(jié)點(diǎn),稱為葉子結(jié)點(diǎn)。

25.E-R圖E-R圖解析:數(shù)據(jù)庫邏輯設(shè)計的任務(wù)是將概念模型進(jìn)一步轉(zhuǎn)化成相應(yīng)的數(shù)據(jù)模型。而E-R圖是主要的概念模型,因此數(shù)據(jù)庫的邏輯設(shè)計的主要工作是將E-R圖轉(zhuǎn)換成關(guān)系模式。

26.(ch=getchar())!='@'fclose(fp)。(ch=getchar())!='@',fclose(fp)。解析:表達(dá)式z-=x<y?x++:++y相當(dāng)于先執(zhí)行++y,再執(zhí)行z-=x<y?x:y,最后執(zhí)行x++,其中z-=x<y?x:y等價于z=z-(x<y?x:y),由于x值為3,y值為3,x<y不成立,返回y的值,z-y的值為-2,賦給z。

27.解析:本題考查文件讀寫函數(shù)fread和fwrite的用法。fwrite函數(shù)將數(shù)組a的前5個元素輸出到文件fp中兩次,共10個字節(jié),再調(diào)用fread函數(shù)從文件fp中讀取這10個字節(jié)的數(shù)據(jù)到數(shù)組a中,此時數(shù)組a的內(nèi)容就變?yōu)閧1,2,3,0,0,1,2,3,0,)},最后的輸出結(jié)果為“1,2,3,0,0,1,2,3,0,0,”。

28.關(guān)系關(guān)系

29.1011121210111212解析:需要注意的是,函數(shù)fun()中的變量c為靜態(tài)局部變量,在靜態(tài)存儲區(qū)內(nèi)分配了存儲單元,在程序整個運(yùn)行期間不會釋放,所以調(diào)用函數(shù)時,只賦初值一次,以后再調(diào)用函數(shù)時,c中的值為上次調(diào)用函數(shù)時的值。執(zhí)行for循環(huán),當(dāng)i=0時,fun(5)=5+1+4=10,此時c=4;當(dāng)i=1時,fun(5)=5+1+5=11,此時c=5;當(dāng)i=2時,fun(5)=5+1+6=12;此時c=6:當(dāng)i=3時,退出for循環(huán),并輸出回車換行符。

30.101,0解析:與運(yùn)算兩邊的語句必須同時為真時,結(jié)果才為真,當(dāng)執(zhí)行完if((++a<0)&&!(b--<=0))時,a,b的值已經(jīng)發(fā)生了變化。

31.00解析:在函數(shù)fun()中,while((*n)-)是先引用*n的值,再做(*n)--運(yùn)算,所以循環(huán)結(jié)束時*n的值為0,再做(*n)--運(yùn)算后,*n的值為-1;執(zhí)行++(*n)后,*n的值是0。

32.*2*4*6*8**2*4*6*8*解析:程序中定義了一個字符數(shù)組a,并初始化為123456789,接著定義了一個指針p并讓它指向數(shù)組a,緊接著執(zhí)行了一個while循環(huán),此循環(huán)的作用是:當(dāng)i為偶數(shù)時,將“*”賦給a[i],p指向數(shù)組末尾,循環(huán)結(jié)束,此時數(shù)組中a[0]、a[2]、a[4]、a[6]和a[8]的值都為“*”,所以最后調(diào)用puts()函數(shù)輸出的a的值為*2*4*6*8*

33.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。

34.交換排序交換排序解析:所謂排序是指將一個無序序列整理成按值非遞減順序排列成的有序序列,常用的排序方法有:交換排序、插入排序和選擇排序。其中交換排序包括冒泡排序和快速排序,插入排序包括簡單插入排序和希爾排序,選擇排序包括直接選擇排序和堆排序。

35.a=2b=3a=2,b=3解析:分析程序,程序從x=1語句開始執(zhí)行,之后執(zhí)行第一個switch語句,switch(x)=switch(1),所以執(zhí)行case1,case1語句中包含一個復(fù)合switch語句:這時執(zhí)行第二個switch語句,此時y=1,所以switch(y)=switch(1),因此執(zhí)行case1,將b加1,得到b=2,遇到break語句,退出第二個switch語句,則整個case1的復(fù)合語句執(zhí)行完畢,由于在這個case1的后面沒有break語句使其退出第一個switch語句,所以接著執(zhí)行下列的case2后面的語句,即將a,b各加1,得到a=2,b=3。

36.內(nèi)聚性內(nèi)聚性解析:模塊的獨(dú)立程度是評價設(shè)計好壞的重要度量標(biāo)準(zhǔn)。衡量軟件的模塊獨(dú)立性使用耦合性和內(nèi)聚性兩個定性的度量標(biāo)準(zhǔn)。內(nèi)聚性是度量一個模塊功能強(qiáng)度的一個相對指標(biāo),耦合性則用來度量模塊之間的相互聯(lián)系程度。

37.前后件關(guān)系前后件關(guān)系解析:在數(shù)據(jù)存儲結(jié)構(gòu)中,除了要存儲數(shù)據(jù),還要存儲數(shù)據(jù)的前后件關(guān)系,對于順序存儲的數(shù)據(jù)結(jié)構(gòu),前后件之間的關(guān)系,是通過存儲空間的位置來實(shí)現(xiàn)的,而對于鏈?zhǔn)酱鎯碚f,數(shù)據(jù)元素之間的前后件關(guān)系是通過指針來實(shí)現(xiàn)的。

38.8181解析:,解此類題一定要注意宏替換與函數(shù)調(diào)用的區(qū)別。宏替換是字面上的,在編譯期間就完成了,它只是將實(shí)參字符串替換蚌宏中形參出現(xiàn)的位置,得到的新串來替換掉宏調(diào)用.。而函數(shù)是將實(shí)參先計算好,然后將值賦給形參,再執(zhí)行函數(shù)體,整個過程在程序運(yùn)行時發(fā)生。所以本題的宏調(diào)用s(1+1)將被替換成表達(dá)式4*i+j*i+j+1等于4*6+8*6+8+1=24+48+8+1=81。所以本題輸出81。

39.x[i][i]x[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]x[i][i]\r\nx[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]解析:在程序中用兩重循環(huán)。在第一層循環(huán)中將每行的第0列賦值為1,對角線上的元素賦值為1顯然在第一個空中應(yīng)該填入對角線上的元素即x[i][i],在第2重循環(huán)中給每行其他元素賦值,而在每行中除了第0列和對角線的元素外其他元素為其對應(yīng)的上一行中同列和同列的前一列的元素相加,所以在第二個空中應(yīng)該填入x[i-1][j-1]+x[i-1][j]。

40.fseek(文件指針位移量起始點(diǎn))fseek(文件指針,位移量,起始點(diǎn))解析:本題考查函數(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型。

41.D解析:本題考查逗號表達(dá)式。逗號表達(dá)式的形式為:表達(dá)式1,表達(dá)式2,其求解過程為:先求解表達(dá)式1,再求解表達(dá)式2。整個逗號表達(dá)式的值是表達(dá)式2的值。

42.B解析:本題x=10,表達(dá)式“x+=x-=x-x;”的求解步驟如下:先進(jìn)行x-=x-x的運(yùn)算,相當(dāng)于)x=x-(x-x)=x=10;再進(jìn)行x+=x的運(yùn)算,即x=x+x=20。

43.B

44.B解析:'\\0'作為標(biāo)志占用存儲空間,但是不計入串的實(shí)際長度。當(dāng)給一個字符型指針賦值時,賦給這個指針的是這個字符串的地址。

45.B解析:本題考查了一維數(shù)組元素的引用方法。題中數(shù)組a為一字符串?dāng)?shù)組,通過數(shù)組首地址和下標(biāo)可以引用數(shù)組中的每個元素。因?yàn)樽址麛?shù)組相當(dāng)于字符串,所以可以用字符串輸出函數(shù)puts()來輸出字符數(shù)組中的各個字符。

46.D解析:do-while語句的特點(diǎn)是先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立,當(dāng)循環(huán)條件的值為0時循環(huán)結(jié)束。當(dāng)y=0時循環(huán)結(jié)束,printf('%d\\n',y-)語句是先輸出y再自減,所以輸出結(jié)果為0。

47.D解析:C語言的宏定義包括不帶參數(shù)的宏定義與帶參數(shù)的宏定義。本題為帶參數(shù)的宏定義,其形式為:

#define宏名(形參表)字符串

本題的M(a+b,b+c,c+a)被字符串a(chǎn)+b*b+c+c+a代替。

48.B

49.B解析:本題考查軟件需求分析的四個階段,分別為需求獲取、需求分析、編寫需求分析說明書和需求評審。

50.B解析:sub()函數(shù)的作用是將形參y和x的差賦給了z指向的那個內(nèi)存地址,所以在sub(10,5,&a),10和5屬于值傳遞,a是屬于地址傳遞,也就是a與z指向了同一個存儲單元,在執(zhí)行函數(shù)后,a的值隨*z變化,所以此次函數(shù)被調(diào)用后,a的值為y-x=-5,同理可知,在sub(7,a,&b)后,b的值發(fā)生變化其值為-5-7=-12,在sub(a,b,&c)后,c的值發(fā)生變化,其值為-12-(-5)=-7。

51.C解析:軟件設(shè)計遵循軟件工程的基本目標(biāo)和原則,建立了適用于在軟件設(shè)計中應(yīng)該遵循的基本原理和與軟件設(shè)計有關(guān)的概念。①抽象是一種思維工具,就是把事物本質(zhì)的共同特性抽出來而不考慮其他細(xì)節(jié)。②模塊是指可以單獨(dú)命名且可編址的元素。如高級語言中的過程、函數(shù)、子程序等。③信息隱蔽是指在一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。④模塊獨(dú)立性是指每個模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。因此,本題的正確答案是C。

52.B解析:本題的fun()函數(shù)中定義的變量m和i是靜態(tài)局部變量,第1次調(diào)用fun()函數(shù)時m=0、i=2,執(zhí)行i+=m+1后,i的值變?yōu)?,再執(zhí)行m=i+x+y后,m的值變?yōu)?,所以第1次輸出的整數(shù)是5。第2次調(diào)用fun()函數(shù)時m=5、i=3,執(zhí)行i+=m+1,i變?yōu)?,再執(zhí)行m=i+x+y,m變?yōu)?1,所以第2次輸出的整數(shù)是11。故本題應(yīng)該選擇B。

53.D

54.A解析:程序設(shè)計的風(fēng)格主要強(qiáng)調(diào)程序的簡單、清晰和可理解性,以便讀者理解。因此選項A是正確答案。程序?yàn)E用goto語句將使程序流程無規(guī)律,可讀性差;添加的注解行有利于對程序的理解,不應(yīng)減少或取消;程序的長短要依照實(shí)際需要而定,并不是越短越好。因此選項B、C、D都是錯誤的。

55.B解析:在程序中如果有帶實(shí)參的宏,則按#define命令行中指定的字符串從左到右進(jìn)行置換,如果串中包含宏中的形參,則將程序語句中相應(yīng)的實(shí)參代替形參。將實(shí)參帶入已經(jīng)定義的宏中,可以得出答案為“12”。

56.A解析:在C語言中,合法標(biāo)識符的命名規(guī)則是:標(biāo)識符可以由字母、數(shù)字和下劃線組成,并且第一個字符必須為字母或下劃線,凡是要求標(biāo)識符的地方都必須按此規(guī)則命名。在C語言的標(biāo)識符中,大寫字母和小寫字母被認(rèn)為是兩個不同的字符。在選擇標(biāo)識符時,應(yīng)注意做到“見名知義”,即選擇具有一定含義的英文單詞或漢語拼音作為標(biāo)識符,以增加程序的可讀性。

57.B解析:本題考核的知識點(diǎn)是函數(shù)gets()的應(yīng)用。函數(shù)gets()的調(diào)用形式為gets(str_adr);str_adr是存放字符串的起始地址。可以是字符數(shù)組名、字符指針或字符數(shù)組元素的地址。gets函數(shù)用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止。換行符讀入后,不作為字符串的內(nèi)容。本題中定義一個長度為10的字符數(shù)組,和一個指針變量b,并且通過賦值讓它指向數(shù)組a;選項A。選項B。選項C和選項D中只有選項B中g(shù)ets函數(shù)的參數(shù)a[0]不能表示數(shù)組a的首地址,故選項B不正確。所以,4個選項中選項B符合題意。

58.D解析:軟件需求規(guī)格說明書SRS,SoftwareRequirementSpecification)是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。它有以下幾個方面的作用,①便于用戶、開發(fā)人員進(jìn)行理解和交流;②反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù);③作為確認(rèn)測試和驗(yàn)收的依據(jù)。

59.B

60.A解析:在答案A中:p=p->next;s->next=p;p->next=s;s的確已插到了鏈表的末尾,但它的next卻并沒有為NULL,而是指向了它的直接前趨p,這樣它就不是一個單向鏈表(單向鏈表最后一個結(jié)點(diǎn)的next指針一定是一個NULL)。

61.D需求分析階段的工作可以概括為:需求獲取、需求分析、編寫需求規(guī)格說明書、需求評審四個方面。所以選擇D。

62.B

\n本題中,變量i的初始值等于0,執(zhí)行循環(huán)體中的語句后,輸出i的值為0。while后面括號中表達(dá)式i++的值為0,循環(huán)結(jié)束。此時變量i自加

溫馨提示

  • 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

提交評論