2021-2022年河北省石家莊市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)_第1頁(yè)
2021-2022年河北省石家莊市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)_第2頁(yè)
2021-2022年河北省石家莊市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)_第3頁(yè)
2021-2022年河北省石家莊市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)_第4頁(yè)
2021-2022年河北省石家莊市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩113頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2021-2022年河北省石家莊市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.以下關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)的敘述中正確的是()。

A.結(jié)構(gòu)化程序使用goto語(yǔ)句會(huì)很便捷

B.在c語(yǔ)言中,程序的模塊化是利用函數(shù)實(shí)現(xiàn)的

C.一個(gè)結(jié)構(gòu)化程序必須同時(shí)由順序、分支、循環(huán)三種結(jié)構(gòu)組成

D.由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問(wèn)題

2.采用折半查找法查找長(zhǎng)度為n的線性表時(shí),每個(gè)元素的平均查找長(zhǎng)度為()。

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

3.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

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

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

4.下面哪個(gè)序列不是此圖的一個(gè)拓?fù)渑判?)A.ebfgadchB.aebdgfchC.adchebfgD.Aedbfgch

5.如下程序段

#include<stdio.h>

#include<ctype.h>

#include<conio.h>

intfun(char*str)

{inti,j=0;

for(i=0;str[i]!=’\0’;i++)

if(str[i]!=’’)str[j++]=str[i];

str[j]=’\0’;

}

main()

{

charstr[81];

intn;

clrscr();

printf("Inputastring:");

gets(str);

fun(str);

printf("%s\n",str);

}

當(dāng)運(yùn)行程序時(shí),輸入asdafaaz67<回車>,則輸出是A.A.asdafaaz67

B.asdafaaz67

C.asd

D.z67

6.有以下程序:main{inta=0,b=0;a=10;/*給a賦值b=20;給b賦值*/printf(“a+b=%d\n”,a+b);/*輸出計(jì)算機(jī)結(jié)果*/}程序運(yùn)行后的輸出結(jié)果是()。A.a+b=10B.a+b=30C.30D.出錯(cuò)

7.

8.在瀏覽WWW時(shí),如果連接到一個(gè)安全的站點(diǎn),應(yīng)當(dāng)以()開頭來(lái)書寫統(tǒng)一資源定位器。

A.shttp://B.http:s//C.http://D.https//

9.if語(yǔ)句基本形式是:if(表達(dá)式)語(yǔ)句,以下關(guān)于“表達(dá)式”值的敘述中正確的是()。

A.必須是邏輯值B.必須是整數(shù)值C.必須是正數(shù)D.可以是任意合法的數(shù)值

10.

11.以下程序的輸出結(jié)果是()。main(){inta[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d\n",s);}A.18B.19C.20D.21

12.

13.

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

main

{inta,b,d=25;

a=d/10%9;

b=a&&(一1);

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

A.6,1B.2,1C.6,0D.2,0

14.

15.

16.在n個(gè)結(jié)點(diǎn)的順序表中,算法的時(shí)間復(fù)雜度是O(1)的操作是()。

A.訪問(wèn)第i個(gè)結(jié)點(diǎn)(1<=i<=n)和求第i個(gè)結(jié)點(diǎn)的直接前驅(qū)(2<=i<=n)

B.在第i個(gè)結(jié)點(diǎn)之后插入一個(gè)新結(jié)點(diǎn)(1<=i<=n)

C.刪除第i個(gè)結(jié)點(diǎn)(1<=i<=n)

D.將n個(gè)結(jié)點(diǎn)從小到大排序

17.以下敘述中錯(cuò)誤的是()。

A.使用三種基本結(jié)構(gòu)構(gòu)成的程序只能解決簡(jiǎn)單問(wèn)題

B.結(jié)構(gòu)化程序由順序、分支、循環(huán)三種基本結(jié)構(gòu)組成

C.C語(yǔ)言是-種結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言

D.結(jié)構(gòu)化程序設(shè)計(jì)提倡模塊化的設(shè)計(jì)方法

18.冒泡排序在最壞情況下的比較次數(shù)是()。

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

19.第

2

現(xiàn)有如下程序段

#include"stdio.h"

main()

{intk[30]={12,324,45,6,768,98,21,34,453,456};

intcount=0,i=0;

while(k[i])

{if(k[i]%2==0‖k[i]%5==0)count++;

i++;}

printf("%d,%d\n",count,i);}

則程序段的輸出結(jié)果為

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

20.有以下程序:Voidf(inta[],ihti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,i-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d",aa[i]);printf("\n");}執(zhí)行后輸出結(jié)果是

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

二、2.填空題(20題)21.有以下程序

intfa(intx){returnx*x;}

intfb(intx){retumx*x*x;}

intf(int(*fl)int(*12)(),intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2);printf("%d\n",i);}

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

22.下面程序把從終端讀入的10個(gè)整數(shù)以二進(jìn)制方式寫入一個(gè)名為bi.dat的新文件中。

#include<stdio.h>

FILE*fp;

main()

{inti,j;

if(fp=fopen(【】)==NULL)exit(0);

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

{scanf("%d",&j);

fwrite(&j,sizeof(int),1,【】;

}

fclose(fp);

}

23.設(shè)有以下定義和語(yǔ)句,則*(*(p+2)+1)的值為【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

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

main()

{intx,a=1,b=2,c=3,d=4;

x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;

pfintf("%d\n",x);

}

25.在循環(huán)中,continue語(yǔ)句與break語(yǔ)句的區(qū)別是:______語(yǔ)句只是結(jié)束本次循環(huán),然后進(jìn)行循環(huán)的條件判定。

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

#include<stdio.h>

main()

{intfun();fun();}

fun()

{staticinta[3]={0,1,2};

inti;

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

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

printf("\n");}

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

struetss

{intinfo;struetss*link;}x,y,z;

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

請(qǐng)寫出刪除結(jié)點(diǎn)y的賦值語(yǔ)句【】。

28.______是數(shù)據(jù)庫(kù)應(yīng)用的核心。

29.人員基本信息一般包括:身份證號(hào)、姓名、性別、年齡等。其中可以作為主關(guān)鍵字的是()。

30.表達(dá)式pow(2.8,sqrt(float(x)))值的數(shù)據(jù)類型為______型。

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

main()

{intm=011,n=11;

printf("%d%d\n",++m,n++);

}

32.若有定義floatb[15],*p=b;,且數(shù)組b的首地址為200H,則p+13所指向的數(shù)組元素的地址為______。

33.數(shù)據(jù)流圖的類型有【】和事務(wù)型。

34.數(shù)據(jù)庫(kù)管理系統(tǒng)是位于用戶與______之間的軟件系統(tǒng)。

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

main()

{charb[]="Helloyou";

b[5]=0;

printf("%s\n",b);

}

36.一個(gè)模塊直接調(diào)用的其他模塊的模塊個(gè)數(shù)稱為______。

37.請(qǐng)?jiān)谝韵鲁绦虻谝恍械南聞澗€處填寫適當(dāng)內(nèi)容,使程序能正常運(yùn)行。

#include<stdio.h>

【】(double,double);

main()

{doublex,y;

scanf("%If%If",&x,&y);

printf("%If\n",max(x,y));

}

doublemax(doublea,doubleb)

{return(a>b?a:b);}

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

main()

{intx=0;

sub(&x,8,1);

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

}

sub(int*a,intn,intk)

{if(k<=n)sub(a,n/2,2*k);

*a+=k;

}

39.閱讀下面語(yǔ)句,則執(zhí)行后的輸出結(jié)果為【】。

#include"stdio.h"

main()

{chara,b;

for(a='0',b='9';a<b;a++,b--)

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

printf("\n");}

40.用以下程序把從鍵盤輸入的字符存放到一個(gè)文件中,用字符#作為結(jié)束符,請(qǐng)按題意要求填空完善程序。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenameoffile\n");

gets(fname);

if(fp=fopen(【】))==NULL)

{printf("can'topen\n");

【】;

}

while((ch=getchar())!='#')

fputc(【】);

fclose(fp);

}

三、1.選擇題(20題)41.在計(jì)算面中,算法是指______。

A.查詢方法B.加工方祛C.解題方案的準(zhǔn)確而完整的描述D.排序方法

42.在調(diào)用函數(shù)時(shí),如果實(shí)參是簡(jiǎn)單變量,它與對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式是______。

A.地址傳遞B.單向值傳遞C.由實(shí)參傳遞給形參,再由形參傳遞給實(shí)參D.傳遞方式由用戶指定

43.請(qǐng)選出以下程序的輸出結(jié)果

#include<stdio.h>

main()

{inta[]={1,2,3,4},i;

intx=0;

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

{sub(a,x);printf("%d",x);}

printf("\n");}

sub(s,y)

int*s,y;

{staticintt=3;

y=s[t];t--;}

A.1234B.4321C.0000D.4444

44.C語(yǔ)言結(jié)構(gòu)體類型變量在程序執(zhí)行期間,()。

A.所有成員一直駐留在內(nèi)存中B.沒有成員駐留在內(nèi)存中C.部分成員駐留在內(nèi)存中D.只有一個(gè)成員駐留在內(nèi)存中

45.有以下程序:voidfun(char*a,char*b){a=b;(*a)++;}main(){charcl='A',c2='a',*p1,*p2;p1=&c1;p2=&c2;fun(p1,p2);printf("%c,%c\n",c1,c2);}程序運(yùn)行后的輸出結(jié)果是()。

A.AbB.aaC.AaD.Bb

46.有以下程序:#include<stdio.h>main(){printf("%d\n",NULL);}程序運(yùn)行后的輸出結(jié)果是()。

A.0B.1C.-1D.NULL沒定義,出錯(cuò)

47.下列程序執(zhí)行輸出的結(jié)果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}

