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頁,還剩111頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年四川省廣元市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.已知函數(shù)test定義為()。A.執(zhí)行函數(shù)test后,函數(shù)沒有返回值

B.執(zhí)行函數(shù)test后,函數(shù)不再返回

C.執(zhí)行函數(shù)test后,函數(shù)返回任意類型值

D.以上三個答案都是錯誤的

3.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()。

A.元素按值有序B.采用順序存儲結(jié)構(gòu)C.元素按值有序,且采用鏈?zhǔn)酱鎯Y(jié)構(gòu)D.元素按值有序,且采用順序存儲結(jié)構(gòu)

4.軟件生命周期中所花費用最多的階段是()。

A.詳細(xì)設(shè)計B.軟件編碼C.軟件測試D.軟件維護(hù)

5.運行下列程序,若從鍵盤輸入字符“a”,則輸出結(jié)果是()。

charc;

c=getchar;

if(c>=a&&c<=g)c=c+4:

elseif(c>=9&&c<=2)c=c-21:

elseprintf("inputerror!\n");

putchar(c);

A.fB.tC.eD.d

6.歸并排序采用的算法設(shè)計方法屬于()

A.歸納法B.分治法C.貪心法D.回溯方法

7.

8.字符串"\\"ABCDEF\"\\”的長度是()。

A.11B.10C.5D.3

9.用不帶頭結(jié)點的單鏈表存儲隊列時,其隊頭指針指向隊頭結(jié)點,其隊尾指針指向隊尾結(jié)點,則在進(jìn)行刪除操作時()。

A.僅修改隊頭指針B.僅修改隊尾指針C.隊頭、隊尾指針都要修改D.隊頭,隊尾指針都可能要修改

10.若有定義"int(*pt)[3];",則下列說法正確的是()。

A.定義了基類型為int的三個指針變量

B.定義了基類型為int的具有三個元素的指針數(shù)組pt

C.定義了一個名為*pt、具有三個元素的整型數(shù)組

D.定義了一個名為pt的指針變量,它可以指向每行有三個整數(shù)元素的二維數(shù)組

11.有以下程序

#include<stdio.h>

main()

{charch[3][5]={“AAAA”,”BBB”,”CC”};

printf(“%s\n”,ch[1];)

}

程序運行后的輸出結(jié)果是()A.A.AAAA

B.CC

C.BBBCC

D.BBB

12.在一個鏈?zhǔn)疥犃兄校僭O(shè)f和r分別為隊頭和隊尾指針,則插入S所指結(jié)點的運算是()。

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

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

C.S->next=rr=s;

D.r->next=f;f=s;

13.下列說法不正確的是()。

A.圖的遍歷是從給定的源點出發(fā)每一個頂點僅被訪問一次

B.圖的深度遍歷不適用于有向圖

C.遍歷的基本算法有兩種:深度遍歷和廣度遍歷

D.圖的深度遍歷是一個遞歸過程

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

A.為了建立一個關(guān)系,首先要構(gòu)造數(shù)據(jù)的邏輯關(guān)系

B.表示關(guān)系的二維表中各元組的每一個分量還可以分成若干數(shù)據(jù)項

C.一個關(guān)系的屬性名表稱為關(guān)系模式

D.一個關(guān)系可以包括多個二維表

15.有以下程序:#include<stdio.h>voidexch(intt[]){t[0]=t[s];}main(){intx[10]={1,2,3,4,5,6,7,8,9,10},i=0;while(i<=4){exch(&x[i]);i++;}for(i=0;i<5;i++)printf("%dl"x[i]);printf("\n");}程序運行后輸出的結(jié)果是()。A.246810B.13579C.12345D.678910

16.若有定義;intw[3][5];,則以下不能正確表示該數(shù)組元素的表達(dá)式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)

17.有以下程序:#include<stdio.h>main(){inta[]={10,20,30,40},*p=a,j;for(i=0;i<=3;i++){a[i]=*P;p++;}printf("oAd\n",a[2]);}程序運行后的輸出結(jié)果是()。A.30B.40C.10D.20

18.對于int*pa[5];的描述,()是正確的。

A.pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素

B.pa是一個指向某數(shù)組中第5個元素的指針,該元素是int型變量

C.pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針

D.pa[5]表示某數(shù)組的第5個元素的值

19.軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是()。

A.概要設(shè)計B.軟件設(shè)計C.可行性研究和計劃制定D.需求分析

20.下列存儲器中,存取速度最快的是()。

A.軟盤B.硬盤C.光盤D.內(nèi)存

二、2.填空題(20題)21.\13'在內(nèi)存中占1個字節(jié),"\12"在內(nèi)存中占______個字節(jié)。

22.以下程序給指針p分配三個double型動態(tài)內(nèi)存單元,請?zhí)羁铡?/p>

#include<stdio.h>

#include<stdlib.h>

main()

{double*p;

p=(double*)malloc(【】);

p[0]=1.5;p[1]=2.5;P[2]=3.5;

printf("%f%f%f\n",p[0],p[1],p[2]);

}

23.下面程序的運行結(jié)果是【】。

main()

{inti=0,j=10,k=2,s=0;

for(;;)

{i+=k;

if(i>j)

{printf("%d\n",s);

break;}

s+=i;}}

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

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

{for(j=0;j<3;j++)printf("%d",a[i][j]);

printf("\n");

}

}

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

fun(ihtx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

26.結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。

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

main()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2==0)

*p='*';

p++;i++;

}

puts(a);

}

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

#include<stdio.h>

main()

{inti;

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

printf("\n");

}

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

voidswap(intx,inty)

{intt;

t=x;x=y;y=t;printf("%d%d",x,y);

}

main()

{inta=3,b=4;

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

}

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

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf("%d",--y);continue;}}

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

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

32.下列程序的運行結(jié)果是______。

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

33.軟件測試是保證軟件質(zhì)量的重要手段,而軟件測試的主要和重要的測試方法是通過測試數(shù)據(jù)和【】的設(shè)計來實現(xiàn)。

34.以下函數(shù)的功能是計算s=1+1/2!+1/3!+…+1/n!,請?zhí)羁铡?/p>

doublerun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

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

{【】;

fac=fac/k;

s=s+fac;

}

}

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

main()

{ints,i;

for(s=0,i=1;i<3;i++,s+=i);

printf("%d\n".s);

}

36.下列程序中的數(shù)組a包括10個整數(shù)元素,分別將前項和后項之和存入數(shù)組b,并按每行4個元素輸出數(shù)組b。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

______;

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

{if(i%4=0)printf("\n");

printf("%3d",b[i]);

}

}

37.算法的復(fù)雜度主要包括空間復(fù)雜度和______復(fù)雜度。

