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

付費下載

下載本文檔

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

文檔簡介

2022年安徽省巢湖市全國計算機等級考試C語言程序設(shè)計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.最小堆[0,3,2,5,7,4,6,8],在刪除堆頂元素0之后,其結(jié)果是()

A.[3,2,5,7,4,6,8]

B.[2,3,5,7,4,6,8]

C.[2,3,4,5,7,8,6]

D.[2,3,4,5,6,7,8]

2.

3.A.A.75310246B.01234567C.76310462D.13570246

4.設(shè)有定義“struct{charmark[12];intnum1;doublenum2;}t1,t2;”,若變量均已正確賦初值,則下列語句中錯誤的是()。

A.t1=t2;

B.t2.num1=t1.num1;

C.t2.mark=t1.mark;

D.t2.num2=t1.num2;

5.

6.現(xiàn)有二叉搜索樹(BST)前序遍歷結(jié)果序列為abdefgc,中序遍歷結(jié)果序列為debgfac,請問后序遍歷結(jié)果序列為()

A.debgfaCB.edgfbcAC.edgbfcAD.degbfaC

7.有以下函數(shù):fun(char*p){returnp;}該函數(shù)的返回值是()。

A.無確切值B.形參p中存放的地址值C.一個臨時存儲單元的地址D.形參p自身的地址值

8.當用戶要求輸入的字符串中含有空格時,應(yīng)使用的輸入函數(shù)是()。

A.scanfB.getcharC.getsD.getc

9.以下關(guān)于C語言數(shù)據(jù)類型使用的敘述中錯誤的是A.若要準確無誤差的表示自然數(shù),應(yīng)使用整數(shù)類型

B.若要保存帶有多位小數(shù)的數(shù)據(jù),應(yīng)使用雙精度類型

C.若要處理如“人員信息”等含有不同類型的相關(guān)數(shù)據(jù),應(yīng)自定義結(jié)構(gòu)體類型

D.若只處理“真”和“假”兩種邏輯值,應(yīng)使用邏輯類型

10.下面程序的運行結(jié)果是

#include<stdio.h>

main()

{inta=28,b;

chars[10],*p;

p=s;

do{b=a%16;

if(b<10)*p=b+48;

else*p=b+55;

p++;a=a/5;}while(a>0);

*p=′\0′;puts(s);}

A.10B.C2C.C51D.\0

11.線處應(yīng)填入().A.b[i++]B.b[i]++C.b[i+=2]D.b[i]+=2

12.有以下程序:#include<stdi0.h>#include<string.h>structA{inta;charb[10];doubleC;);voidf(structAt);main(){structAa={"1001,"ZhangDa",l098,0};f(a);printf("%d,%S,%6.1f\n",a.a(chǎn),a.b,a.c);}voidf(structAt){t.a(chǎn)=1002;strcpy(t.b,"ChangRon9");t.c=1202.0;}程序運行后的輸出結(jié)果是()。A.1001,ZhangDa,1098.0

B.1002,ChangRong,1202.0

C.1001,ChangRong,1098.0

D.1002,ZhangDa,1202.0

13.第

24

下面程序段的運行結(jié)果是

char*p="abcdefgh";

p+=3;

printf("%d\n",strlen(strcpy(p,"ABCD")));

A.8B.12C.4D.7

14.下列關(guān)于棧的描述中錯誤的是()。A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

15.有以下程序:

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

A.02B.13C.57D.12

16.以下說法錯誤的是()。

A.C語言中的常量是指在程序運行過程中經(jīng)常被用到的變量

B.C語言中的常量是指在程序運行過程中其值不能被改變的量

C.C語言中的常量可以用一個符號名來代表

D.C語言中的常量可以用宏來定義

17.以下關(guān)于注釋的敘述中錯誤的是()。

A.注釋的邊界符號“/”和“*”之間不允許加入空格

B.C語言允許注釋出現(xiàn)在程序中任意合適的地方

C.注釋的內(nèi)容僅用于閱讀,對程序的運行不起作用

D.注釋的邊界符號“/*”和“*/”必須成對出現(xiàn)且可以嵌套

18.

19.同一個關(guān)系模型的任意兩個元組值()。

A.可以全相同B.不能全相同C.必須全相同D.以上都不對

20.有以下程序:

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

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

二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

#deftneJFT(x)x*x

main()

{inta,k=3;

a=++JFT(k+1);

printf("%d",a);

}

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

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

23.以下程序運行后的輸出結(jié)果是()。#definePower2(x)x*xmain(){inti=6,j=8;printf("%d\n",Power2(i+j));}

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

main()

{inta=1,b=3,c=5;

if(c=a+b)printf("yes\n");

elseprintf("no\n");

}

25.以下程序中,函數(shù)SumColumMin的功能是:求出M行N列二維數(shù)組每列元素中的最小值,并計算它們的和值。和值通過形參傳回主函數(shù)輸出。請?zhí)羁铡?/p>

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

{inti,j,k,s=0;

for(i=0:i<N;i++)

{k=0:

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

if(a[k][i]>a[j][i]k=j;

s+=______;

}

______=s:

}

main()

{intx[M][N]={3,2,5,1,4,1,8.3},s;

sumColumMin(______)

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

}

26.關(guān)系模型的數(shù)據(jù)操作即是建立在關(guān)系上的數(shù)據(jù)操作,一般有【】、增加、刪除和修改四種操作。

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

main()

{inti,sum;

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

sum+=i;

printf("%d",sum);

}

28.已知a=1,b=2,則表達式(a&B)&b||b的結(jié)果為()。

29.若a=10,b=20,則表達式!(a<b)的值是【】。

30.在面向?qū)ο蟮姆椒ㄖ?,______描述的是具有相似屬性與操作的一組對象。

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

intx=0,y=0;

while(x<15)y++,x+=++y;

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

32.本程序用改進冒泡法對數(shù)組a[n]的元素從小到大排序,請在程序空白處填空。

voidbubble(inta[],intn)

{intj,k,jmax,temp;

jmax=【】;

do{

k=0;

for(j=0;j<jmax;j++)

if(a[j]>a[j+1])

{temp=a[j];a[j]=a[j+1];a[j+1]=temp;k=【】;

jmax=k;

}while(jmax>0);}

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

1

11

121

1331

14641

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

(1)第0列元素和主對角線元素均為1

(2)其余元素為其左卜方和正上方元素之和

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

請將程序補充完整。

#defineN6

voidyanghui(intx[N][N])

{inti,j;

x[0][0]=1;

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

{x[i][0]=______=1;

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

x[i][j]=______;

}

}

34.若x為int類型,請寫出與!x等價的C語言表達式______。

35.在程序設(shè)計階段應(yīng)該采取【】和逐步求精的方法,把一個模塊的功能逐步分解,細化為一系列具體的步驟,進而用某種程序設(shè)計語言寫成程序。

36.以下程序運行時若從鍵盤輸入:102030<回車>。輸出結(jié)果是【】。

#include<stdio.h>

main()

{

inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);

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

}

37.Jackson方法是一種面向【】的結(jié)構(gòu)化方法。

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

structNODE

{intk;

structNODE*link;

};

main()