A.3B.4C.5D.6

48.若有下面的說(shuō)明和定義,則sizeof(structaa)的值是______。structaa{intrl;doubler2;floatr3;uninuu{charul[5];longu2[2]}ua;}mya;

A.30B.29C.24D.22

49.以下程序的功能是:建立一個(gè)帶布頭結(jié)點(diǎn)的單向鏈表,并將存儲(chǔ)在數(shù)組中的字符依次存儲(chǔ)到鏈表的各個(gè)結(jié)點(diǎn)中,請(qǐng)從與下劃線處號(hào)碼對(duì)應(yīng)的一組選項(xiàng)中選擇出正確的選項(xiàng)

#include<stdlib.h>

structnode

{chardata;structnode*next;};

(48)CreatList(char*s),

{structnode*h,*p,*q;

h=(structnode*)malloc(sizeof(structnode));

p=q=h;

while(*s!="\0")

{p=(structnode*)malloc(sizeof(structnode));

p->data=(49);

q->next=p;

q=(50);

s++;

}

p->next="\0";

returnh;

}

main()

{charstr[]="linklist";

structnode*head;

head=CreatList(str);

}

(1)

A.char*B.structnodeC.structnode*D.char

50.若有如下程序:intm=1;main(){intt=0,s=0;{intm=4;s+=m;)t+=m;printf("%d,%d\n",s,t);}則程序運(yùn)行后的輸出結(jié)果是()。

A.1,1B.1,4C.4,1D.4,4

51.有程序:main(){intx,i;for(i=1;i<50;i++){x=i;if(++%2==0)if(x%3==0)if(x%7==0)printf("%d",i);}}輸出結(jié)果是()

A.28B.27C.42D.41

52.以下敘述中不正確的是

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

B.C語(yǔ)言中對(duì)二進(jìn)制文件的訪問(wèn)速度比文本文件快

C.C語(yǔ)言中,隨機(jī)讀寫方式不適用于文本文件

D.C語(yǔ)言中,順序讀寫方式不適用于二進(jìn)制文件

53.在下列選項(xiàng)中,不是一個(gè)算法一般應(yīng)該具有的基本特征的是()。

A.確定性B.可行性C.無(wú)窮性D.擁有足夠的情報(bào)

54.以下數(shù)組定義中不正確的是_______。

A.inta[2][3];

B.intb[][3]={0,1,2};