38.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

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

#include<stdio.h>

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);

}

40.以下程序的運行結(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=%d\n",k);

}

三、1.選擇題(20題)41.下列工具中為需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

42.以下運算符中優(yōu)先級最低的算符是______。

A.&&B.&C.+=D.?:

43.以下程序中函數(shù)f的功能是:當(dāng)flag為1時,進(jìn)行由小到大排序;當(dāng)flag為0時,進(jìn)行由大到小排序。voidf(intb[],intn,intflag){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(flag?b[!]>[j]:b[i]<b[j]){t=b[i];b[i]=b[j];b[j]=t;}}main(){inta[10]={5,4,3,2,1,6,7,8,9,10},i;f(&a[2],5,0);f(a,5,1),for(i=0;i<10;i++)printf("%d,",a[i]);}程序運行后輸出結(jié)果是()。

A.1,2,3,4,5,6,7,8,9,10,

B.3,4,5,6,7,2,1,8,9,10,

C.5,4,3,2,1,6,7,8,9,10,

D.10,9,8,7,6,5,4,3,2,1,

44.有以下程序main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后輸出結(jié)果是

A.77B.88C.810D.1010

45.若有如下程序:main(){inta=1,b=1;for(;a<=10;a++){if(b>=9)break;if(b%3==1){b+=3;continue;}b++;}printf("%d,%d",b,a);}則程序運行后的輸出結(jié)果是()。

A.10,4B.7,3C.10,3D.11,3

46.下面關(guān)于算法的敘述中,正確的是()

A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)

B.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止

C.算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)

D.以上三種描述都正確

47.有以下程序:#include<stdlo.h>main(){FILE*fp;inti,k,n;fp=fopen("data.dat","w+")for(i=1;i<6;i++){fprintf(fp."%d",i);if(i%3==0)fprintf(fp,"\n");}rewind(fp);fscanf(fp."%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);

A.00B.12345C.14D.1

48.下列程序的輸出結(jié)果是_____。main(){intn=4;while(n--)printf("%d",--n);}

A.20B.31C.321D.210

49.以下程序的功能是:按順序讀入10名學(xué)生4門課程的成績,計算出每位學(xué)生的平均分并輸出,程序如下:main(){intn,k;floatscore,sum,ave;sum=0.0;for(n=1;n<=10;n++){for(k=1;k<=4;k++){scanf(“%f”,&score);sum+=score;}ave=sum/4.0;printf(“NO%d:%f\n”,n,ave);}}上述程序運行后結(jié)果不正確,調(diào)試中發(fā)現(xiàn)有一條語句出現(xiàn)在程序中的位置不正確。這條語句是

A.sum=0.0;

B.sum+=score;

C.ave=sum/4.0;

D.printf(“NO%d:%f\n”,n,ave);

50.假定w、x,y、z、m均為int型變量,有如下程序段;w=1;x=2;y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m=(m<z)?m:z;則該程序段執(zhí)行后,m的值是()

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

51.以下敘述不正確的是______。

A.分號是C語言的必要組成部分

B.C程序的注釋可以寫在句的后面

C.函數(shù)是C程序的基本單位

D.主函數(shù)的名字不一定用main表示

52.關(guān)于printf()函數(shù)的返回值敘述正確的是

A.通常是本次調(diào)用中輸出字符的個數(shù)B.通常是輸出的第一個數(shù)值C.通常返回布爾值真D.通常返回非零值

53.C語言源程序的最小單位是()。

A.程序行B.語句C.函數(shù)D.字符

54.下列描述中,正確的一條是______。

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

B.在C語言中,判斷一個量是否為:真”時,以0代表“假”,以1代表“真”.

C.設(shè)a=3、b=4、c=5,則表達(dá)式!(x=a)&&(y=b)&&0的值為0

D.一個數(shù)組的各個數(shù)組元素可屬于不同的數(shù)據(jù)類型

55.以下敘述中錯誤的是A.gets函數(shù)用于從終端讀入字符串

B.getchar函數(shù)用于從磁盤文件讀入字符

C.fputs函數(shù)用于把字符串輸出到文件

D.fwrite函數(shù)用于以二進(jìn)制形式輸出數(shù)據(jù)到文件

56.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()

A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭

57.下列選項中不屑于C語言數(shù)據(jù)類型的是()

A.整型B.邏輯型C.雙精度型D.枚舉型

58.設(shè)有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語句是()

A.p=&a;B.p=data.a;C.p=&data.a,D.*p=data.a;

59.以下程序運行后的輸出結(jié)果是______。intd=1;fun(intp){staticintd=d;d+=p;printf("%d",d);returnd;}main(){inta=3;printf("%d\n",fun(a+fun(d)));}

A.699B.669C.61515D.6615

60.以下說法中,不正確的是

A.C程序中必須有一個main()函數(shù),從main()函數(shù)的第一條語句開始執(zhí)行

B.非主函數(shù)都是在執(zhí)行主函數(shù)時,通過函數(shù)調(diào)用或嵌套調(diào)用而執(zhí)行

C.C程序中的main()函數(shù)必須放在程序的開始位置

D.C程序中的main()函數(shù)位置可以任意指定

四、選擇題(20題)61.若變量x、Y已正確定義并賦值,以下符合C語言語法的表達(dá)式是()。

A.++x,y=x-B.x+1=yC.x=x+10=x+yD.double(x/10)

62.

63.為了提高軟件的獨立性,模塊之間最好是()。

A.控制耦合B.公共耦合C.內(nèi)容耦合D.數(shù)據(jù)耦合

64.

65.下面敘述正確的是______。A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)

B.算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)

C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止

D.以上三種描述都不對

66.第

42

若有說明語句

chara[]="Itismine";

char*p="Itismine";

則以下不正確的敘述是

A.a+1表示的是字符t的地址

B.p指向另外的字符串時,字符串的長度不受限制

C.p變量中存放的地址值可以改變

D.a中只能存放10個字符

67.串的長度是______。A.A.串中不同字符的個數(shù)

B.串中不同字母的個數(shù)

C.串中所含字符的個數(shù)且字符個數(shù)大于零

D.串中所含字符的個數(shù)

68.以下能正確定義一維數(shù)組的選項是A.intnum[];

B.#defineN100intnum[N];

C.intnum[0..100];

D.intN=100;intnum[N];

69.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf(“%d\n”,m);}程序的運行結(jié)果是()A.1B.0C.2D.3

70.以下敘述中錯誤的是()。A.用戶定義的函數(shù)中可以有多個return語句,以便可以調(diào)用二次返回多個函數(shù)值

B.用戶定義的函數(shù)中可以沒有return語句