{structNODEm[5],*p=m,*p=m,*q=m+4;

inti=0;

while(p!=q)

{p->k=++i;p++

q->k=i++;q--;

}

q->k=i;

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

printf("%d",m[i].k);

ptintf("\n");

}

39.軟件是程序、數(shù)據(jù)和【】的集合。

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

#include<stdio.h>

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++)

printf("%d%d",X--,y);

}

三、1.選擇題(20題)41.設(shè)p1和p2是指向一個血型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語句是

A.k=*p1+*p2B.p2=k;C.p1=p2;D.k=*p1*(*p2);

42.下列程序段中,不能正確賦值的是

A.char*p,ch;p=&ch;scanf("%c,&p")

B.char*p;p=(char*)malloc(1)scanf("%c",p);

C.char*p*p=getchar();

D.char*p,ch;p=&ch;*p=getchar();

43.下列選項中不是字符常量的是()。

A.'\v'B.'\x2a'C.'a'D."\0"

44.判斷字符串s1是否大于字符串s2,應(yīng)該使用()。

A.if(strcmp(s1,s2)<0)

B.if(s1>s2)

C.if(strcmp(s2,s1)<0)

D.if(strcmp(s1,s2))

45.設(shè)樹T的度為4,其中度為1,2,3,4的結(jié)點個數(shù)分別為4,2,1,1,則T中的葉子結(jié)點數(shù)為()。

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

46.交換兩個變量的值,不允許用臨時變量,應(yīng)該使用下列()位運算符。A.A.&B.^C.||D.~

47.有以下程序:#include<stdio.h>voidfun(char*c,intD){*c=*c+1;d+=1;printf("%c,%c",*c,D;}main(){chara='F',b='f';fun(&b,A);printf("%c,%c\n",a,B);}程序的輸出結(jié)果為()。

A.g,GF,gB.g,FF,gC.G,fF,GD.f,gf,g

48.字符(char)型數(shù)據(jù)在微內(nèi)存中的存儲形式是______。

A.反碼B.補碼C.EBCDIC碼D.ASCII碼

49.設(shè)樹T的度為4,其中度為1、2、3、4的結(jié)點的個數(shù)分別為4、2、1、1,則T中的葉點為______。

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

50.軟件開發(fā)模型包括Ⅰ、瀑布模型Ⅱ、扇形模型Ⅲ、快速原型法模型Ⅳ、螺旋模型

A.Ⅰ、Ⅱ、ⅢB.Ⅰ、Ⅱ、ⅣC.Ⅰ、Ⅲ、ⅣD.Ⅱ、Ⅲ、Ⅳ

51.有下列程序段:structSt{intx;int*y;)*pt;inta[]={1,2),b[]={3,4);structstc[2]={10,a,20,b);pt=c;下列選項中表達式的值為11的是()。

A.*pt->yB.pt->xC.++pt->xD.(pt++)->x

52.下列選項中,不屬于模塊間耦合的是()。A.數(shù)據(jù)耦合B.標記耦合C.異構(gòu)耦合D.公共耦合

53.若要求定義具有10個血型元素的一維數(shù)組a,則以下定義語句中錯誤的是()。

A.#definmeN10inta[N];

B.#definen5inta[2*n];

C.inta[5+5];

D.intn=10,a[n];

54.模塊本身的內(nèi)聚是模塊獨立性的重要性度量因素之—。在7類內(nèi)聚中,具有最強內(nèi)聚的—類是______。

A.順序性內(nèi)聚B.過程性內(nèi)聚C.邏輯性內(nèi)聚D.功能性內(nèi)聚

55.已知一個文件中存放若干工人檔案記錄,其數(shù)據(jù)結(jié)構(gòu)如下:structa{charnumber[100];intage;floatp[6];};定義一個數(shù)組:structanumber[10];假定文件已正確打開,不能正確地從文件中讀入10名工人數(shù)據(jù)到數(shù)組b中的是()。

A.fread(b,sizeof(structA),10,fp);

B.for(i=0;i<10;i++)fread(b[i],sizeof(structA),1,fp);

C.for(i=0;i<10;i++)fread(b+i,sizeof(structA),1,fp);

D.for(i=0;i<5;i+=2)fread(b+i,sezeof(structA),2,fp);

56.運行以下程序后,如果從鍵盤上輸入china#<回車>,貝愉出結(jié)果為_______。#include<stdio.h>main(){intv1=0,v2=O;charch;while((ch=getchar())!='#')switch(ch){case'a':case'h':default:v1++;case'O':v2++;}printf("%d,%d\n",v1,v2);}

A.2,0B.5,0C.5,5D.2,5

57.若有說明inta[][3]={1,2,3,4,5,6,7,8,9},則a數(shù)組第一維的大小是()。

A.2B.3C.4D.無確定值

58.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inta[2][3]={{1,2,3},{4,5,6}},(*p)[3],i;p=a;for(i=0;i<3;i++){if(i<2)p[1][i]=p[1][i]-1;elsep[1][i]=1;}printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}

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

59.下列描述說明正確的是()

A.定義結(jié)構(gòu)體時,它的每個成員的數(shù)據(jù)類型可以不同

B.不同結(jié)構(gòu)體的成員名不能相同

C.結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型不能是結(jié)構(gòu)體本身

D.結(jié)構(gòu)體定義時各成員項之間可用分號也可用逗號隔開

60.已定義以下函數(shù):fun(Char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}函數(shù)的功能是()。

A.將p1所指字符串復(fù)制到p2所指內(nèi)存空間

B.將p1所指字符串的地址賦給指針p2

C.對p1和p2兩個指針所指字符串進行比較

D.檢查p1和p2兩個指針所指字符串中是否有'\0',

四、選擇題(20題)61.

62.閱讀下面程序,則執(zhí)行后的結(jié)果為

#include"stdio.h"

fun1()

{intk=20;

returnk;

}

fun2()

{inta=15;

returna;}

fun3(inta,intb)

{intk;

k=(a-b)*(a+b);

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

main()

{un3(fun1(),fun2());}

A.0B.184

C.175D.編譯不通過

63.

64.

65.算法分析的目的是()。

A.找出數(shù)據(jù)結(jié)構(gòu)的合理性B.找出算法中輸入和輸出之間的關(guān)系C.分析算法的易懂性和可靠性D.分析算法的效率以求改進

66.

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

main

{inti,k,a[10],p[3];

k=5;

for(i=0:i<10;i++)a[i]=i;

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

for(i=0;i<3;i++)k+=p[i]*2;

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

}

A.20B.21C.22D.23

67.有以下程序,若從鍵盤上輸入7和3

main()

{inta,b,k;

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

k=a;

if(a<b)k=a%b;

elsek=b%a;

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

}

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

A.7B.3

C.1D.0

68.若程序中有以下說明和定義。

structabc

{

intx;chary;

}

structabcs1,s2;

則會發(fā)生的情況是

A.編譯時出錯B.程序?qū)㈨樞蚓幾g、連接、執(zhí)行

C.能順序通過編譯、連接,但不能執(zhí)行D.能順序通過編譯,但連接出錯

69.在ASP.NET中采用CodeBehind代碼隱藏技術(shù)分離HTML顯示代碼和業(yè)務(wù)邏輯代碼,在PHP中采用的技術(shù)是()。