C.intc[100][100={0};

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

55.若ch為char型變量,k為int型變量(已知字符a的ASCII碼是97),則執(zhí)行下列語(yǔ)句后輸出的結(jié)果為()。

ch='b';

k=10;

printf("%x,%o,",ch,ch,k);

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

A.因變量類型與格式描述符的類型不匹配,輸出無(wú)定值

B.輸出項(xiàng)與格式描述符個(gè)數(shù)不符,輸出為0值或不定值

C.62,142,k=%d

D.62,142,k=%10

56.有以下程序#defineN20fun(inta[],intn,intm){inti,j;for(i=m;i>=n;i--)a[i+1]=a[i];}main(){inti,a[N]={1,2,3,4,5,6,7,8,9,10};fun(a,2,9);for(i=0;i<5;i++)printf("%d",a[i]);}程序運(yùn)行后的輸出結(jié)果是——。

A.10234B.12344C.12334D.12234

57.C語(yǔ)言可執(zhí)行程序的開始執(zhí)行點(diǎn)是()。

A.包含文件中的第一個(gè)函數(shù)B.程序中第一個(gè)函數(shù)C.程序中的main()函數(shù)D.程序中第一條語(yǔ)句

58.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結(jié)果是()。

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

59.以下程序的功能是:給r輸入數(shù)據(jù)后計(jì)算半徑為r的圓面積s。#include<stdio,h>main()/*Beginning*/{intr;floats;scanf("%d",&r);s=*Π*r*r;printf("s=%f\n",s);程序在編譯時(shí)出錯(cuò),出錯(cuò)的原因是()。

A.注釋語(yǔ)句書寫位置錯(cuò)誤

B.存放圓半徑的變量r不應(yīng)該定義為整型

C.輸出語(yǔ)句中格式描述符非法

D.計(jì)算圓面積的賦值語(yǔ)句中使用了非法變量

60.在一棵二叉樹上第8層的結(jié)點(diǎn)數(shù)最多是_______。

A.8B.16C.128D.256

四、選擇題(20題)61.

62.

63.有以下程序段

#include"stdio.h"

main()

{intj,i,k=0;

for(j=50;j<=60;j++)

{if(!(k%10))printf("\n");

for(i=2;i<j;i++)if(!(j%i))

break;

if(i>=j-1)

{printf("%d",j);

k++;}

}

}

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

A.5359B.5953

C.3595D.9535

64.有以下程序:

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

A.3B.4C.lD.9

65.

66.下列排序方法中,最壞情況下比較次數(shù)最少的是()。

A.冒泡排序B.簡(jiǎn)單選擇排序C.直接插入排序D.堆排序

67.以下關(guān)于typedef的敘述錯(cuò)誤的是()。

A.用typedef可以增加新類型

B.typedef只是將已存在的類型用一個(gè)新的名字來(lái)代替

C.用typedef可以為各種類型說(shuō)明一個(gè)新名,但不能用來(lái)為變量說(shuō)明一個(gè)新名

D.用typedef為類型說(shuō)明一個(gè)新名,通??梢栽黾映绦虻目勺x性

68.

69.表達(dá)式:的值是()。

A.3B.0C.4D.5

70.

71.

設(shè)有以下定義和語(yǔ)句:

charstr[2O]="Program",*P:

p=str:

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

A.*p與stf[0]的值相等

B.str與P的類型完全相同

C.str數(shù)組長(zhǎng)度和P所指向的字符串長(zhǎng)度相等

D.數(shù)組str中存放的內(nèi)容和指針變量P中存放的內(nèi)容相同

72.

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

B.doublemyadd(double,double);

C.doublemyadd(doubleb,doublea);

D.doublemyadd(doublex,doubley);

74.

75.

76.

77.程序中已構(gòu)成如下圖所示的不帶頭結(jié)點(diǎn)的單向鏈表結(jié)構(gòu),指針變量s、p、q均已正確定義,并用于指向鏈表結(jié)點(diǎn),指針變量s總是作為指針指向鏈表的第一個(gè)結(jié)點(diǎn)。

若有以下程序段:

該程序段實(shí)現(xiàn)的功能是()。

A.刪除尾結(jié)點(diǎn)B.尾結(jié)點(diǎn)成為首結(jié)點(diǎn)C.刪除首結(jié)點(diǎn)D.首結(jié)點(diǎn)成為尾結(jié)點(diǎn)

78.若文件指針fp已正確指向文件,ch為字符型變量,以下不能把字符輸出到文件中的語(yǔ)句是()。

A.fget(f0,ch);

B.foutc(ch,fo);

C.fprinff(fp,”%c”,ch);

D.fwrite(&ch,sizeof(ch),1,fp);

79.有以下程序:

80.下列選項(xiàng)中,能夠滿足“若字符串sl等于字符串s2,則執(zhí)行ST”要求的是()。

A.if(stremp(s2,s1)==0)ST;

B.if(s1==s2)ST;

C.if(strcpy(sl,s2)==l)ST;

D.if(sl,s2==O)ST;

五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc的功能是計(jì)算正整數(shù)m

各位上數(shù)字的平方和。例如,輸入498,則輸出應(yīng)該是161。請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>longproc(10ngm){//****found****longsum=1;do{sum+=(m%10)*(m%10);m/=l0;//****found****}while(m)return(sum);}voidmain{longn;system("CLS");printf("Pleaseenteranumber:");scanf("%1d",&n);printf("\n%ld\n",proc(n));}

六、程序設(shè)計(jì)題(1題)82.規(guī)定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun,其功能是:除了字符串前導(dǎo)的。號(hào)之外,將串中其他*號(hào)全部刪除。在編寫函數(shù)時(shí).不得使用C語(yǔ)言提供的字符串函數(shù).

參考答案

1.B濫用90t0語(yǔ)句將使程序的流程毫無(wú)規(guī)律,可讀性差,對(duì)于初學(xué)者來(lái)說(shuō)盡量不要使用,所以A錯(cuò)誤。—個(gè)結(jié)構(gòu)化程序可以包含順序、分支、循環(huán)結(jié)構(gòu)中的一種或多種,所以C錯(cuò)誤。由三種基本結(jié)構(gòu)構(gòu)成的程序可以解決任何復(fù)雜的問(wèn)題,所以D錯(cuò)誤。

2.D

3.Cf函數(shù)的功能是對(duì)形參a的各個(gè)成員用結(jié)構(gòu)體變量b的各個(gè)成員進(jìn)行賦值后,然后返回變量a。

4.C

5.A在本題中,程序首先定義一個(gè)返回類型為整型的函數(shù)fun,該函數(shù)帶有一個(gè)指針型的形參變量str,從主函數(shù)中對(duì)其調(diào)用時(shí)傳遞的參數(shù)我們可以知道,該指針指向的是一個(gè)數(shù)組,在該函數(shù)體中,首先定義兩個(gè)整型變量,然后執(zhí)行循環(huán),循環(huán)變量i的初始值為0,循環(huán)結(jié)束的條件是str[i]!=’\\0’,表示取到的數(shù)組元素是字符串結(jié)束標(biāo)識(shí),即字符串中的字符被處理完,在循環(huán)體中,首先執(zhí)行條件判斷語(yǔ)句if(str[i]!=’’),如果結(jié)果為真,說(shuō)明取到的當(dāng)前字符不是空字符,這時(shí)執(zhí)行str[j++]=str[i],即將非空格字符保存到數(shù)組中;如果為假,說(shuō)明取到了空格字符,此時(shí)不保存,而接著執(zhí)行下次循環(huán)跳過(guò)空格字符。循環(huán)結(jié)束后執(zhí)行str[j]=’\\0’;,即保存字符結(jié)束標(biāo)識(shí)符,用來(lái)標(biāo)識(shí)字符串結(jié)束。通過(guò)上面的這些分析,我們可以知道函數(shù)fun的作用是去掉字符數(shù)組中的空格字符。

在主函數(shù)中,首先定義了一個(gè)大小為81的字符數(shù)組,然后調(diào)用函數(shù)clrscr()清除輸入文本窗口,接著輸出一條提示語(yǔ)句,執(zhí)行g(shù)ets(str);語(yǔ)句,該語(yǔ)句的作用是從鍵盤輸入一個(gè)字符串到str數(shù)組,碰到換行符結(jié)束。然后調(diào)用函數(shù)fun,其實(shí)參為str。通過(guò)上面對(duì)函數(shù)fun作用的分析我們可以知道,調(diào)用函數(shù)后輸入字符串中的空格符都被刪除了,最后得到的字符串為asdafaaz67。

程序最后執(zhí)行輸出語(yǔ)句,輸出字符數(shù)組str中的字符串,因此,程序最終的輸出結(jié)果是asdafaaz67,本題答案選A。

6.AC語(yǔ)言規(guī)定,注釋語(yǔ)句可以換行寫,并且一個(gè)“/*”和其后緊跟的第一個(gè)“*/”中間的部分是注釋內(nèi)容,并且注釋部分的內(nèi)容不參與程序的執(zhí)行,因此本題中沒有執(zhí)行“b=20”;這條語(yǔ)句。

7.A

8.C

9.D考查if循環(huán)語(yǔ)句。if(表達(dá)式),其中表達(dá)式是一個(gè)條件,條件中可以是任意的合法的數(shù)值。

10.A

11.A循環(huán)的作用是求行下標(biāo)從l到2列下標(biāo)從0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][o]+a[2][1]+a[2][2]=3+4+5+6+0一18。

12.C

13.B

\n當(dāng)邏輯運(yùn)算符“&&”兩邊的值是非零時(shí),邏輯表達(dá)式的值為真(即為1)。所以b=2&&(-1)=1,2%9=2,故a=2,故先算a/10=25/10=2。

\n

14.C

15.A

16.A

17.A使用順序,選擇(分支),循環(huán)三種基本結(jié)構(gòu)構(gòu)成的程序可以解決所有問(wèn)題,而不只是解決簡(jiǎn)單問(wèn)題,所以A錯(cuò)誤。

18.C冒泡排序的基本思想是:將相鄰的兩個(gè)元素進(jìn)行比較,如果反序,則交換;對(duì)于一個(gè)待排序的序列,經(jīng)一趟排序后,最大值的元素移動(dòng)到最后的位置,其他值較大的元素也向最終位置移動(dòng),此過(guò)程稱為一趟冒泡。對(duì)于有n個(gè)數(shù)據(jù)的序列,共需n-1趟排序,第i趟對(duì)從l到n-i個(gè)數(shù)據(jù)進(jìn)行比較、交換。冒泡排序的最壞情況是待排序序列逆序,第l趟比較n-1次,第2趟比較n-2次。依此類推,最后趟比較1次,一共進(jìn)行n-l趟排序。因此,冒泡排序在最壞情況下的比較次數(shù)是(n-1)+(n-2)+…+l,結(jié)果為n(n-1)/2。本題的正確答案是選項(xiàng)C。

19.D

20.A解析:在C語(yǔ)言中所謂函數(shù)的遞歸是在指在調(diào)用一個(gè)函數(shù)的過(guò)程中,又出現(xiàn)了直接或間接地調(diào)用該函數(shù)本身,直接調(diào)用該函數(shù)本身的稱為函數(shù)遞歸,而間接調(diào)用該函數(shù)稱為函數(shù)的間接遞歸調(diào)用.由程序可以看出函數(shù)f(a,i,j)為一遞歸函數(shù),其功能是i

21.44解析:在主函數(shù)中調(diào)用函數(shù)f,函數(shù)f有三個(gè)參數(shù),形參n與C分別是兩個(gè)指向函數(shù)的指針。在f中執(zhí)行nf2(x),實(shí)際上是執(zhí)行了fo(2)-fa(2),故執(zhí)行i=(fa,fb,2)后i的值為2^3-2^2=4。

22."bi.dat"fp'bi.dat'\r\nfp解析:打開文件函數(shù)fopen的參數(shù)是文件名,因此有fopen('bi.dat');而寫文件的參數(shù)是文件指針,因此有fwrite(&j,sizeof(int),1,fp);

23.6060解析:程序中定義a是一個(gè)3行2列的二維數(shù)組,p是指向兩個(gè)元素的一維數(shù)組指針,并讓p指向二維數(shù)組a的首行。則代碼*(*(p+2)+1)中的p+2指向二維數(shù)組a的第三行a[2],*(p+2)指向a[2[]0],*(p+2)+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60。

24.因?yàn)樵跅l件表達(dá)式(a<b)?a:b中,比較表達(dá)式a<b為真,所以x的值等于a的值等于1,后面兩個(gè)條件表達(dá)式中的比較表達(dá)式都為真,所以最終x的值等于1。\r\n\r\n