C.用戶定義的函數(shù)中若沒有retum語句,則應(yīng)當(dāng)定義函數(shù)為void類型

D.函數(shù)的return語句中可以沒有表達(dá)式

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

A.軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤

B.對被調(diào)試的程序進(jìn)行“錯誤定位”是程序調(diào)試的必要步驟

C.程序調(diào)試通常也稱為Debug

D.軟件測試應(yīng)嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性

72.

73.

74.若有下列定義(設(shè)int類型變量占2個字節(jié)):inti=8,j=9;則下列語句:printf("i=%%d,j=%%d\n",i,j);輸出的結(jié)果是()。A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9

75.有以下程序:

#include<stdio.h>

main

{intx=4,y;

do

{y=x;

if(!y)printf("x");

else

printf("y"):

x--;

}while(x);

}

程序的輸出結(jié)果是()。A.A.xyyxB.yyyyC.yyxxD.yxyx

76.C語言提供的合法的數(shù)據(jù)類型關(guān)鍵字是()。

A.DoubleB.shortC.integerD.Char

77.在長度為n的有序線性表中進(jìn)行順序查找,最壞情況下需要比較的次數(shù)是

A.O(n)B.O(n2)C.O(log2n)D.O(nlog2n)

78.

79.有如下嵌套的語句

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCIl碼升序排序后輸出。例如,輸入opdye,則應(yīng)輸出deopy。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include%string.h>#include%stdlib.h>#include<conio.h>#include<stdio.h>//****found****intproc(charstr[]){charC;unsignedi,j;for(i=0;i<strlen(str)-1;i++)for(j=i+1;j<strlen(str);j4-+)if(str[i]>str[j]){c=str[j]://****found****str[j]=str[i++];str[i]=C;}}voidmain{charst/[81];system("CLS");printf("\nPleaseenteracharacterstring:");gets(str);printf("\nknBeforesorting:\n%s",str);proc(str);printf("\nAftersortingdecendingly:\n%S",str);}

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是將s所指字符串中ASCII值為偶數(shù)的字符刪除,字符串中剩余字符形成一個新字符串并將其存放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFG123456”,其中字符B的ASCII值為偶數(shù),字符2的ASCII值為偶數(shù),都應(yīng)當(dāng)刪除,其他依此類推。最后t所指的字符串中的內(nèi)容應(yīng)是“ACEG135”。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdlib.h>#include<stdio.h>#include<string.h>#include<conio.h>voidfun(char*s,chart[]){}voidmain(){ chars[100],t[100]; system(“CLS”); printf(“\nPleaseenterstrings:”); scanf(“%s”,s); fun(s,t); printf(“\nTheresultis:%s\n”,t);}

參考答案

1.D

2.A

3.D

4.D解析:軟件生命周期分為軟件定義、軟件開發(fā)及軟件運行維護(hù)3個階段。本題中,詳細(xì)設(shè)計、軟件編碼和軟件測試都屬于軟什開發(fā)階段;維護(hù)是軟件生命周期的最后一個階段,也是持續(xù)時間最長,花費代價最大的一個階段.軟件工程學(xué)的一個目的就是提高軟件的可維護(hù)性,降低維護(hù)的代價。

5.C

\ngetchar函數(shù)是讀取鍵盤的輸入函數(shù),本題中輸入字母“a”,則c=a,判斷if條件,發(fā)現(xiàn)a>=a&&a<=g成立,則執(zhí)行下列語句:C=C+4,C得到的字符的ASCII碼值,退出if語句,通過putchar函數(shù)輸出字符。

6.B解析:以2一路歸并排序為例進(jìn)行說明。2一路歸并是指將兩個有序序列合并成一個有序序列,其基本過程為;從兩個序列中各取一個元素,進(jìn)行比較,輸出較小的元素,從較小元素所在序列取下一個元素,與未輸出的那個元素比較,輸出較小者。依此類推,直到輸出序列包含了兩個初始有序序列的全部元索。對于一個初始無序的序列,可以先將其等分為兩個無序的子序列,對這兩個子序列再次二分,重復(fù)該過程,直到分出的子序列中僅包含一個元素時(一個元素自然是有序的)為止,然后在反復(fù)進(jìn)行2一路歸并的過程,最后完成排序。

7.B

8.B解析:本題涉及字符串的兩個最基本的概念。①字符串的長度是指字符串中字符的個數(shù),但不包含字符串結(jié)束符;②以反斜線“\\”開頭的特殊字符序列,意思是把反斜線后面的字符序列轉(zhuǎn)換成特定的含義,而不是原來的含義,不包含在字符串長度之內(nèi),“\\”連同后面的字符為一個長度。

9.D

10.D\n數(shù)組指針是指向數(shù)組的一個指針,int(*pt)[3]表示一個指向3個int元素的數(shù)組的一個指針。

\n

11.Dch[1]即輸出的為第二個字符串,即BBB。

12.B

13.C

14.C解析:在格式化模型中,要事先根據(jù)應(yīng)用的需要,確定數(shù)據(jù)之間的邏輯關(guān)系,即先對數(shù)據(jù)進(jìn)行結(jié)構(gòu)化。在關(guān)系模型中,不需要事先構(gòu)造數(shù)據(jù)的邏輯關(guān)系,只要將數(shù)據(jù)按照一定的關(guān)系存入計算機(jī),也就是建立關(guān)系。所以選項A錯誤。對于一個表示關(guān)系的二維表,其最基本的要求是表中元組的每一個分量必須是不可分的數(shù)據(jù)項,即不允許表中再有表。所以,選項B、D說法是錯誤的。一個關(guān)系的屬性名表稱為關(guān)系模式,也就是二維表的表框架,相當(dāng)于記錄型。因此,選項C說法正確。

15.D本題中exch函數(shù)是用數(shù)組中的第6個元素對第1個元素進(jìn)行賦值,所以數(shù)組的值應(yīng)該為678910。