A.模板技術(shù)B.靜態(tài)緩存技術(shù)C.PHP引擎技術(shù)D.后臺編譯技術(shù)

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

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

71.有以下程序:

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

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

72.

73.

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

A.C程序中注釋部分只能放在程序最后

B.花括號“{“和”}”可以作為函數(shù)體的定界符,也可以作為復(fù)合語句的定界符

C.構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名

D.分號不是語句的一部分,是C語句之間的分隔符

75.

76.軟件測試的目的是()。

A.評估軟件可靠性B.發(fā)現(xiàn)并改正程序中的錯誤C.改正程序中的錯誤D.發(fā)現(xiàn)程序中的錯誤

77.

78.以下敘述中正確的是

A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作

B.用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要有輸入

C.用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出

D.用C程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出

79.有以下程序:

fun(inta,intb)

{a++;b++;

if(a>b)return(a);

elsereturn(b);

}

void

main()

{intx=3,y=8,z=6,r;

r=fun(fun(x,y++),2*z);

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

}

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

A.13B.6

C.8D.12

80.若有定義語句:“intx=10;”,則表達式x-=x+x的值為()。

A.-20B.-l0C.0D.10

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun的功能是:將tt所指字符串中的小寫字母全部改為對應(yīng)的大寫字母,其他字符不變。

例如,若輸入“Ab,cD”,則輸出“AB,CD”。

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

注意:部分源程序在文件MODIl.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

六、程序設(shè)計題(1題)82.請編寫一個函數(shù)proc(),它的功能是:求出一個4×N整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C

2.C

3.A本題的考點是C語言的數(shù)組及其排序。本題的程序中分為2個循環(huán)體,第一個循環(huán)體將數(shù)組中1,3,5,7,2,4,6,0的前4個元素從大到小排序,這個循環(huán)體結(jié)束后數(shù)組中的值為7,5,3,1,2,4,6,0。第二個循環(huán)體將數(shù)組中7,5,3,1,2,4,6,0從第5個開始的4個元素從小到大排序,這個循環(huán)體結(jié)束后數(shù)組中的值為7,5,3,1,0,2,4,6。所以正確答案是選項A。

4.Cmark為結(jié)構(gòu)體中的數(shù)組,不能直接賦值,所以C選項錯誤。故本題答案為C選項。

5.A

6.B

7.B解析:return中返回的是指針p的值,也就是形參p中存放的地址值。

8.C解析:C語言提供了許多輸入函數(shù),其中有:getchar(輸入字符)、scanf(格式輸入)和gets\u3000(輸入字符串)等。題目要求輸入的是字符串,所以可以排除getchar,而且要求輸入的字符串中包含空格,而scanf函數(shù)默認將輸入的空格字符作為分割符,所以空格不會被輸入,故可排除scanf。getc的作用是從文件中輸入一個字符,故也不可取。gets函數(shù)可以輸入一整行作為一個字符串,其中也包括空格字符,故應(yīng)該選擇C。

9.D解析:C語言中沒有邏輯類型,若只處理"真"或"假"兩種邏輯值,可以使用整型數(shù)"1"或"0"表示,故選D。

10.C解析:考查用字符指針處理字符串的方法。語句'p=s;'是使指針p指向字符數(shù)組s。*p則引用了p所指位置的數(shù)組元素。通過指針來引用一維數(shù)組元素。

11.D

12.A將結(jié)構(gòu)變量作為形參,通過函數(shù)間形參與實參相結(jié)合的方式將整個結(jié)構(gòu)傳遞給函數(shù),這種傳遞方式是值傳遞。在被調(diào)用函數(shù)中,對結(jié)構(gòu)形參變量值進行的任何修改都不會影啊到調(diào)凋函數(shù)中的結(jié)構(gòu)變量。

13.C在本題中,程序段首先定義了字符型指針變量p,并使其指向一個字符串,然后將指針變量p加3,即使其指向字符串的第四個元素。然后執(zhí)行輸出語句,通過輸出語句的輸出格式我們可以知道,最后輸出的是一個十進制數(shù)的整型數(shù)值,其輸出列表為strlen(strcpy(P,″ABCD″))。這就要求我們了解strlen函數(shù)和strcpy函數(shù)的作用。

strcpy的調(diào)用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串復(fù)制到目的地址中,這種復(fù)制將覆蓋原來的字符串。strcat函數(shù)的功能是將源地址的字符串復(fù)制到目的地址字符串的后面。

strlen的調(diào)用格式是:strlen(字符串地址),其功能是返回字符串中字符的個數(shù)。

那么程序中執(zhí)行strcpy(P,″ABCD″)后指針變量p所指向的字符串為“ABCD”,該字符串中字符的個數(shù)為4,那么執(zhí)行strlen后,程序最終輸出的結(jié)果是4。因此本題正確的答案是C。

14.B棧是限定只能在表的一端進行插入和刪除操作的線性表,入棧和出棧都是在棧頂進行,它們的操作特點是先進后出,因此具有記憶作用。??梢圆捎庙樞虼鎯?,也可以采用鏈式存儲。

15.D本題考查邏輯運算符的”短路”現(xiàn)象,由于k的值為0,表達式首先去求k++的值,因為表達式k++的值為0,系統(tǒng)完全可以確定邏輯表達式的運算結(jié)果總是為0,因此將跳過n++>2,不再對它進行求值,即k的值加1,n的值不變。

16.AC語言中的常量是指在程序運行過程中其值不能被改變的量,它可以用宏來定義,用一個符號名來代表。選項A錯誤,選項B、C、D正確。本題答案為A選項。

17.D在編寫程序時可以在程序中加入注釋。在添加注釋時,注釋內(nèi)容必須放在符號“/*”和“*/”之間,“/*”和“*/”必須成對出現(xiàn),“/*”與“*/”之間不可以有空格,選項A正確;注釋可以用英文,可以用中文,可以出現(xiàn)在程序中任意合適的地方,選項B正確;注釋部分只適用于閱讀,對程序的運行不起作用,選項C正確;使用“/*”和“*/”的注釋之間不可再嵌套“/*”和“*/”,選項D錯誤。故本題答案為D選項。

18.C

19.B關(guān)系具有以下7個性質(zhì)。①元組個數(shù)有限性:二維表中元組的個數(shù)是有限的。②元組的唯一性:二維表中任意兩個元組不能完全相同。③元組的次序無關(guān)性:二維表中元組的次序,即行的次序可以任意交換。④元組分量的原子性:二維表中元組的分量是不可分割的基本數(shù)據(jù)項。⑤屬性名唯一性:二維表中不同的屬性要有不同的屬性名。⑥屬性的次序無關(guān)性.二維表中屬性的次序可以任意交換。⑦分量值域的同一性:二維表屬性的分量具有與該屬性相同的值域,或者說列是同質(zhì)的。滿足以上7個性質(zhì)的二維表稱為關(guān)系,以二維表為基本結(jié)構(gòu)所建立的模型稱為關(guān)系模型。本題答案為B選項。