25.continuecontinue解析:continue語(yǔ)句只是結(jié)束本次循環(huán),然后進(jìn)行循環(huán)的條件判定。break語(yǔ)句是終止整個(gè)循環(huán)的執(zhí)行,不再進(jìn)行條件判定。

26.0240480,2,4\r\n0,4,8解析:本題主要考查了for循環(huán)語(yǔ)句的使用以及靜態(tài)局部變量的特點(diǎn)。

27.x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;解析:鏈表中結(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)z的地址賦給x的指針域就可以了,即讓結(jié)點(diǎn)x的指針域指向結(jié)點(diǎn)z。而結(jié)點(diǎn)z的地址保存在結(jié)點(diǎn)y的指針域中,因此只需把結(jié)點(diǎn)y的指針域賦值給結(jié)點(diǎn)x的指針域即可。

28.數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)

29.身份證號(hào)身份證號(hào)解析:主關(guān)鍵字是表中區(qū)別不同記錄的標(biāo)識(shí),在該表中只有身份證號(hào)能具有這個(gè)作用,所以用其作為主關(guān)鍵字。

30.floatfloat解析:在此表達(dá)式中x是float類型的變量,經(jīng)過(guò)開方所得到的結(jié)果仍是float類型,再和2.8進(jìn)行運(yùn)算時(shí),應(yīng)該先將2.8轉(zhuǎn)換成float類型再運(yùn)算,最后結(jié)果仍是float型。

31.10111011解析:前綴自增運(yùn)算時(shí),表達(dá)式的值和變量自增之后的值相同;后綴自增運(yùn)算時(shí),表達(dá)式的值為變量自增之前的值。所以,本題程序輸出的兩個(gè)結(jié)果分別是m+1和n的值。而m在初始化時(shí)使用的是八進(jìn)制常量011,轉(zhuǎn)換為十進(jìn)制為9。故輸出結(jié)果是1011。

32.252H252H解析:要解答本題,首先要明白在對(duì)指針進(jìn)行加,減運(yùn)算時(shí),數(shù)字“1”不是十進(jìn)制數(shù)的“1”,而是指“1”個(gè)存儲(chǔ)單元長(zhǎng)度。1個(gè)存儲(chǔ)單元長(zhǎng)度占存儲(chǔ)空間的多少,應(yīng)該視具體情況而定,如果存儲(chǔ)單元的基類型是血型,則移動(dòng)1個(gè)存儲(chǔ)單元的長(zhǎng)度就是位移2個(gè)字節(jié);如果存儲(chǔ)單元基類型是float型,則移動(dòng)1個(gè)存儲(chǔ)單元的長(zhǎng)度就是位移4個(gè)字節(jié)。所以p+13所指向的數(shù)組元素的地址為:200H+(13*4)H=252H。

33.變換型典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。變換型是指信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過(guò)變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng);在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個(gè)或多個(gè)處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。

34.操作系統(tǒng)操作系統(tǒng)解析:數(shù)據(jù)庫(kù)管理系統(tǒng)是幫助用戶創(chuàng)建和管理數(shù)據(jù)庫(kù)的應(yīng)用程序的集合。因此,數(shù)據(jù)庫(kù)管理系統(tǒng)需要操作系統(tǒng)的支持,為用戶提供服務(wù)。

35.HelloHello解析:執(zhí)行b[5]=0;是給數(shù)組的第6個(gè)元素賦值為0,即將Hello后的空格變?yōu)?。當(dāng)輸出字符串時(shí)遇到0終止輸出。

36.扇出扇出解析:在結(jié)構(gòu)圖中,調(diào)用一個(gè)給定模塊的模塊個(gè)數(shù)稱為扇入,一個(gè)模塊直接調(diào)用的其他模塊個(gè)數(shù)稱為扇出。

37.doublemax或externdoublemaxdoublemax或externdoublemax解析:main函數(shù)中調(diào)用了一個(gè)max函數(shù),而max函數(shù)是在調(diào)用之后定義的,所以要求填空的內(nèi)容應(yīng)該是對(duì)函數(shù)進(jìn)行聲明的語(yǔ)句。由max函數(shù)的定義可知此函數(shù)是double型的,因此空格處應(yīng)該填doublemax或externdoublemax。

38.77解析:在主函數(shù)中定義了一個(gè)變量x并賦初值0,然后執(zhí)行函數(shù)調(diào)用語(yǔ)句,該語(yǔ)句的執(zhí)行過(guò)程為sub(&x,8,1)調(diào)用sub(&a,4,2),sub(&a,4,2)調(diào)用sub(&a,2,4),sub(&a,2,4)中由于2<4,所以if后面括號(hào)里的判斷為假,遞歸結(jié)束,執(zhí)行其后的*a+=k;語(yǔ)句此時(shí)x=x+k=0+4=4,回推到上一層調(diào)用函數(shù)sub(&x,4,2)中,執(zhí)行后面的語(yǔ)句,x=x+k=4+2=6,在回推到最上一層調(diào)用函數(shù)sub(&x,8,1)執(zhí)行后面的語(yǔ)句,x=x+k=6+1=7,所以最后輸出7。