16.B通過—維數(shù)組名或指向維數(shù)組元素的指針來引用數(shù)組元素有兩種寫法:a[i]和*(a+i),它們是等價的。這是一種運算符之間的等價轉(zhuǎn)換,就好像a-(b-C)等價于a-b+c一樣。知道了這種轉(zhuǎn)換,我們可以將之?dāng)U展到二維數(shù)組甚至任意維數(shù)組上來。因為[]運算符的結(jié)合性是從左至右的,所以w[i][j]等價于(w[i][j],此時可以先將任意一個[]運算符轉(zhuǎn)換為指針形式為:(*(w+i)[j]或*(w[i]+j),或者同時轉(zhuǎn)換:*(*(w+i)+j)。上述幾種形式都完全等價于w[i][j]。選項A中,*(*w+3)可以看成*(*(w+0)+3),即w[0][3],是正確的。選項B小,因為[]運算符的優(yōu)先級高于*運算符,所以*(w+1)[4]等價于*((w+1)[4]等價于*(*((w+1)+4)),即*(*(w+5)+0),它等價于w[5][0],很明顯它超過數(shù)組的范圍了,故不正確。選項C等價于w[1][0],是下確的。選項D中,&w[0][0]是數(shù)組w第1個元素的地址,它等價于&*(*(w+0)+0),外面的&和*可以抵消,就好像先乘以個數(shù),然后再除以這個數(shù)一樣。所以,&w[0][0]等價于*(w+0)+0。即*w。所以原式就變?yōu)?(*w+1)等價于w[0][1],這個也是合法的。綜上所述,本題應(yīng)該選擇B。

17.AFor循環(huán)結(jié)束后,數(shù)組a的值并沒有變化,由于數(shù)組是由0開始,所以a[2]的值是30。

18.A

19.D\n通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護(hù)到停止使用、退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。軟件生命周期的主要活動階段為:可行性研究和計劃制定。確定待開發(fā)軟件系統(tǒng)的開發(fā)目標(biāo)和總的要求,給出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成開發(fā)任務(wù)的實施計劃。

\n需求分析。對待開發(fā)軟件提出的需求進(jìn)行分析并給出詳細(xì)定義,即準(zhǔn)確地確定軟件系統(tǒng)的功能。編寫軟件規(guī)格說明書及初步的用戶手冊,提交評審。

\n軟件設(shè)計。系統(tǒng)設(shè)計人員和程序設(shè)計人員應(yīng)該在反復(fù)理解軟件需求的基礎(chǔ)上,給出軟件的結(jié)構(gòu)、模塊的劃分、功能的分配以及處理流程。

\n軟件實現(xiàn)。把軟件設(shè)計轉(zhuǎn)換成計算機(jī)可以接受的程序代碼。即完成源程序的編碼,編寫用戶手冊、操作手冊等面向用戶的文檔,編寫單元測試計劃。

\n軟件測試。在設(shè)計測試用例的基礎(chǔ)上,檢驗軟件的各個組成部分。編寫測試分析報告。

\n運行和維護(hù)。將已交付的軟件投入運行,并在運行使用中不斷地維護(hù),根據(jù)新提出的需求進(jìn)行必要而且可能的擴(kuò)充和刪改。

\n本題答案是D)。

\n

20.D\nD【解析】存儲器中.存取速度最快的是內(nèi)存。

\n

21.22解析:'\\13':表示八進(jìn)制數(shù)13表示的ASCII字符,是一個字符,占一個字節(jié);而”\\12”是個字符串,除了八進(jìn)制數(shù)12表示的ASCII字符占一個字節(jié)外,還有在字符串的末尾加上串結(jié)束標(biāo)志“'\\0'”,所以共有2個字節(jié)。

22.3*sizeof(double)或243*sizeof(double)或24解析:觀察程序可知,本題要求用malloc函數(shù)分配三個double型的動態(tài)內(nèi)存單元。

23.3030解析:題目中for(;;)表示:for循環(huán)的初始化表達(dá)式,條件表達(dá)式和修正表達(dá)式都省略了,表示進(jìn)行for循環(huán)和for循環(huán)的終止都沒有限制。注意:while循環(huán)的執(zhí)行原理。

24.123056009123\r\n056\r\n009解析:數(shù)組a中元素的初值為:a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[12][0]=7、a[2][1]=8、a[2][2]=9。執(zhí)行第1個for循環(huán)后a[1][0]=0、a[2][0]=0、a[2][1)=0;第2個for循環(huán)的功能是將數(shù)組元素按照3行3列的格式輸出。

25.136136解析:本題考查函數(shù)的遞歸調(diào)用。函數(shù)fun是遞歸函數(shù),語句fun(6)的調(diào)用過程如下:

第1次:調(diào)用fun(6),6/2=3>0成立,調(diào)用fun(3);

第2次:調(diào)用fun(3),3/2=1>0成立,調(diào)用fun(1);

第3次:調(diào)用fun(1),1/2=0>0不成立,執(zhí)行語句printf('%d',x);,輸出1。

推出fun(3)輸出3,fun(6)輸出為6。

26.模塊化模塊化

27.*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*

28.ACEACE解析:在本題中,for循環(huán)體每執(zhí)行完一次,變量i的值自加兩次。i的初值為\'a\',執(zhí)行一次循環(huán)后變?yōu)閈'c\',之后再變成\'e\',當(dāng)其變?yōu)閈'g\'時,循環(huán)條件若不滿足,循環(huán)終止,故本題共輸出3個字符。表達(dá)式'i-\'a\'+\ue008\'A\'\ue009'即表示輸出i對應(yīng)的大寫字母,結(jié)果為ACE。

29.4334

30.852852解析:循環(huán)前,變量y的值為9,其中的循環(huán)語句在y大于0情況下循環(huán),每次循環(huán)后y的值減1。循環(huán)體是當(dāng)y能被3整除時輸出表達(dá)式--y,輸出的是減1后的y值。這樣,第一次循環(huán)因y為9,能被3整除,輸出8,y也變成8。又經(jīng)兩次循環(huán),y的值變?yōu)?,又讓y減1變成5,并輸出5;又經(jīng)兩次循環(huán),y的值變成3,讓y減1變成2,輸出2;再經(jīng)兩次循環(huán)后,y的值變成0,結(jié)束循環(huán)。所以程序輸出852。

31.*(p+5)或p[5]*(p+5)或p[5]

32.b=14b=14解析:分析程序可知,n的初始值為1,因此,while(n<=3)循環(huán)3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。當(dāng)n=4時,判斷條件不滿足,退出循環(huán)。

33.測試實例測試實例解析:進(jìn)行軟件測試時,應(yīng)精心設(shè)計測試實例和選擇測試數(shù)據(jù),以對系統(tǒng)進(jìn)行全面測試。

34.k=k*ik=k*i解析:本題小通過for循環(huán)求s表達(dá)式中每一項的和,表達(dá)式“fac=fac/k;”求的是每一項的值,所以k的值應(yīng)為n!,在求n!的時候,可以用上次循環(huán)階乘的值乘i,就可以直接得此次n!,故木題填k=k*i。