20.A在函數(shù)point函數(shù)調(diào)用時,系統(tǒng)自動為函數(shù)的形參P分配內(nèi)存空間,并賦值為實參P的值。當執(zhí)行語句P+=3;時,系統(tǒng)操作的是形參P的內(nèi)存空間,更改形參P的內(nèi)容,而實參指針變量P的值未受影響,即指針變量作為函數(shù)參

21.99解析:宏替換的原則是按原樣替換,本題中遇到形參x則以實參k+1替換,其他字符不變,所以JFT(k+1)經(jīng)替換后為k+1,k+1,則a=++k+1*k+1。若k的值為3,則經(jīng)過運算為a=4+1*4+1=9。

22.246

23.6262解析:本題考查的是宏定義。帶參數(shù)的宏定義是按#indefine命令行中指定的字符串從左到右進行轉(zhuǎn)換。本題中替換的式子為:6+8*6+8,代入i,j的值得到62。

24.yesyes解析:if語句的條件語句為c=a+b=1+3=4,即條件為真,執(zhí)行語句printf('yes\\n');,輸出結(jié)果為yes。

25.a[k][i]*sumx&s

26.查詢查詢解析:關(guān)系模型的數(shù)據(jù)操作即是建立在關(guān)系上的數(shù)據(jù)操作,一般有查詢、增加、刪除和修改四種操作。數(shù)據(jù)查詢是指用戶可以查詢關(guān)系數(shù)據(jù)庫中的數(shù)據(jù),它包括一個關(guān)系內(nèi)的查詢以及多個關(guān)系間的查詢。數(shù)據(jù)刪除的基本單位是一個關(guān)系內(nèi)的元組,它的功能是將指定關(guān)系內(nèi)的指定元組刪除。數(shù)據(jù)增加僅對一個關(guān)系而言,在指定關(guān)系中插入一個或多個元組。數(shù)據(jù)修改是在一個關(guān)系中修改指定的元組和屬性。

27.無定值無定值解析:for(i=1;i<7;i++)決定了循環(huán)次數(shù)為6次,每次執(zhí)行的操作是sum+=i,但由于sum沒有初始化,并不知道sum的初值是多少,所以結(jié)果無定值。

28.1

29.00解析:已知a=10,b=20,所以邏輯表達式a<b的值為true,即為1,在這個表達式前面有一個邏輯運算符!,表示反操作,所以整個語句的值應(yīng)當為false,即為0。

30.類類解析:在面向?qū)ο蟮姆椒ㄖ?,把具有相同屬性和方法的對象稱為類,類是對象的抽象,對象是類的實例。

31.8208,20解析:本題考查while循環(huán)和++運算符的運用。x=0符合條件x<15,則執(zhí)行y++,x+=++y后,y=1,x=0+2=2后y=2,符合條件繼續(xù)循環(huán),y=3,x=x+4=6后y=4,再循環(huán)y=5,x=x+6=6+6=12后,y=6,繼續(xù)循環(huán)y=7,x=x+8=12+8-20,此時y=8。

32.n-1jn-1\r\nj解析:此題采用了do…while循環(huán)內(nèi)嵌for循環(huán)的雙層循環(huán)結(jié)構(gòu)來實現(xiàn)了數(shù)組元素的排序。數(shù)組元素通過首地址和數(shù)組下標的方式來引用的。

33.x[i][i]x[i-1][j-1]+x[i-1]或x[i-1][j]+x[i-1][j-1]x[i][i]\r\nx[i-1][j-1]+x[i-1]或x[i-1][j]+x[i-1][j-1]解析:本題考核的知識點是函數(shù)與算法結(jié)合在一起的應(yīng)用。在程序中用兩重循環(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]。

34.x==0x==0解析:!x的邏輯意思就是x為非,即x==0。

35.自頂而下自頂而下

36.1030010300解析:本題的scanf()函數(shù)要求用戶輸入三個十進制整數(shù),但只接受第一和第三個到函數(shù)的第二和第三個參數(shù)所指的內(nèi)存地址中。所以本題的輸出為:10300。

37.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)解析:Jackson方法是—‘種面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化方法。

38.1343113431解析:程序首先定義了一個結(jié)構(gòu)體NODE,在主函數(shù)中聲明了一個該結(jié)構(gòu)體的數(shù)組m[5]和兩個結(jié)構(gòu)體指針p和q,并分別初始化p指向m(指向數(shù)組的第—個元素):q指向m+4(指向數(shù)組的最后一個元素)。接下來定義并初始化一個整型變量i為0。然后用一個while循環(huán),在p和q不相等的時候執(zhí)行循環(huán)體:讓p所指結(jié)構(gòu)體的成員k等于++i的值,然后讓p指向下一個結(jié)構(gòu)體;讓q所指結(jié)構(gòu)體的成員k等于i++的值,然后讓q指向前一個結(jié)構(gòu)體。i從0開始交替調(diào)用++i和i++,兩個表達式的值依次分別為1和1、3和3……。所以當p==q循環(huán)結(jié)束時,實際循環(huán)了兩次,p和q都指向m數(shù)組的中間位置m[2],i自增了4次,所以q->k=i;就是讓m[2]k=4。所以程序最后輸出為:13431。

39.文檔文檔解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。

40.101091101091解析:for(表達式1;表達式2;表達式3)語句的功能是:首先計算表達式1的值,然后檢測表達式2的值,若其值為真,則執(zhí)行循環(huán)體語句,執(zhí)行完畢后,再計算表達式3的值。然后再檢測表達式2的值是否為真,若為真,繼續(xù)執(zhí)行循環(huán)體語句,若為假,則退出循環(huán);第1次循環(huán)x>8成立,輸出x=10,y=10后,x的值減1,i=1,執(zhí)行y=++i操作,y的值變?yōu)?;判斷條件還成立,輸出x=9,y=1,然后x的值減1,循環(huán)條件不成立,則退出循環(huán)。

41.B解析:本題主要考查了一維數(shù)組指針的賦值和用指針引用數(shù)組元素進行運算。選項B)中p2為指向int型變量的指針,而k為int型變量,不能將int型變量直接賦值給指向int型變量的指針,所以選項B)錯誤。

42.C解析:本題考查了字符的輸入函數(shù)getchar和利用scanf函數(shù)輸入一個字符。用scanf輸入字符時,格式說明字符應(yīng)該為%c。本題選項C)因為指針p沒有賦初值,所以是一個不定值,不能直接將getchar讀入的字符賦給指針p所指向的字符,所以選項C錯誤。

43.Dc語言規(guī)定,一個字符常量代表ASCII碼字符集里的一個字符,在群序中用單引號括起來,以便區(qū)分。'\v'表示的是豎向跳格:'kx2a'表示的是兩位十六迸制數(shù);'a'表示的是字符a對應(yīng)的ASCII碼值。"\0"用雙引號故不正確。

44.C解析:本題考查字符串比較函數(shù)strcmp()。調(diào)用形式:strcmp(s1,s2),其中s1、s2分別是字符串存儲區(qū)的首地址。函數(shù)功能:比較字符串str1和str2,當str1<str2時,返回值為負數(shù);當str1=str2時,返回0;當str1>str2,返回值為正數(shù)(注意:不能使用關(guān)系運算符比較兩個字符串的大小)。