39.918273645918273645解析:for是C語(yǔ)言的關(guān)鍵字,其后的一對(duì)圓括號(hào)中通常含有3個(gè)表達(dá)式,各個(gè)表達(dá)式之間用分號(hào)隔開,這3個(gè)表達(dá)式可以是任意形式的表達(dá)式,通常主要用于for循環(huán)控制。

40.fname"#"exit(0)chfp

41.C解析:計(jì)算機(jī)算法是指解題方案的準(zhǔn)確而完整的描述,它有以下幾個(gè)基本特征:可行性、確定性、有窮性和擁有足夠的情報(bào)。

42.B解析:C語(yǔ)言以定,實(shí)參變量對(duì)形參變量的數(shù)據(jù)傳遞是“單向值傳遞”,只由實(shí)參傳紿形參。在內(nèi)存中,實(shí)參單元與形參單元是不同的單元。調(diào)用結(jié)束后,實(shí)參單元仍保留并維持原值。

43.C解析:考查通過(guò)指針來(lái)引用一維數(shù)組元素的方法。若指針s指向數(shù)組a,則s[t]可以引用數(shù)組a中下標(biāo)為t的元素。

44.A解析:C語(yǔ)言結(jié)構(gòu)體類型變量在程序執(zhí)行期間所有成員一直駐留在內(nèi)存中。

45.A解析:經(jīng)過(guò)分析得知fun()函數(shù)的功能:將形參a指向形參b所指的存儲(chǔ)空間,然后使形參a指向變量的值加1。在主函數(shù)中定義了字符型指針變量p1和p2,并讓它們分別指向c1和c2。將p1、p2作為實(shí)參傳遞給形參a、b。在fun()函數(shù)中,首先讓指針變量p1指向p2,然后p1指向的存儲(chǔ)空間的值加1,即讓變量c2加1為b,而c1的值沒有被改變,仍然是A。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合題意。

46.A解析:在C語(yǔ)言中NULL的ASCII碼值為0,而輸出函數(shù)要求以整形格式輸出,故最后的輸出數(shù)為0。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合愿意。

47.B解析:本題考查函數(shù)調(diào)用時(shí)的參數(shù)傳遞。在函數(shù)調(diào)用時(shí),static變量在函數(shù)調(diào)用結(jié)束后所做的所有變化均保持(即上次調(diào)用結(jié)束時(shí)的值)。

在主函數(shù)中,第一次循環(huán),i=0,調(diào)用k-f(a++)=f(2),調(diào)用完之后才將a加1,a變?yōu)?,在f(2)中,先將c=3賦值給a返回,然后將c加1,得到k=a=3,c=4。

第二次循環(huán),i=1,調(diào)用k=f(a++)=f(3),調(diào)用完之后才將a加1,a變?yōu)?,在f(3)中,先將c=4賦值給a返回,然后將c加1,得到k=a=4,c=5。

48.D解析:結(jié)構(gòu)體變量所占內(nèi)存長(zhǎng)度是各成員占的內(nèi)存長(zhǎng)度之和,每個(gè)成員分別占有自己的內(nèi)存單元;共用體變量所占的內(nèi)存長(zhǎng)度等于最長(zhǎng)的成員的長(zhǎng)度。結(jié)構(gòu)體變量aa中,成員r1占2個(gè)字節(jié),r2占8個(gè)字節(jié),r3占4個(gè)字節(jié),共用體ua占8個(gè)字節(jié),所以共占用2+8+4+8=22個(gè)字節(jié)。

49.C

50.C解析:{intm=4;s+=m;}是復(fù)合語(yǔ)句,m=4,s+=m等價(jià)于s=s+m=0+4=4。t+=m等價(jià)于t=t+m,這里m為全局變量,值為1,t=t+m=O+1=1。

51.D

52.D解析:在C語(yǔ)言中文本文件是以ASCII碼形式存放的,每個(gè)字符占一個(gè)字節(jié)。由于數(shù)據(jù)在計(jì)算機(jī)中是以二進(jìn)制形式存放的,因此二進(jìn)制文件中的數(shù)據(jù)可以直接讀出,而不需要像文本文件那樣把ASCII碼轉(zhuǎn)換成二進(jìn)制,因此速度較快。在文本文件葉,,數(shù)據(jù)以ASCII碼形式存放,用戶很難判定一個(gè)數(shù)據(jù)到底占幾個(gè)字節(jié),所以不適合使用隨機(jī)讀寫方式。數(shù)據(jù)以二進(jìn)制形式存放,占有的字節(jié)數(shù)是固定的,所以可以進(jìn)行隨機(jī)讀寫,當(dāng)然也可以順序讀寫。故D選項(xiàng)為所選。

53.C解析:作為一個(gè)算法,一般應(yīng)具有的基本特征有:可行性、確定性、有窮性、擁有足夠的情報(bào)。

54.D解析:一維數(shù)組的定義方式為:

類型說(shuō)明符數(shù)組名[常量表達(dá)式];

選項(xiàng)A符合此定義形式,正確;C語(yǔ)言中多維數(shù)組賦初值時(shí)可以部分賦值,也可以不指定除第一維以外的其他維的大小,故選項(xiàng)C正確;另外,如果對(duì)全部數(shù)組元素都賦初值,則定義數(shù)組時(shí)對(duì)第一維的長(zhǎng)度可以不指定,但第二維的長(zhǎng)度不能省,所以選項(xiàng)B正確,而選項(xiàng)D是錯(cuò)誤的。

55.C解析:第1個(gè)printf函數(shù),格式說(shuō)明的個(gè)數(shù)是2,而輸出項(xiàng)的個(gè)數(shù)是3,所以對(duì)于多余的輸出項(xiàng)k不予輸出;第2個(gè)printf函數(shù),有兩個(gè)%說(shuō)明,第1個(gè)%后面的字符要原樣輸出。

56.C解析:由于用了宏定義a[10]~a[19]均為0。函數(shù)fun的功能是把從a[n]到a[m]中的元素依次賦給后面的一個(gè)元素。調(diào)用了fun(a,2,9)以后,a[N]={1,2,3,3,4,5,6,7,8,9,10}。

57.C解析:每個(gè)C程序有且只有一個(gè)主函數(shù)main(),且程序必須從main函數(shù)開始執(zhí)行,并在main()函數(shù)中結(jié)束。

58.AC語(yǔ)言規(guī)定case后面跟的必須是整型常量表達(dá)式。進(jìn)入case后,如果沒有遇到break語(yǔ)句就會(huì)一直往下執(zhí)行,后面其他case或default分支的語(yǔ)句也會(huì)被執(zhí)行到,直到遇到break,或者執(zhí)行到整個(gè)switch語(yǔ)句塊的末尾。題目中給出了三個(gè)case語(yǔ)句:case0、case1、case2。當(dāng)x為1時(shí),從case1語(yǔ)句開始執(zhí)行,因?yàn)闆]有break語(yǔ)句,將一直執(zhí)行到函數(shù)末尾結(jié)束,即執(zhí)行case1、case2兩條語(yǔ)句。執(zhí)行完case1時(shí),a=1,b=0;執(zhí)行完case2時(shí),a=2,b=1。