35.55解析:此程序中,for循環(huán)語句后面直接跟了一個“;”,表明循環(huán)體為空.輸出語句不在for循環(huán)體內(nèi),所以在循環(huán)執(zhí)行完畢后才輸出s的值.s、i的初值分別為0和1,判斷循環(huán)條件,表達(dá)式“1<3”成立,執(zhí)行“i++,s+=i”后,i和s的值分別為2和1,繼續(xù)判斷循環(huán)條件,表達(dá)式“2<3”成立,執(zhí)行“i++,s+=i”后,i和s的值分別為3,再次判斷循環(huán)條件,表達(dá)式“3<3”不成立,循環(huán)結(jié)束。

36.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:將數(shù)組a中元素a[i]與a[j+1]值相加后的值賦予數(shù)組b中元素b[i],即可實現(xiàn)將一個數(shù)組的前項和后項之和存入另一數(shù)組。

37.時間時間解析:算法的復(fù)雜度主要指時間復(fù)雜度和空間復(fù)雜度。

38.10410\r\n4解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和。每個成員分別占有其自己的內(nèi)存單元。int占2個字節(jié),float占4個字節(jié),共用體變量所占的內(nèi)存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。

39.2121解析:本題考查switch語句。首先x=1,執(zhí)行switch(y),因為y=0,所以執(zhí)行case0:a++;break;此時a=1執(zhí)行case2:a++;b++;這時a=2,b=1;最后輸出結(jié)果是21。

40.k=5k=5解析:由題可知fib(0)的值為0,fib(1)和fib(2)的值為1,因此,fib(3)=fib(2)+fib(1)=2;fib(4)=fib(3)+fib(2)=3;fib(5)=fib(4)+fib(3)=5。

41.D解析:需求分析常用的工具有數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判定樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N-S(盒式圖)都是詳細(xì)設(shè)計的常用工具,不是需求分析的工具。

42.C解析:本題中運算符優(yōu)先級順序從高到低依次是:&、&&、?:、+=。

43.B解析:題目中先后兩次調(diào)用了函數(shù)f()。第1次,使用參數(shù)“&a[2],5,0”表示從數(shù)組a下標(biāo)為2的元素開始,對其后的5個元素進(jìn)行由大到小排序。所以排序結(jié)果是{5,4,7,6,3,2,1,8,9,10)。第2次,使用參數(shù)“a,5,1”表示從數(shù)組a的首元素開始,對其后5個元素進(jìn)行由小到大排序。所以排序結(jié)果是{3,4,5,6,7,2,1,8,9,10)。故本題應(yīng)該選擇B。

44.C解析:本題考核的知識點是字符數(shù)組的定義、賦初值以及函數(shù)sizeof()的應(yīng)用。本題中定義兩個字符型數(shù)組,其中a省略了長度,定義了b的長度為10,并賦初值分別為“abcdefg”和“abcdfg”。所以a的長度為賦值給它的字符串的字符個數(shù)7加上一個結(jié)束轉(zhuǎn)義字符,即a的長度為7+1為8.定義時b的長度定義為10,故b的長度為10,因此最后通過函數(shù)sizeof()求得的數(shù)組a和數(shù)組b的長度分別為8和10,所以,4個選項中選項C符合題意。

45.A解析:本題中for循環(huán)循環(huán)10次。如果b>=9結(jié)束循環(huán)。如果b能被3整除結(jié)束本次循壞。都不成立b加1。for循環(huán)執(zhí)行過程為:當(dāng)a=1,b=1時,b%3=1,b=b+3=1+3=4,進(jìn)入下一次循環(huán):當(dāng)a=2,b=4時,b%3=1,b=b+3=4+3=7,進(jìn)入下一次循環(huán);當(dāng)a=3,b=7時,b%3=1,b=b+3=7+3=10,進(jìn)入下一次循環(huán);當(dāng)a=4,b=10時,因b>=9成立,執(zhí)行“break;”退出循環(huán)。

46.BB)【解析】算法在運行過程t}1需輔助存儲空間的大小稱為算法的空間復(fù)雜度。算法的有窮性是指個算法必須在執(zhí)行有限的步驟以后結(jié)束。

47.D解析:在for循環(huán)中用fpfinff(fp,'%d',i);將循環(huán)變量的值1~5輸出到fp指向的文件data.dat中,輸出3個數(shù)后換行。執(zhí)行rewind(fP)使文件指針重新返回到文件的開頭,再執(zhí)行fscanf(fp,'%d%d',&k,&n)將磁盤文件中的前兩個數(shù)輸入給變量k,n,并將其輸出到屏幕上。

48.A

49.A解析:本程序中用了兩層for循環(huán),外層循環(huán)是控制人數(shù),循環(huán)一次是求一個人的成績和,然后除以4得到平均成績。每個人的成績總和一開始時都必須清0,否則就會出現(xiàn)后面人的總成績越來越大?!皊um=0.0”;應(yīng)在外層循環(huán)中。

50.D

51.D解析:C語言的程序是由主函數(shù)main()開始運行,由主函數(shù)來調(diào)用其他函數(shù),所以D是錯誤的。

52.A解析:printf函數(shù)的返回值通常是本次調(diào)用中輸出字符的個數(shù)。scanf函數(shù)在調(diào)用結(jié)束后將返回一個函數(shù)值,其值等于得到輸入項的個數(shù)。

53.C解析:C語言源程序的最小單位是函數(shù),所以本題選C。

54.D

55.B其中B選項的getchar函數(shù)用于從終端讀入字符。故本題答案為B選項。

56.A解析:數(shù)據(jù)流圖包括4個方面,即加工(轉(zhuǎn)換)(輸入數(shù)據(jù)經(jīng)加工變換產(chǎn)生輸出)、數(shù)據(jù)流(沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)據(jù)流名)、存儲文件(數(shù)據(jù)源)(表示處理過程中存放各種數(shù)據(jù)的文件)、源和潭(表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實體)。不包括選項中的控制流。

57.B

58.C解析:data是—結(jié)構(gòu)體變量,a是它的成員,因此引用a域的正確方法是:data.a,取它的地址賦值給指針變量p的語句應(yīng)該是:p=&data.a。選項A,將a的地址直接賦給了p,而忽略了a為結(jié)構(gòu)體內(nèi)部的一個成員,而不是一單獨的變量,故選項A不正確;選項B在p=data.a表達(dá)式中右邊為一個結(jié)構(gòu)體變量的成員不是地址,而左邊為一指針應(yīng)該將一地址賦給它,故選項B不正確;選項D表達(dá)式*p=data.a是將結(jié)構(gòu)體變量中的成員a的值賦給指針p所指向的變量值,而不是使指針p指向data中的a域,故選項D不正確:4個選項中只有C正確。