45.D解析:根據(jù)給定的條件,在樹中,各結(jié)點的分支總數(shù)為:4×1+2×2+1×3+4×1=15:樹中的總結(jié)點數(shù)為:15(各結(jié)點的分支總數(shù))+1(根結(jié)點)=16:非葉子結(jié)點總數(shù)為:4+2+1+1=8。因此,葉子結(jié)點數(shù)為16(總結(jié)點數(shù))-8(非葉子結(jié)點總數(shù))=8。因此,本題的正確答案為D。

46.B解析:按邏輯位運算的特定作用主要有3點:①用按位與運算將特定位清0或保留特定位:②用按位或運算將特定的位置設(shè)置為1;③用按位異或運算將某個變量的特定位翻轉(zhuǎn)或交換兩個變量的值。

47.A

48.D解析:將一個字符常量放到一個字符變量中,實際上并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的ASCII碼值放到存儲單元中。

49.D解析:設(shè)樹中度為0、1、2、3、4的結(jié)點個數(shù)各為n0、n1、n2、n3、n4,T中的結(jié)點個數(shù)為n,則n=n0+n1+n2+n3+n4。在樹中,除了根結(jié)點,其余結(jié)點都有分支進入,由于這些分支由度1、2、3、4的結(jié)點射出,所以n=1*n1+2*n2+3*n3+4*n4+1,得n0=n2+2n3+3n4+1。

50.C解析:軟件開發(fā)模型包括瀑布模型、快速原型法模型和螺旋模型。

51.C解析:由題目的已知條件可知,pt指向結(jié)構(gòu)體數(shù)組c[2]的第一元素c[0],所以pt->x=10,執(zhí)行自加運算后為11。

52.C解析:模塊之間的耦合程度反映了模塊的獨立性,也反映了系統(tǒng)分解后的復(fù)雜程度。按照耦合程度從弱到強,可以將其分成5級,分別是:數(shù)據(jù)耦合、同構(gòu)耦合、控制耦合、公用耦合和內(nèi)容耦合。選項C),沒有這種耦合方式。注意:評價模塊獨立性的主要標準,以及對它們的定義和分類。

53.D解析:C語言規(guī)定,在定義數(shù)組時數(shù)組名后的方括號中必須是常量表達式,不能包含變量。因此,選項D中用變量n來定義數(shù)組的大小是錯誤的。故應(yīng)該選擇D。

54.D解析:內(nèi)聚性是—個模塊內(nèi)部各元素間彼此結(jié)合的緊密程度的度量。內(nèi)聚共有7類,它們之間的內(nèi)聚性由弱到強排列順序為:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚和功能內(nèi)聚。

55.B

56.C解析:執(zhí)行完一個case后面的語句后,流程控制移到下一個case繼續(xù)執(zhí)行?!癱ase常量表達式”只是起語句標號作用,并不是在該處進行條件判斷。在執(zhí)行switch語句時,根據(jù)switch后面表達式的值找到匹配的入口標號,就從此標號開始執(zhí)行下去,不再進行判斷。

57.B解析:本題考查二維數(shù)組第一維的大小如何確定。二維數(shù)組第一維的大小由下列規(guī)則確定:①當初值的個數(shù)能被第二維的常量表達式的值除盡時,所得商數(shù)就是第一維的大?。孩诋敵踔档膫€數(shù)不能被第二維的常量表達式的值除盡時,第一維的大小等于所得商數(shù)加1。

58.B解析:第1次執(zhí)行for循環(huán),p[1][0]=p[1][0]-1=3:第2次執(zhí)行for循環(huán),p[1][1]=p[1][1]-1=4:第3次執(zhí)行for循環(huán),p[1][2]=1,最后輸出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。

59.A

60.A解析:fun()函數(shù)中聲明了兩個字符串指針作為形參,在其函數(shù)體中用了一個while循環(huán),首先while括號內(nèi)表達式*p2=*p1是將p1所指的內(nèi)容賦值到p2所指的存儲空間中,然后在判斷是否為'\\0',表達式的值為真時,執(zhí)行循環(huán)體,指針p1和p2分別下移一位,當p1指向字符'\\n'時,表達式的值為假,循環(huán)結(jié)束,故此函數(shù)的功能是將p1所指字符串復(fù)制到p2所指內(nèi)存空間中。所以,4個選項中選項A符合題意。

61.A

62.C本題主要考查函數(shù)的嵌套調(diào)用。在本題中,程序首先定義了三個子程序即函數(shù)fun1、函數(shù)fun2和函數(shù)fun3。

從程序中可以看出,函數(shù)fun1和函數(shù)fun2都很簡單,分別定義一個整型變量,并賦初值,然后返回這個變量。

在函數(shù)fun3中,函數(shù)帶有兩個形參,然后定義一個整型變量k來保存(a-b)*(a+b)運算的結(jié)果,最后輸出k的值。

在主函數(shù)中,直接調(diào)用函數(shù)fun3,調(diào)用該函數(shù)的同時調(diào)用函數(shù)fun1和fun2,用函數(shù)fun1和fun2的返回值作為函數(shù)fun3的形參,此時形參a和b的值分別是20和15。執(zhí)行(a-b)*(a+b);語句結(jié)果為5*35=175,將該結(jié)構(gòu)保存至變量k中,因此,本題程序的最終輸出結(jié)果是175,正確答案選C。

63.B

64.A

65.D解析:算法分析是指對一個算法的運行時間和占用空間做定量的分析,一般計算出相應(yīng)的數(shù)量級,常用時間復(fù)雜度和空間復(fù)雜度表示。分析算法的目的就是要降低算法的時間復(fù)雜度和空間復(fù)雜度;提高算法的執(zhí)行效。率。

66.B

\n第一個循環(huán)的作用是把從0~9的數(shù)賦

\n給a數(shù)組;第二個循環(huán)的作用是把a數(shù)組中的部分元素放到數(shù)組P中,即p[0]=a[0]=0,p[1]=a[2]=2,p[2]=a[6]=6;第三個循環(huán)的作用是把P中的各個元素的兩倍之和放到k中,即k=5+0+4+12=21。

\n

67.B本題考查C語言中的求余數(shù)運算。

題目給出的程序首先通過scanf函數(shù)向整型變量a、b輸入值7、3。程序最后的結(jié)果為輸出k的值。if語句中的判別條件為a>b,若該條件成立,則令k等于a整除b后的余數(shù),7整除3后所得到的余數(shù)為1。如果判別條件不成立,則令k等于b整除a后的余數(shù),3整除7后所得到的余數(shù)為3。顯然,判別條件是不成立的,故輸出結(jié)果為3。

68.A本題考查結(jié)構(gòu)體變量的定義。按題目給出的定義編譯時會出現(xiàn)以下錯誤:“Toomanytypeindeclarationinfunctonmain”,這是因為右花括號后面缺少了一個分號。

69.A

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

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

71.Dif中的語句組包含兩條語句,但是沒有花括號,所以編譯有錯。如果這個時候沒有else,就理解成語句組只有一條語句,編譯將是正確的。

72.D

73.A