59.D解析:本題中表達(dá)式*Π*r*r非法,且未對(duì)變量Π做任何定義,所以編譯時(shí)會(huì)出現(xiàn)非法字符的錯(cuò)誤信息。

60.C解析:根據(jù)二叉樹的性質(zhì)1:二叉樹第k(k>1)層上,最多有2k-1個(gè)結(jié)點(diǎn)。于是第8層的結(jié)點(diǎn)數(shù)最多是27=128。

61.D

62.B

63.A在本題中,程序首先定義了三個(gè)整型變量,并將變量k賦值為0,然后開始循環(huán),循環(huán)開始時(shí)變量j的值為50,結(jié)束時(shí)變量j的值為60,每循環(huán)一次,變量j自加1,即循環(huán)10次。

當(dāng)j=50,k=0時(shí),“!(k%10)”為真,輸出換行,即循環(huán)開始時(shí),輸出從新的一行開始,執(zhí)行第二重循環(huán),此時(shí)的i=2,“!(j%i)”為真,運(yùn)行break語(yǔ)句,即跳出本層循環(huán)(從這里我們可以看出,j如果可以被i整除,則跳出本層循環(huán)),然后判斷i是否不小于j-1,如果是,則輸出此時(shí)j的值,否則k自加1。

從程序執(zhí)行的過(guò)程來(lái)看,這個(gè)題目確實(shí)非常復(fù)雜,循環(huán)的次數(shù)太多,但經(jīng)過(guò)對(duì)上面一次循環(huán)過(guò)程的分析,我們可以發(fā)現(xiàn),其實(shí)這個(gè)程序的作用是找出50~60之間除1和本身外,不能被其他小于本身的數(shù)據(jù)整除的數(shù),并從小到大輸出這樣的數(shù)。這樣就能很容易地得到答案是5359。因此本題的正確答案是A。

64.B每次內(nèi)循環(huán)只循環(huán)一次就結(jié)束,第一次外循環(huán)時(shí)t=t+b[0][b[0][0]]=1+b][0]=1+0=第二次外循環(huán)時(shí)t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第三次外循環(huán)時(shí)t=t+b[2][b[2][2]]=2+b[2][2]=2+2=4。

65.D

66.D冒泡排序、簡(jiǎn)單插入排序與簡(jiǎn)單選擇排序法在最壞情況下均需要比較n(n-1)/2次,而堆排序在最壞情況下需要比較的次數(shù)是nlog2n。故答案為D選項(xiàng)。

67.Atypedef并不是增加了新類型,面是用一個(gè)新名字替代已存在的類型,不能為變量說(shuō)明一個(gè)新名,使用typedef可以增強(qiáng)程序的可移植性。所以A選項(xiàng)錯(cuò)誤:

68.B

69.Aint)((double)9/2)值為4,9%2值為l,相減值為3。

70.C

71.A

\n本題中的str為一個(gè)字符型數(shù)組,P為字符型指針變量,其指向str的首地址,*P的值為strE03中的字符,其類型、長(zhǎng)度不同,但字符第一個(gè)相同,故答案選擇A。

\n

72.B

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

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

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

74.B

75.B

76.B

77.D本題考查鏈表的操作,本題中首先是s指向了它的下個(gè)結(jié)點(diǎn),題目中說(shuō)明了s總是指向鏈表的第一個(gè)結(jié)點(diǎn),然后while循環(huán)找到鏈表的最后一個(gè)元素,然后最后一個(gè)元素指向了之前鏈表的頭結(jié)點(diǎn),之前頭結(jié)點(diǎn)指向了空結(jié)點(diǎn),所以本題實(shí)現(xiàn)的功能是使首結(jié)點(diǎn)成為尾結(jié)點(diǎn)。選項(xiàng)D正確。

78.A函數(shù)fgete()從文件讀入一個(gè)字符到指定變量。函數(shù)fputc()將指定字符寫入審文件中,函數(shù)fprinff(),fwrite()均是寫入文件操作函數(shù)。因此選項(xiàng)B,c。D錯(cuò)誤。答案為A選項(xiàng)。

79.A#include<stdio.h>

intmain()

所以輸出為*#*#*#$和一個(gè)換行符*/,因此正確答案為A。

80.Astrcmp(char*,char*),函數(shù)strcmp用于比較兩個(gè)字符串的長(zhǎng)度,長(zhǎng)者為大,若字符個(gè)數(shù)也一樣,則從左至右依次比較相同位上的字符,字符大小按ASCIl表值計(jì)算,直到最后一個(gè)字符,若還相同,則兩個(gè)字符串相等,返回值0。選項(xiàng)A中if(strcmp(s2,sl)==0)ST,若s2等于sl,則返回值0,0等于0,所以邏輯表達(dá)式strcmp(s2,sl)==0為真,執(zhí)行ST。

81.\n\t(1)錯(cuò)誤:longsum=1;

\n正確:longsum=0;

\n(2)錯(cuò)誤:while(m)

\n正確:while(m);

\n【解析】由函數(shù)proc可知,變量sum中存放正整數(shù)m的各位上數(shù)字的平方和,其初始化為0。因此,“l(fā)ongsum=1;”應(yīng)改為“l(fā)ongsum=0;”。按照C語(yǔ)言的語(yǔ)法規(guī)則,語(yǔ)句都以分號(hào)結(jié)束,應(yīng)在do-while語(yǔ)句最后加上分號(hào)。因此,“while(m)”應(yīng)改為“while(m);”。\n

82.

程序設(shè)計(jì)題解析:

【考點(diǎn)分析】

本題考查:指針型變最定義;wh丑e循環(huán)語(yǔ)句;語(yǔ)句條件

表達(dá)式;字符串結(jié)束標(biāo)識(shí)‘\0’。

【解題思路】

函數(shù)fun的功能:除了字符串前導(dǎo)的*號(hào)之外,將串中其他+號(hào)全部刪除。

【解答本題】

(1)定義一個(gè)臨時(shí)指針P,初始指向原串首地址;(2)利用循環(huán)語(yǔ)句把字符串前導(dǎo)*號(hào)拷貝到原串;(3)繼續(xù)移動(dòng)指針,把串中和串尾的非*號(hào)字符拷貝到原串;(4)為修改后的字符串賦結(jié)束字符‘、O’。

【解題寶典】

要?jiǎng)h除字符串中的指定字符,我們通常采用保留非指定字符的方法??梢詫⒎侵付ㄗ址A粼谠磳⑿枰A舻淖址麖脑钠鹗嘉恢弥匦沦x值;也可以保留到新串,即新建一個(gè)字符串,存放要保留的字符。2021-2022年河北省石家莊市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.以下關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)的敘述中正確的是()。

A.結(jié)構(gòu)化程序使用goto語(yǔ)句會(huì)很便捷

B.在c語(yǔ)言中,程序的模塊化是利用函數(shù)實(shí)現(xiàn)的

C.一個(gè)結(jié)構(gòu)化程序必須同時(shí)由順序、分支、循環(huán)三種結(jié)構(gòu)組成

D.由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問(wèn)題

2.采用折半查找法查找長(zhǎng)度為n的線性表時(shí),每個(gè)元素的平均查找長(zhǎng)度為()。

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