59.C解析:靜態(tài)局部變量在編譯時賦初值,即只賦韌值一次,在程序運行時它已有初值。以后每次調(diào)用時不再重新賦初值而只是保留上次函數(shù)調(diào)用結(jié)束時的值,而對自動變量賦初值,不是在編譯時進(jìn)行的,而在函數(shù)調(diào)用時進(jìn)行,每調(diào)用一次函數(shù)重新給一次初值,相當(dāng)于執(zhí)行一次賦值語句。本題在程序開頭定義了全局變量d并賦初值1,在被調(diào)函數(shù)fun()中,定義了靜態(tài)局部變量d,初值為5。在第一次調(diào)用函數(shù)fun時,d初值為5,p由主函數(shù)傳遞過來的值為1,則d=d+p=5+1=6,由于d是靜態(tài)局部變量,在函數(shù)調(diào)用結(jié)束后,它仍保留d=6。再次調(diào)用fun函數(shù),d的初值為6,而由主函數(shù)傳遞的p的值為9,則此時d=d+p=6+9=15,最后打印輸出d的值并返回主函數(shù)。

60.C解析:main()函數(shù)的作用,以及main()函數(shù)在程序中出現(xiàn)的位置。一個完整的C語言程序有且僅有一個主函數(shù)(main()函數(shù))。程序總從main()函數(shù)的第一條語句開始執(zhí)行,到main()函數(shù)的最后—條語句結(jié)束,其他函數(shù)都是在執(zhí)行main()函數(shù)時,通過函數(shù)調(diào)用或嵌套調(diào)用而得以執(zhí)行的。C語言規(guī)定,main()函數(shù)在程序中的位置是任意的。

61.A賦值表達(dá)式左邊必須是一個變量,而選項B)、c)中賦值號左邊都是表達(dá)式,選項D)進(jìn)行強(qiáng)制類型轉(zhuǎn)換時,應(yīng)寫為(double)x/10。

62.A

63.D在程序設(shè)計中,各模塊間的內(nèi)聚性越強(qiáng),則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚、低耦合,以有利于提高模塊的獨立性。耦合性與內(nèi)聚性是模塊獨立的兩個定性標(biāo)準(zhǔn),是互相關(guān)聯(lián)的。

64.D

65.C解析:算法的執(zhí)行效率與數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)都有很緊密的關(guān)系。算法的空間復(fù)雜度是指執(zhí)行該算法需要的內(nèi)存空間,并非算法程序中指令的條數(shù)。算法一般應(yīng)該具有以下4個特征:可行性、確定性、有窮性和擁有足夠情報。其中,有窮性是指算法必須能在執(zhí)行有限個步驟之后終止,否則可能失去實際意義。

66.D在C程序中,可以用字符數(shù)組存放一個字符串,然后輸出該字符串,也可以用字符指針指向一個字符串。

題目中用字符數(shù)組a[]來存放字符串'Itismine',a為數(shù)組名,表示首元素的地址,即字母I的地址。a+1表示數(shù)組中第二個元素t的地址,選項A正確。當(dāng)用字符串指針指向字符串時,只是將字符串的第一個元素的地址賦給指針,當(dāng)該指針指向其他字符串時,只需將該字符串的第一個元素地址賦給這個指針即可,和字符串的長度沒有關(guān)系,選項B也是正確的。指針變量的值為元素的地址,和元素具體的值沒有關(guān)系,當(dāng)指針指向不同的元素時,存放的地址也會發(fā)生改變,故選項C是正確的。數(shù)組a初始化時沒有指定數(shù)組長度,系統(tǒng)自動根據(jù)初值個數(shù)確定數(shù)組長度,題目中只是將10個有效字符存放到數(shù)組中,不能說明這個數(shù)組只能存放10個字符。

67.D解析:串的長度指的是串中字符的個數(shù),且其字符個數(shù)可以為零。選項D正確。

68.B解析:選項A定義數(shù)組時省略了長度,而C語言中規(guī)定,只有在定義并同時進(jìn)行初始化時,數(shù)組的長度才可以省略,數(shù)組的長度為初始化時候的成員個數(shù),故選項A錯誤;在C語言中規(guī)定,數(shù)組的長度必須是一個整數(shù)或整型常量表達(dá)式,故選項C不正確:定義時數(shù)組的長度不能使用變量表示,故選項D不正確,所以,4個選項中選項B符合題意。

69.A雖為嵌套的for循環(huán),但“m=m%j”只執(zhí)行1次,即當(dāng)i=3時,內(nèi)層循環(huán)條件成立,m=55%3=1,故選A。

70.Areturni吾句結(jié)束函數(shù).即使函數(shù)中有多個retum語句,也只會執(zhí)行一個。所以選項A)錯誤。

71.A軟件測試的目的是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,并不涉及改正錯誤,所以選項A錯誤。程序調(diào)試的基本步驟有:錯誤定位、修改設(shè)計和代碼,以排除錯誤、進(jìn)行回歸測試,防止引進(jìn)新的錯誤。程序調(diào)試通常稱為Debug,即排錯。軟件測試的基本準(zhǔn)則有:所有測試都應(yīng)追溯到需求、嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性、充分注意測試中的群集現(xiàn)象、程序員應(yīng)避免檢查自己的程序、窮舉測試不可能、妥善保存測試計劃等文件。故答案為A選項。

72.D

73.A

74.B本題考查函數(shù)的輸出格式。在printf函數(shù),格式說明符中有兩個“%”說明;將第1個%后面的字符原樣輸出,并不輸出其對應(yīng)r的變量值。

75.B本題考查do-while語句和if…else語句。do-while語句的功能是先執(zhí)行循環(huán)體再判斷條件,所以,先判斷if語句的條件,y=-4,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出y,然后將x的值減1,x=3,條件不成立,執(zhí)行下面的else語句,輸出Y,然后將X的值減1,x=2,滿足while循環(huán)條件,繼續(xù)循環(huán)。第三次循環(huán):先判斷if語句的條件,y=2,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出y,然后將X的值減1,x=l,滿足while循環(huán)條件,繼續(xù)循環(huán)。第四次循環(huán):先判斷if語句的條件,y=-1,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出Y,然后將x的值減1,x=0,不滿足while循環(huán)條件,結(jié)束循環(huán)。所以B正確。

76.Bdouble,char,int,第一個字母都是小寫。

77.A在有序的線性表中進(jìn)行查找,最差的情況為從表頭查找到表尾都沒有所需要的值。長度為n的線性表從表頭開始每次取出一個值比較,若不符合,再取下一個值,依次比較,一直到最后一個,需要比較n次。

78.B\r\n

79.Aif\r\nelse語句和“?:”可以互換,?前語句相當(dāng)于i垢括號內(nèi)容,?后語句相當(dāng)于i垢的執(zhí)行語句,冒號后語句相當(dāng)于else后語句,綜合以上可以看出A)符合題意。