74.B花括號可以作為函數(shù)體的定界符,也可以作為復(fù)合語句的定界符。函數(shù)是c程序的基本單位,用戶可以命名自定義函數(shù),而庫函數(shù)名是固定的。c語句以分號結(jié)尾,分號是語句的一部分。

75.C

76.D軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,測試要以查找錯誤為中心,而不是為了演示軟件的正確功能,也不是為了評估軟件或改正錯誤,因此本題答案為D)。

77.B

78.C算法具有的5個特性是:有窮性、確定性、可行性、有0個或多個輸入、有一個或多個輸出。所以說,用C程序?qū)崿F(xiàn)的算法可以沒有輸入,但必須要有輸出。因此本題答案選C。

79.A函數(shù)的功能是將a,b的值增1后將較大的值返回。因此fun(x,y++)=10,fun(10,12)=13,所以r=13.

80.B表達式x-=x+X可以寫成x=x-(x+x),所以X的值為-l0。81.

(1)if((tt[i]>=’a’)&&(tt[i]<=‘z’))

(2)tt[i]一=32;

【考點分析】

本題考查:if語句條件表達式;小寫字母轉(zhuǎn)大寫字母的方法。

【解題思路】

(1)分析本題可知,要判斷字符是否為小寫字母,即判斷其是否在a—z之間,所以這里需要進行連續(xù)的比較,用&&。(2)從ASCIl碼表中可以看出,小寫字母的ASCIl碼值比對應(yīng)大寫字母的ASCIl值大32。將字符串中的小寫字母改為大寫字母的方法是:從字符串第一個字符開始,根據(jù)ASCIl碼值判斷該字母是不是小寫字母,若是,則ASCIl碼值減32即可。

82.

【解析】要求出二維數(shù)組中最大元素的值,需要比較二維數(shù)組中每一個元素的值。首先,定義變量max用來存放最大元素的值,將其初始化為二維數(shù)組中第一個元素的值。然后將其與后面的每一個元素進行比較,將二維數(shù)組中最大元素的值放到變量max當中,并將其返回給主函數(shù)。

2022年安徽省巢湖市全國計算機等級考試C語言程序設(shè)計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.最小堆[0,3,2,5,7,4,6,8],在刪除堆頂元素0之后,其結(jié)果是()

A.[3,2,5,7,4,6,8]

B.[2,3,5,7,4,6,8]

C.[2,3,4,5,7,8,6]

D.[2,3,4,5,6,7,8]

2.

3.A.A.75310246B.01234567C.76310462D.13570246

4.設(shè)有定義“struct{charmark[12];intnum1;doublenum2;}t1,t2;”,若變量均已正確賦初值,則下列語句中錯誤的是()。

A.t1=t2;

B.t2.num1=t1.num1;

C.t2.mark=t1.mark;

D.t2.num2=t1.num2;

5.

6.現(xiàn)有二叉搜索樹(BST)前序遍歷結(jié)果序列為abdefgc,中序遍歷結(jié)果序列為debgfac,請問后序遍歷結(jié)果序列為()

A.debgfaCB.edgfbcAC.edgbfcAD.degbfaC

7.有以下函數(shù):fun(char*p){returnp;}該函數(shù)的返回值是()。

A.無確切值B.形參p中存放的地址值C.一個臨時存儲單元的地址D.形參p自身的地址值

8.當用戶要求輸入的字符串中含有空格時,應(yīng)使用的輸入函數(shù)是()。

A.scanfB.getcharC.getsD.getc

9.以下關(guān)于C語言數(shù)據(jù)類型使用的敘述中錯誤的是A.若要準確無誤差的表示自然數(shù),應(yīng)使用整數(shù)類型

B.若要保存帶有多位小數(shù)的數(shù)據(jù),應(yīng)使用雙精度類型

C.若要處理如“人員信息”等含有不同類型的相關(guān)數(shù)據(jù),應(yīng)自定義結(jié)構(gòu)體類型

D.若只處理“真”和“假”兩種邏輯值,應(yīng)使用邏輯類型

10.下面程序的運行結(jié)果是

#include<stdio.h>

main()

{inta=28,b;

chars[10],*p;

p=s;

do{b=a%16;

if(b<10)*p=b+48;

else*p=b+55;

p++;a=a/5;}while(a>0);

*p=′\0′;puts(s);}

A.10B.C2C.C51D.\0

11.線處應(yīng)填入().A.b[i++]B.b[i]++C.b[i+=2]D.b[i]+=2

12.有以下程序:#include<stdi0.h>#include<string.h>structA{inta;charb[10];doubleC;);voidf(structAt);main(){structAa={"1001,"ZhangDa",l098,0};f(a);printf("%d,%S,%6.1f\n",a.a(chǎn),a.b,a.c);}voidf(structAt){t.a(chǎn)=1002;strcpy(t.b,"ChangRon9");t.c=1202.0;}程序運行后的輸出結(jié)果是()。A.1001,ZhangDa,1098.0

B.1002,ChangRong,1202.0

C.1001,ChangRong,1098.0

D.1002,ZhangDa,1202.0

13.第

24

下面程序段的運行結(jié)果是

char*p="abcdefgh";

p+=3;

printf("%d\n",strlen(strcpy(p,"ABCD")));

A.8B.12C.4D.7

14.下列關(guān)于棧的描述中錯誤的是()。A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

15.有以下程序:

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

A.02B.13C.57D.12

16.以下說法錯誤的是()。

A.C語言中的常量是指在程序運行過程中經(jīng)常被用到的變量

B.C語言中的常量是指在程序運行過程中其值不能被改變的量

C.C語言中的常量可以用一個符號名來代表

D.C語言中的常量可以用宏來定義

17.以下關(guān)于注釋的敘述中錯誤的是()。

A.注釋的邊界符號“/”和“*”之間不允許加入空格

B.C語言允許注釋出現(xiàn)在程序中任意合適的地方

C.注釋的內(nèi)容僅用于閱讀,對程序的運行不起作用

D.注釋的邊界符號“/*”和“*/”必須成對出現(xiàn)且可以嵌套

18.

19.同一個關(guān)系模型的任意兩個元組值()。

A.可以全相同B.不能全相同C.必須全相同D.以上都不對

20.有以下程序:

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

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

二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

#deftneJFT(x)x*x

main()

{inta,k=3;

a=++JFT(k+1);

printf("%d",a);

}

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

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

23.以下程序運行后的輸出結(jié)果是()。#definePower2(x)x*xmain(){inti=6,j=8;printf("%d\n",Power2(i+j));}

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

main()

{inta=1,b=3,c=5;

if(c=a+b)printf("yes\n");

elseprintf("no\n");

}

25.以下程序中,函數(shù)SumColumMin的功能是:求出M行N列二維數(shù)組每列元素中的最小值,并計算它們的和值。和值通過形參傳回主函數(shù)輸出。請?zhí)羁铡?/p>

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