3.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

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

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

4.下面哪個(gè)序列不是此圖的一個(gè)拓?fù)渑判?)A.ebfgadchB.aebdgfchC.adchebfgD.Aedbfgch

5.如下程序段

#include<stdio.h>

#include<ctype.h>

#include<conio.h>

intfun(char*str)

{inti,j=0;

for(i=0;str[i]!=’\0’;i++)

if(str[i]!=’’)str[j++]=str[i];

str[j]=’\0’;

}

main()

{

charstr[81];

intn;

clrscr();

printf("Inputastring:");

gets(str);

fun(str);

printf("%s\n",str);

}

當(dāng)運(yùn)行程序時(shí),輸入asdafaaz67<回車>,則輸出是A.A.asdafaaz67

B.asdafaaz67

C.asd

D.z67

6.有以下程序:main{inta=0,b=0;a=10;/*給a賦值b=20;給b賦值*/printf(“a+b=%d\n”,a+b);/*輸出計(jì)算機(jī)結(jié)果*/}程序運(yùn)行后的輸出結(jié)果是()。A.a+b=10B.a+b=30C.30D.出錯(cuò)

7.

8.在瀏覽WWW時(shí),如果連接到一個(gè)安全的站點(diǎn),應(yīng)當(dāng)以()開頭來(lái)書寫統(tǒng)一資源定位器。

A.shttp://B.http:s//C.http://D.https//

9.if語(yǔ)句基本形式是:if(表達(dá)式)語(yǔ)句,以下關(guān)于“表達(dá)式”值的敘述中正確的是()。

A.必須是邏輯值B.必須是整數(shù)值C.必須是正數(shù)D.可以是任意合法的數(shù)值

10.

11.以下程序的輸出結(jié)果是()。main(){inta[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d\n",s);}A.18B.19C.20D.21

12.

13.

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

main

{inta,b,d=25;

a=d/10%9;

b=a&&(一1);

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

A.6,1B.2,1C.6,0D.2,0

14.

15.

16.在n個(gè)結(jié)點(diǎn)的順序表中,算法的時(shí)間復(fù)雜度是O(1)的操作是()。

A.訪問(wèn)第i個(gè)結(jié)點(diǎn)(1<=i<=n)和求第i個(gè)結(jié)點(diǎn)的直接前驅(qū)(2<=i<=n)

B.在第i個(gè)結(jié)點(diǎn)之后插入一個(gè)新結(jié)點(diǎn)(1<=i<=n)

C.刪除第i個(gè)結(jié)點(diǎn)(1<=i<=n)

D.將n個(gè)結(jié)點(diǎn)從小到大排序

17.以下敘述中錯(cuò)誤的是()。

A.使用三種基本結(jié)構(gòu)構(gòu)成的程序只能解決簡(jiǎn)單問(wèn)題

B.結(jié)構(gòu)化程序由順序、分支、循環(huán)三種基本結(jié)構(gòu)組成

C.C語(yǔ)言是-種結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言

D.結(jié)構(gòu)化程序設(shè)計(jì)提倡模塊化的設(shè)計(jì)方法

18.冒泡排序在最壞情況下的比較次數(shù)是()。

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

19.第

2

現(xiàn)有如下程序段

#include"stdio.h"

main()

{intk[30]={12,324,45,6,768,98,21,34,453,456};

intcount=0,i=0;

while(k[i])

{if(k[i]%2==0‖k[i]%5==0)count++;

i++;}

printf("%d,%d\n",count,i);}

則程序段的輸出結(jié)果為

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

20.有以下程序:Voidf(inta[],ihti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,i-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d",aa[i]);printf("\n");}執(zhí)行后輸出結(jié)果是

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

二、2.填空題(20題)21.有以下程序

intfa(intx){returnx*x;}

intfb(intx){retumx*x*x;}

intf(int(*fl)int(*12)(),intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2);printf("%d\n",i);}

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

22.下面程序把從終端讀入的10個(gè)整數(shù)以二進(jìn)制方式寫入一個(gè)名為bi.dat的新文件中。

#include<stdio.h>

FILE*fp;

main()

{inti,j;

if(fp=fopen(【】)==NULL)exit(0);

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

{scanf("%d",&j);

fwrite(&j,sizeof(int),1,【】;

}

fclose(fp);

}

23.設(shè)有以下定義和語(yǔ)句,則*(*(p+2)+1)的值為【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

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

main()

{intx,a=1,b=2,c=3,d=4;

x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;

pfintf("%d\n",x);

}

25.在循環(huán)中,continue語(yǔ)句與break語(yǔ)句的區(qū)別是:______語(yǔ)句只是結(jié)束本次循環(huán),然后進(jìn)行循環(huán)的條件判定。

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

#include<stdio.h>

main()

{intfun();fun();}

fun()

{staticinta[3]={0,1,2};

inti;

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

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

printf("\n");}

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

struetss

{intinfo;struetss*link;}x,y,z;

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

請(qǐng)寫出刪除結(jié)點(diǎn)y的賦值語(yǔ)句【】。

28.______是數(shù)據(jù)庫(kù)應(yīng)用的核心。

29.人員基本信息一般包括:身份證號(hào)、姓名、性別、年齡等。其中可以作為主關(guān)鍵字的是()。

30.表達(dá)式pow(2.8,sqrt(float(x)))值的數(shù)據(jù)類型為______型。

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

main()

{intm=011,n=11;

printf("%d%d\n",++m,n++);

}

32.若有定義floatb[15],*p=b;,且數(shù)組b的首地址為200H,則p+13所指向的數(shù)組元素的地址為______。

33.數(shù)據(jù)流圖的類型有【】和事務(wù)型。

34.數(shù)據(jù)庫(kù)管理系統(tǒng)是位于用戶與______之間的軟件系統(tǒng)。

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

main()

{charb[]="Helloyou";

b[5]=0;

printf("%s\n",b);

}

36.一個(gè)模塊直接調(diào)用的其他模塊的模塊個(gè)數(shù)稱為______。

37.請(qǐng)?jiān)谝韵鲁绦虻谝恍械南聞澗€處填寫適當(dāng)內(nèi)容,使程序能正常運(yùn)行。

#include<stdio.h>

【】(double,double);

main()

{doublex,y;

scanf("%If%If",&x,&y);

printf("%If\n",max(x,y));

}

doublemax(doublea,doubleb)

{return(a>b?a:b);}

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

main()

{intx=0;

sub(&x,8,1);

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

}

sub(int*a,intn,intk)

{if(k<=n)sub(a,n/2,2*k);

*a+=k;

}

39.閱讀下面語(yǔ)句,則執(zhí)行后的輸出結(jié)果為【】。

#include"stdio.h"

main()

{chara,b;

for(a='0',b='9';a<b;a++,b--)

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

printf("\n");}

40.用以下程序把從鍵盤輸入的字符存放到一個(gè)文件中,用字符#作為結(jié)束符,請(qǐng)按題意要求填空完善程序。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenameoffile\n");

gets(fname);

if(fp=fopen(【】))==NULL)

{printf("can'topen\n");

【】;

}

while((ch=getchar())!='#')

fputc(【】);

fclose(fp);

}

三、1.選擇題(20題)41.在計(jì)算面中,算法是指______。

A.查詢方法B.加工方祛C.解題方案的準(zhǔn)確而完整的描述D.排序方法

42.在調(diào)用函數(shù)時(shí),如果實(shí)參是簡(jiǎn)單變量,它與對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式是______。

A.地址傳遞B.單向值傳遞C.由實(shí)參傳遞給形參,再由形參傳遞給實(shí)參D.傳遞方式由用戶指定

43.請(qǐng)選出以下程序的輸出結(jié)果

#include<stdio.h>

main()

{inta[]={1,2,3,4},i;

intx=0;

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

{sub(a,x);printf("%d",x);}

printf("\n");}

sub(s,y)

int*s,y;

{staticintt=3;

y=s[t];t--;}

A.1234B.4321C.0000D.4444

44.C語(yǔ)言結(jié)構(gòu)體類型變量在程序執(zhí)行期間,()。

A.所有成員一直駐留在內(nèi)存中B.沒有成員駐留在內(nèi)存中C.部分成員駐留在內(nèi)存中D.只有一個(gè)成員駐留在內(nèi)存中

45.有以下程序:voidfun(char*a,char*b){a=b;(*a)++;}main(){charcl='A',c2='a',*p1,*p2;p1=&c1;p2=&c2;fun(p1,p2);printf("%c,%c\n",c1,c2);}程序運(yùn)行后的輸出結(jié)果是()。

A.AbB.aaC.AaD.Bb

46.有以下程序:#include<stdio.h>main(){printf("%d\n",NULL);}程序運(yùn)行后的輸出結(jié)果是()。

A.0B.1C.-1D.NULL沒定義,出錯(cuò)

47.下列程序執(zhí)行輸出的結(jié)果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}