80.A

81.(1)錯誤:intproc(charstr[])正確:voidproc(charstr[])(2)錯誤:str[j]=str[i++];正確:str[j]=str[i];【解析】由主函數(shù)中的函數(shù)調(diào)用可知,函數(shù)proc沒有返回值。因此,“intproc(charstr[])”應(yīng)改為“voidproc(charstr[])”;由函數(shù)proc可知,if語句塊完成將字符串str中的第i個元素與第j個元素相交換。因此,“str[j]=str[i++];”應(yīng)改為“str[j]=str[i];”。

82.voidfun(char*s,chart[]){ inti=0; for(;*s!=‘\0’;s++) /*找出ASCII值為奇數(shù)的字符依次存入數(shù)組t中*/ if(*s%2==1) t[i++]=*s; t[i]=‘\0’; /*在字符串的末尾加上字符串結(jié)束標(biāo)志*/}本題要求將s所指字符串中ASCII值為偶數(shù)的字符刪除,因此本題要求采用一個for循環(huán)來找出ASCII值為奇數(shù)的字符,將其依次存入數(shù)組t中,并使用if條件語句來判斷s所指字符串中ASCII值是否為奇數(shù)。將‘\\0’加在字符串的末尾來表示字符串的結(jié)束。要刪除ASCII值為偶數(shù)的字符,也就是要留下ASCII值為奇數(shù)的字符。由于最終要求出剩余字符(即ASCII值為奇數(shù))形成的新字符串,因此本題程序的算法是對原字符串從頭到尾掃描,找出ASCII值為奇數(shù)的字符,并將其依次存入數(shù)組t中。此外,還要注意數(shù)組t的下標(biāo)變化和下標(biāo)的初值(初值必須為0,即i=0),t[i++]的作用是先使用t[i],然后再使i自增1。2021-2022年四川省廣元市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.已知函數(shù)test定義為()。A.執(zhí)行函數(shù)test后,函數(shù)沒有返回值

B.執(zhí)行函數(shù)test后,函數(shù)不再返回

C.執(zhí)行函數(shù)test后,函數(shù)返回任意類型值

D.以上三個答案都是錯誤的

3.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()。

A.元素按值有序B.采用順序存儲結(jié)構(gòu)C.元素按值有序,且采用鏈?zhǔn)酱鎯Y(jié)構(gòu)D.元素按值有序,且采用順序存儲結(jié)構(gòu)

4.軟件生命周期中所花費用最多的階段是()。

A.詳細(xì)設(shè)計B.軟件編碼C.軟件測試D.軟件維護(hù)

5.運行下列程序,若從鍵盤輸入字符“a”,則輸出結(jié)果是()。

charc;

c=getchar;

if(c>=a&&c<=g)c=c+4:

elseif(c>=9&&c<=2)c=c-21:

elseprintf("inputerror!\n");

putchar(c);

A.fB.tC.eD.d

6.歸并排序采用的算法設(shè)計方法屬于()

A.歸納法B.分治法C.貪心法D.回溯方法

7.

8.字符串"\\"ABCDEF\"\\”的長度是()。

A.11B.10C.5D.3

9.用不帶頭結(jié)點的單鏈表存儲隊列時,其隊頭指針指向隊頭結(jié)點,其隊尾指針指向隊尾結(jié)點,則在進(jìn)行刪除操作時()。

A.僅修改隊頭指針B.僅修改隊尾指針C.隊頭、隊尾指針都要修改D.隊頭,隊尾指針都可能要修改

10.若有定義"int(*pt)[3];",則下列說法正確的是()。

A.定義了基類型為int的三個指針變量

B.定義了基類型為int的具有三個元素的指針數(shù)組pt

C.定義了一個名為*pt、具有三個元素的整型數(shù)組

D.定義了一個名為pt的指針變量,它可以指向每行有三個整數(shù)元素的二維數(shù)組

11.有以下程序

#include<stdio.h>

main()

{charch[3][5]={“AAAA”,”BBB”,”CC”};

printf(“%s\n”,ch[1];)

}

程序運行后的輸出結(jié)果是()A.A.AAAA

B.CC

C.BBBCC

D.BBB

12.在一個鏈?zhǔn)疥犃兄校僭O(shè)f和r分別為隊頭和隊尾指針,則插入S所指結(jié)點的運算是()。

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

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

C.S->next=rr=s;

D.r->next=f;f=s;

13.下列說法不正確的是()。

A.圖的遍歷是從給定的源點出發(fā)每一個頂點僅被訪問一次

B.圖的深度遍歷不適用于有向圖

C.遍歷的基本算法有兩種:深度遍歷和廣度遍歷

D.圖的深度遍歷是一個遞歸過程

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

A.為了建立一個關(guān)系,首先要構(gòu)造數(shù)據(jù)的邏輯關(guān)系

B.表示關(guān)系的二維表中各元組的每一個分量還可以分成若干數(shù)據(jù)項

C.一個關(guān)系的屬性名表稱為關(guān)系模式

D.一個關(guān)系可以包括多個二維表

15.有以下程序:#include<stdio.h>voidexch(intt[]){t[0]=t[s];}main(){intx[10]={1,2,3,4,5,6,7,8,9,10},i=0;while(i<=4){exch(&x[i]);i++;}for(i=0;i<5;i++)printf("%dl"x[i]);printf("\n");}程序運行后輸出的結(jié)果是()。A.246810B.13579C.12345D.678910

16.若有定義;intw[3][5];,則以下不能正確表示該數(shù)組元素的表達(dá)式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)

17.有以下程序:#include<stdio.h>main(){inta[]={10,20,30,40},*p=a,j;for(i=0;i<=3;i++){a[i]=*P;p++;}printf("oAd\n",a[2]);}程序運行后的輸出結(jié)果是()。A.30B.40C.10D.20

18.對于int*pa[5];的描述,()是正確的。

A.pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素

B.pa是一個指向某數(shù)組中第5個元素的指針,該元素是int型變量

C.pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針

D.pa[5]表示某數(shù)組的第5個元素的值

19.軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是()。

A.概要設(shè)計B.軟件設(shè)計C.可行性研究和計劃制定D.需求分析

20.下列存儲器中,存取速度最快的是()。

A.軟盤B.硬盤C.光盤D.內(nèi)存

二、2.填空題(20題)21.\13'在內(nèi)存中占1個字節(jié),"\12"在內(nèi)存中占______個字節(jié)。

22.以下程序給指針p分配三個double型動態(tài)內(nèi)存單元,請?zhí)羁铡?/p>

#include<stdio.h>

#include<stdlib.h>

main()