{inti,j,k,s=0;

for(i=0:i<N;i++)

{k=0:

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

if(a[k][i]>a[j][i]k=j;

s+=______;

}

______=s:

}

main()

{intx[M][N]={3,2,5,1,4,1,8.3},s;

sumColumMin(______)

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

}

26.關(guān)系模型的數(shù)據(jù)操作即是建立在關(guān)系上的數(shù)據(jù)操作,一般有【】、增加、刪除和修改四種操作。

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

main()

{inti,sum;

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

sum+=i;

printf("%d",sum);

}

28.已知a=1,b=2,則表達式(a&B)&b||b的結(jié)果為()。

29.若a=10,b=20,則表達式!(a<b)的值是【】。

30.在面向?qū)ο蟮姆椒ㄖ?,______描述的是具有相似屬性與操作的一組對象。

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

intx=0,y=0;

while(x<15)y++,x+=++y;

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

32.本程序用改進冒泡法對數(shù)組a[n]的元素從小到大排序,請在程序空白處填空。

voidbubble(inta[],intn)

{intj,k,jmax,temp;

jmax=【】;

do{

k=0;

for(j=0;j<jmax;j++)

if(a[j]>a[j+1])

{temp=a[j];a[j]=a[j+1];a[j+1]=temp;k=【】;

jmax=k;

}while(jmax>0);}

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

1

11

121

1331

14641

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

(1)第0列元素和主對角線元素均為1

(2)其余元素為其左卜方和正上方元素之和

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

請將程序補充完整。

#defineN6

voidyanghui(intx[N][N])

{inti,j;

x[0][0]=1;

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

{x[i][0]=______=1;

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

x[i][j]=______;

}

}

34.若x為int類型,請寫出與!x等價的C語言表達式______。

35.在程序設(shè)計階段應(yīng)該采取【】和逐步求精的方法,把一個模塊的功能逐步分解,細化為一系列具體的步驟,進而用某種程序設(shè)計語言寫成程序。

36.以下程序運行時若從鍵盤輸入:102030<回車>。輸出結(jié)果是【】。

#include<stdio.h>

main()

{

inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);

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

}

37.Jackson方法是一種面向【】的結(jié)構(gòu)化方法。

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

structNODE

{intk;

structNODE*link;

};

main()

{structNODEm[5],*p=m,*p=m,*q=m+4;

inti=0;

while(p!=q)

{p->k=++i;p++

q->k=i++;q--;

}

q->k=i;

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

printf("%d",m[i].k);

ptintf("\n");

}

39.軟件是程序、數(shù)據(jù)和【】的集合。

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

#include<stdio.h>

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++)

printf("%d%d",X--,y);

}

三、1.選擇題(20題)41.設(shè)p1和p2是指向一個血型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語句是

A.k=*p1+*p2B.p2=k;C.p1=p2;D.k=*p1*(*p2);

42.下列程序段中,不能正確賦值的是

A.char*p,ch;p=&ch;scanf("%c,&p")

B.char*p;p=(char*)malloc(1)scanf("%c",p);

C.char*p*p=getchar();

D.char*p,ch;p=&ch;*p=getchar();

43.下列選項中不是字符常量的是()。

A.'\v'B.'\x2a'C.'a'D."\0"

44.判斷字符串s1是否大于字符串s2,應(yīng)該使用()。

A.if(strcmp(s1,s2)<0)

B.if(s1>s2)

C.if(strcmp(s2,s1)<0)

D.if(strcmp(s1,s2))

45.設(shè)樹T的度為4,其中度為1,2,3,4的結(jié)點個數(shù)分別為4,2,1,1,則T中的葉子結(jié)點數(shù)為()。

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

46.交換兩個變量的值,不允許用臨時變量,應(yīng)該使用下列()位運算符。A.A.&B.^C.||D.~

47.有以下程序:#include<stdio.h>voidfun(char*c,intD){*c=*c+1;d+=1;printf("%c,%c",*c,D;}main(){chara='F',b='f';fun(&b,A);printf("%c,%c\n",a,B);}程序的輸出結(jié)果為()。

A.g,GF,gB.g,FF,gC.G,fF,GD.f,gf,g

48.字符(char)型數(shù)據(jù)在微內(nèi)存中的存儲形式是______。

A.反碼B.補碼C.EBCDIC碼D.ASCII碼

49.設(shè)樹T的度為4,其中度為1、2、3、4的結(jié)點的個數(shù)分別為4、2、1、1,則T中的葉點為______。

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

50.軟件開發(fā)模型包括Ⅰ、瀑布模型Ⅱ、扇形模型Ⅲ、快速原型法模型Ⅳ、螺旋模型

A.Ⅰ、Ⅱ、ⅢB.Ⅰ、Ⅱ、ⅣC.Ⅰ、Ⅲ、ⅣD.Ⅱ、Ⅲ、Ⅳ

51.有下列程序段:structSt{intx;int*y;)*pt;inta[]={1,2),b[]={3,4);structstc[2]={10,a,20,b);pt=c;下列選項中表達式的值為11的是()。

A.*pt->yB.pt->xC.++pt->xD.(pt++)->x

52.下列選項中,不屬于模塊間耦合的是()。A.數(shù)據(jù)耦合B.標記耦合C.異構(gòu)耦合D.公共耦合

53.若要求定義具有10個血型元素的一維數(shù)組a,則以下定義語句中錯誤的是()。

A.#definmeN10inta[N];

B.#definen5inta[2*n];

C.inta[5+5];

D.intn=10,a[n];

54.模塊本身的內(nèi)聚是模塊獨立性的重要性度量因素之—。在7類內(nèi)聚中,具有最強內(nèi)聚的—類是______。

A.順序性內(nèi)聚B.過程性內(nèi)聚C.邏輯性內(nèi)聚D.功能性內(nèi)聚

55.已知一個文件中存放若干工人檔案記錄,其數(shù)據(jù)結(jié)構(gòu)如下:structa{charnumber[100];intage;floatp[6];};定義一個數(shù)組:structanumber[10];假定文件已正確打開,不能正確地從文件中讀入10名工人數(shù)據(jù)到數(shù)組b中的是()。

A.fread(b,sizeof(structA),10,fp);

B.for(i=0;i<10;i++)fread(b[i],sizeof(structA),1,fp);

C.for(i=0;i<10;i++)fread(b+i,sizeof(structA),1,fp);

D.for(i=0;i<5;i+=2)fread(b+i,sezeof(structA),2,fp);

56.運行以下程序后,如果從鍵盤上輸入china#<回車>,貝愉出結(jié)果為_______。#include<stdio.h>main(){intv1=0,v2=O;charch;while((ch=getchar())!='#')switch(ch){case'a':case'h':default:v1++;case'O':v2++;}printf("%d,%d\n",v1,v2);}

A.2,0B.5,0C.5,5D.2,5

57.若有說明inta[][3]={1,2,3,4,5,6,7,8,9},則a數(shù)組第一維的大小是()。

A.2B.3C.4D.無確定值

58.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inta[2][3]={{1,2,3},{4,5,6}},(*p)[3],i;p=a;for(i=0;i<3;i++){if(i<2)p[1][i]=p[1][i]-1;elsep[1][i]=1;}printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}

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

59.下列描述說明正確的是()

A.定義結(jié)構(gòu)體時,它的每個成員的數(shù)據(jù)類型可以不同

B.不同結(jié)構(gòu)體的成員名不能相同

C.結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型不能是結(jié)構(gòu)體本身

D.結(jié)構(gòu)體定義時各成員項之間可用分號也可用逗號隔開