A.3B.4C.5D.6

48.若有下面的說(shuō)明和定義,則sizeof(structaa)的值是______。structaa{intrl;doubler2;floatr3;uninuu{charul[5];longu2[2]}ua;}mya;

A.30B.29C.24D.22

49.以下程序的功能是:建立一個(gè)帶布頭結(jié)點(diǎn)的單向鏈表,并將存儲(chǔ)在數(shù)組中的字符依次存儲(chǔ)到鏈表的各個(gè)結(jié)點(diǎn)中,請(qǐng)從與下劃線處號(hào)碼對(duì)應(yīng)的一組選項(xiàng)中選擇出正確的選項(xiàng)

#include<stdlib.h>

structnode

{chardata;structnode*next;};

(48)CreatList(char*s),

{structnode*h,*p,*q;

h=(structnode*)malloc(sizeof(structnode));

p=q=h;

while(*s!="\0")

{p=(structnode*)malloc(sizeof(structnode));

p->data=(49);

q->next=p;

q=(50);

s++;

}

p->next="\0";

returnh;

}

main()

{charstr[]="linklist";

structnode*head;

head=CreatList(str);

}

(1)

A.char*B.structnodeC.structnode*D.char

50.若有如下程序:intm=1;main(){intt=0,s=0;{intm=4;s+=m;)t+=m;printf("%d,%d\n",s,t);}則程序運(yùn)行后的輸出結(jié)果是()。

A.1,1B.1,4C.4,1D.4,4

51.有程序:main(){intx,i;for(i=1;i<50;i++){x=i;if(++%2==0)if(x%3==0)if(x%7==0)printf("%d",i);}}輸出結(jié)果是()

A.28B.27C.42D.41

52.以下敘述中不正確的是

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

B.C語(yǔ)言中對(duì)二進(jìn)制文件的訪問(wèn)速度比文本文件快

C.C語(yǔ)言中,隨機(jī)讀寫方式不適用于文本文件

D.C語(yǔ)言中,順序讀寫方式不適用于二進(jìn)制文件

53.在下列選項(xiàng)中,不是一個(gè)算法一般應(yīng)該具有的基本特征的是()。

A.確定性B.可行性C.無(wú)窮性D.擁有足夠的情報(bào)

54.以下數(shù)組定義中不正確的是_______。

A.inta[2][3];

B.intb[][3]={0,1,2};

C.intc[100][100={0};

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

55.若ch為char型變量,k為int型變量(已知字符a的ASCII碼是97),則執(zhí)行下列語(yǔ)句后輸出的結(jié)果為()。

ch='b';

k=10;

printf("%x,%o,",ch,ch,k);

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

A.因變量類型與格式描述符的類型不匹配,輸出無(wú)定值

B.輸出項(xiàng)與格式描述符個(gè)數(shù)不符,輸出為0值或不定值

C.62,142,k=%d

D.62,142,k=%10

56.有以下程序#defineN20fun(inta[],intn,intm){inti,j;for(i=m;i>=n;i--)a[i+1]=a[i];}main(){inti,a[N]={1,2,3,4,5,6,7,8,9,10};fun(a,2,9);for(i=0;i<5;i++)printf("%d",a[i]);}程序運(yùn)行后的輸出結(jié)果是——。

A.10234B.12344C.12334D.12234

57.C語(yǔ)言可執(zhí)行程序的開始執(zhí)行點(diǎn)是()。

A.包含文件中的第一個(gè)函數(shù)B.程序中第一個(gè)函數(shù)C.程序中的main()函數(shù)D.程序中第一條語(yǔ)句

58.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結(jié)果是()。

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

59.以下程序的功能是:給r輸入數(shù)據(jù)后計(jì)算半徑為r的圓面積s。#include<stdio,h>main()/*Beginning*/{intr;floats;scanf("%d",&r);s=*Π*r*r;printf("s=%f\n",s);程序在編譯時(shí)出錯(cuò),出錯(cuò)的原因是()。

A.注釋語(yǔ)句書寫位置錯(cuò)誤

B.存放圓半徑的變量r不應(yīng)該定義為整型

C.輸出語(yǔ)句中格式描述符非法

D.計(jì)算圓面積的賦值語(yǔ)句中使用了非法變量

60.在一棵二叉樹上第8層的結(jié)點(diǎn)數(shù)最多是_______。

A.8B.16C.128D.256

四、選擇題(20題)61.

62.

63.有以下程序段

#include"stdio.h"

main()

{intj,i,k=0;

for(j=50;j<=60;j++)

{if(!(k%10))printf("\n");

for(i=2;i<j;i++)if(!(j%i))

break;

if(i>=j-1)

{printf("%d",j);

k++;}

}

}

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

A.5359B.5953

C.3595D.9535

64.有以下程序:

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

A.3B.4C.lD.9

65.

66.下列排序方法中,最壞情況下比較次數(shù)最少的是()。

A.冒泡排序B.簡(jiǎn)單選擇排序C.直接插入排序D.堆排序

67.以下關(guān)于typedef的敘述錯(cuò)誤的是()。

A.用typedef可以增加新類型

B.typedef只是將已存在的類型用一個(gè)新的名字來(lái)代替

C.用typedef可以為各種類型說(shuō)明一個(gè)新名,但不能用來(lái)為變量說(shuō)明一個(gè)新名

D.用typedef為類型說(shuō)明一個(gè)新名,通??梢栽黾映绦虻目勺x性

68.

69.表達(dá)式:的值是()。

A.3B.0C.4D.5

70.

71.

設(shè)有以下定義和語(yǔ)句:

charstr[2O]="Program",*P:

p=str:

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

A.*p與stf[0]的值相等

B.str與P的類型完全相同

C.str數(shù)組長(zhǎng)度和P所指向的字符串長(zhǎng)度相等

D.數(shù)組str中存放的內(nèi)容和指針變量P中存放的內(nèi)容相同

72.

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

B.doublemyadd(do

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論