{double*p;

p=(double*)malloc(【】);

p[0]=1.5;p[1]=2.5;P[2]=3.5;

printf("%f%f%f\n",p[0],p[1],p[2]);

}

23.下面程序的運行結(jié)果是【】。

main()

{inti=0,j=10,k=2,s=0;

for(;;)

{i+=k;

if(i>j)

{printf("%d\n",s);

break;}

s+=i;}}

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

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

{for(j=0;j<3;j++)printf("%d",a[i][j]);

printf("\n");

}

}

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

fun(ihtx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

26.結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。

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

main()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2==0)

*p='*';

p++;i++;

}

puts(a);

}

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

#include<stdio.h>

main()

{inti;

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

printf("\n");

}

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

voidswap(intx,inty)

{intt;

t=x;x=y;y=t;printf("%d%d",x,y);

}

main()

{inta=3,b=4;

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

}

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

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf("%d",--y);continue;}}

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

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

32.下列程序的運行結(jié)果是______。

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

33.軟件測試是保證軟件質(zhì)量的重要手段,而軟件測試的主要和重要的測試方法是通過測試數(shù)據(jù)和【】的設(shè)計來實現(xiàn)。

34.以下函數(shù)的功能是計算s=1+1/2!+1/3!+…+1/n!,請?zhí)羁铡?/p>

doublerun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

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

{【】;

fac=fac/k;

s=s+fac;

}

}

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

main()

{ints,i;

for(s=0,i=1;i<3;i++,s+=i);

printf("%d\n".s);

}

36.下列程序中的數(shù)組a包括10個整數(shù)元素,分別將前項和后項之和存入數(shù)組b,并按每行4個元素輸出數(shù)組b。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

______;

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

{if(i%4=0)printf("\n");

printf("%3d",b[i]);

}

}

37.算法的復(fù)雜度主要包括空間復(fù)雜度和______復(fù)雜度。

38.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

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

#include<stdio.h>

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);

}

40.以下程序的運行結(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=%d\n",k);

}

三、1.選擇題(20題)41.下列工具中為需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

42.以下運算符中優(yōu)先級最低的算符是______。

A.&&B.&C.+=D.?:

43.以下程序中函數(shù)f的功能是:當(dāng)flag為1時,進(jìn)行由小到大排序;當(dāng)flag為0時,進(jìn)行由大到小排序。voidf(intb[],intn,intflag){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(flag?b[!]>[j]:b[i]<b[j]){t=b[i];b[i]=b[j];b[j]=t;}}main(){inta[10]={5,4,3,2,1,6,7,8,9,10},i;f(&a[2],5,0);f(a,5,1),for(i=0;i<10;i++)printf("%d,",a[i]);}程序運行后輸出結(jié)果是()。

A.1,2,3,4,5,6,7,8,9,10,

B.3,4,5,6,7,2,1,8,9,10,

C.5,4,3,2,1,6,7,8,9,10,

D.10,9,8,7,6,5,4,3,2,1,

44.有以下程序main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后輸出結(jié)果是

A.77B.88C.810D.1010

45.若有如下程序:main(){inta=1,b=1;for(;a<=10;a++){if(b>=9)break;if(b%3==1){b+=3;continue;}b++;}printf("%d,%d",b,a);}則程序運行后的輸出結(jié)果是()。

A.10,4B.7,3C.10,3D.11,3

46.下面關(guān)于算法的敘述中,正確的是()

A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)

B.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止

C.算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)

D.以上三種描述都正確

47.有以下程序:#include<stdlo.h>main(){FILE*fp;inti,k,n;fp=fopen("data.dat","w+")for(i=1;i<6;i++){fprintf(fp."%d",i);if(i%3==0)fprintf(fp,"\n");}rewind(fp);fscanf(fp."%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);

A.00B.12345C.14D.1

48.下列程序的輸出結(jié)果是_____。main(){intn=4;while(n--)printf("%d",--n);}

A.20B.31C.321D.210

49.以下程序的功能是:按順序讀入10名學(xué)生4門課程的成績,計算出每位學(xué)生的平均分并輸出,程序如下:main(){intn,k;floatscore,sum,ave;sum=0.0;for(n=1;n<=10;n++){for(k=1;k<=4;k++){scanf(“%f”,&score);sum+=score;}ave=sum/4.0;printf(“NO%d:%f\n”,n,ave);}}上述程序運行后結(jié)果不正確,調(diào)試中發(fā)現(xiàn)有一條語句出現(xiàn)在程序中的位置不正確。這條語句是

A.sum=0.0;

B.sum+=score;

C.ave=sum/4.0;

D.printf(“NO%d:%f\n”,n,ave);

50.假定w、x,y、z、m均為int型變量,有如下程序段;w=1;x=2;y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m=(m<z)?m:z;則該程序段執(zhí)行后,m的值是()

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

51.以下敘述不正確的是______。

A.分號是C語言的必要組成部分

B.C程序的注釋可以寫在句的后面

C.函數(shù)是C程序的基本單位

D.主函數(shù)的名字不一定用main表示

52.關(guān)于printf()函數(shù)的返回值敘述正確的是

A.通常是本次調(diào)用中輸出字符的個數(shù)B.通常是輸出的第一個數(shù)值C.通常返回布爾值真D.通常返回非零值

53.C語言源程序的最小單位是()。

A.程序行B.語句C.函數(shù)D.字符

54.下列描述中,正確的一條是______。

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

B.在C語言中,判斷一個量是否為:真”時,以0代表“假”,以1代表“真”.

C.設(shè)a=3、b=4、c=5,則表達(dá)式!(x=a)&&(y=b)&&0的值為0

D.一個數(shù)組的各個數(shù)組元素可屬于不同的數(shù)據(jù)類型

55.以下敘述中錯誤的是A.gets函數(shù)用于從終端讀入字符串

B.getchar函數(shù)用于從磁盤文件讀入字符

C.fputs函數(shù)用于把字符串輸出到文件

D.fwrite函數(shù)用于以二進(jìn)制形式輸出數(shù)據(jù)到文件

56.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()

A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭

57.下列選項中不屑于C語言數(shù)據(jù)類型的是()

A.整型B.邏輯型C.雙精度型D.枚舉型

58.設(shè)有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語句是()

A.p=&a;B.p=data.a;C.p=&data.a,D.*p=data.a;

59.以下程序運行后的輸出結(jié)果是______。intd=1;fun(intp){staticintd=d;d+=p;printf("%d",d);returnd;}main(){inta=3;printf("%d\n",fun(a+fun(d)));}

A.699B.669C.61515D.6615

60.以下說法中,不正確的是

A.C程序中必須有一個main()函數(shù),從main(

溫馨提示

  • 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

提交評論