60.已定義以下函數(shù):fun(Char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}函數(shù)的功能是()。

A.將p1所指字符串復(fù)制到p2所指內(nèi)存空間

B.將p1所指字符串的地址賦給指針p2

C.對p1和p2兩個指針所指字符串進行比較

D.檢查p1和p2兩個指針所指字符串中是否有'\0',

四、選擇題(20題)61.

62.閱讀下面程序,則執(zhí)行后的結(jié)果為

#include"stdio.h"

fun1()

{intk=20;

returnk;

}

fun2()

{inta=15;

returna;}

fun3(inta,intb)

{intk;

k=(a-b)*(a+b);

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

main()

{un3(fun1(),fun2());}

A.0B.184

C.175D.編譯不通過

63.

64.

65.算法分析的目的是()。

A.找出數(shù)據(jù)結(jié)構(gòu)的合理性B.找出算法中輸入和輸出之間的關(guān)系C.分析算法的易懂性和可靠性D.分析算法的效率以求改進

66.

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

main

{inti,k,a[10],p[3];

k=5;

for(i=0:i<10;i++)a[i]=i;

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

for(i=0;i<3;i++)k+=p[i]*2;

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

}

A.20B.21C.22D.23

67.有以下程序,若從鍵盤上輸入7和3

main()

{inta,b,k;

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

k=a;

if(a<b)k=a%b;

elsek=b%a;

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

}

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

A.7B.3

C.1D.0

68.若程序中有以下說明和定義。

structabc

{

intx;chary;

}

structabcs1,s2;

則會發(fā)生的情況是

A.編譯時出錯B.程序?qū)㈨樞蚓幾g、連接、執(zhí)行

C.能順序通過編譯、連接,但不能執(zhí)行D.能順序通過編譯,但連接出錯

69.在ASP.NET中采用CodeBehind代碼隱藏技術(shù)分離HTML顯示代碼和業(yè)務(wù)邏輯代碼,在PHP中采用的技術(shù)是()。

A.模板技術(shù)B.靜態(tài)緩存技術(shù)C.PHP引擎技術(shù)D.后臺編譯技術(shù)

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

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

71.有以下程序:

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

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

72.

73.

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

A.C程序中注釋部分只能放在程序最后

B.花括號“{“和”}”可以作為函數(shù)體的定界符,也可以作為復(fù)合語句的定界符

C.構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名

D.分號不是語句的一部分,是C語句之間的分隔符

75.

76.軟件測試的目的是()。

A.評估軟件可靠性B.發(fā)現(xiàn)并改正程序中的錯誤C.改正程序中的錯誤D.發(fā)現(xiàn)程序中的錯誤

77.

78.以下敘述中正確的是

A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作

B.用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要有輸入

C.用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出

D.用C程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出

79.有以下程序:

fun(inta,intb)

{a++;b++;

if(a>b)return(a);

elsereturn(b);

}

void

main()

{intx=3,y=8,z=6,r;

r=fun(fun(x,y++),2*z);

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

}

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

A.13B.6

C.8D.12

80.若有定義語句:“intx=10;”,則表達式x-=x+x的值為()。

A.-20B.-l0C.0D.10

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun的功能是:將tt所指字符串中的小寫字母全部改為對應(yīng)的大寫字母,其他字符不變。

例如,若輸入“Ab,cD”,則輸出“AB,CD”。

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

注意:部分源程序在文件MODIl.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

六、程序設(shè)計題(1題)82.請編寫一個函數(shù)proc(),它的功能是:求出一個4×N整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C

2.C

3.A本題的考點是C語言的數(shù)組及其排序。本題的程序中分為2個循環(huán)體,第一個循環(huán)體將數(shù)組中1,3,5,7,2,4,6,0的前4個元素從大到小排序,這個循環(huán)體結(jié)束后數(shù)組中的值為7,5,3,1,2,4,6,0。第二個循環(huán)體將數(shù)組中7,5,3,1,2,4,6,0從第5個開始的4個元素從小到大排序,這個循環(huán)體結(jié)束后數(shù)組中的值為7,5,3,1,0,2,4,6。所以正確答案是選項A。

4.Cmark為結(jié)構(gòu)體中的數(shù)組,不能直接賦值,所以C選項錯誤。故本題答案為C選項。

5.A

6.B

7.B解析:return中返回的是指針p的值,也就是形參p中存放的地址值。

8.C解析:C語言提供了許多輸入函數(shù),其中有:getchar(輸入字符)、scanf(格式輸入)和gets\u3000(輸入字符串)等。題目要求輸入的是字符串,所以可以排除getchar,而且要求輸入的字符串中包含空格,而scanf函數(shù)默認將輸入的空格字符作為分割符,所以空格不會被輸入,故可排除scanf。getc的作用是從文件中輸入一個字符,故也不可取。gets函數(shù)可以輸入一整行作為一個字符串,其中也包括空格字符,故應(yīng)該選擇C。

9.D解析:C語言中沒有邏輯類型,若只處理"真"或"假"兩種邏輯值,可以使用整型數(shù)"1"或"0"表示,故選D。

10.C解析:考查用字符指針處理字符串的方法。語句'p=s;'是使指針p指向字符數(shù)組s。*p則引用了p所指位置的數(shù)組元素。通過指針來引用一維數(shù)組元素。

11.D

12.A將結(jié)構(gòu)變量作為形參,通過函數(shù)間形參與實參相結(jié)合的方式將整個結(jié)構(gòu)傳遞給函數(shù),這種傳遞方式是值傳遞。在被調(diào)用函數(shù)中,對結(jié)構(gòu)形參變量值進行的任何修改都不會影啊到調(diào)凋函數(shù)中的結(jié)構(gòu)變量。

13.C在本題中,程序段首先定義了字符型指針變量p,并使其指向一個字符串,然后將指針變量p加3,即使其指向字符串的第四個元素。然后執(zhí)行輸出語句,通過輸出語句的輸出格式我們可以知道,最后輸出的是一個十進制數(shù)的整型數(shù)值,其輸出列表為strlen(strcpy(P,″ABCD″))。這就要求我們了解strlen函數(shù)和strcpy函數(shù)的作用。

strcpy的調(diào)用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串復(fù)制到目的地址中,這種復(fù)制將覆蓋原來的字符串。strcat函數(shù)的功能是將源地址的字符串復(fù)制到目的地址字符串的后面。

strlen的調(diào)用格式是:strlen(字符串地址),其功能是返回字符串中字符的個數(shù)。

那么程序中執(zhí)行strcpy(P,″ABCD″)后指針變量p所指向的字符串為“ABCD”,該字符串中字符的個數(shù)為4,那么執(zhí)行strlen后,程序最終輸出的結(jié)果是4。因此本題正確的答案是C。

14.B棧是限定只能在表的一端進行插入和刪除操作的線性表,入棧和出棧都是在棧頂進行,它們的操作特點是先進后出,因此具有記憶作用。??梢圆捎庙樞虼鎯Γ部梢圆捎面準酱鎯?。

15.D本題考查邏輯運算符的”短路”現(xiàn)象,由于k的值為0,表達式首先去求k++的

溫馨提示

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

評論

0/150

提交評論