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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.abcdefghijklmnopq

B.afgebcdhnopqmijklhnopqmijkl

C.efgabcdmnopqhijkl

D.mijklhnopqebcdafg

2.在最壞情況下比較次數(shù)相同的是()。A.冒泡排序與快速排序B.簡單插入排序與希爾排序C.簡單選擇排序與堆排序D.快速排序與希爾排序

3.定義int*swap()指的是______。

A.—個返回整型值的函數(shù)swap()

B.一個返回指向整型值指針的函swap()

C.一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值

D.以上說法均錯

4.將兩個字符串連接起來組成一個字符串時,選用()函數(shù)。A.strlen()B.strcpy()C.strcat()D.strcmp()

5.設(shè)R是一個二元關(guān)系,S是一個三元關(guān)系,則下列運算中正確的是()。

A.R-SB.R×SC.R∩SD.R∪S

6.

讀取二進(jìn)制文件的函數(shù)調(diào)用形式為:fread(buffersize,count,fp);,其中buffer代表的是()。

A.一個文件指針,指向待讀取的文件

B.一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)

C.一個內(nèi)存塊的首地址,代表讀人數(shù)據(jù)存放的地址

D.一個內(nèi)存塊的字節(jié)數(shù)

7.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.Sun,f,90,Sun,f,90

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

C.Zhao,m,85,Qian,f,95

D.Sun,f,90,Qian,f,95

8.程序流程圖中帶有箭頭的線段表示的是()。

A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系

9.有三個關(guān)系R、S和T如下:由關(guān)系R和S得到關(guān)系T的操作是()。A.自然連接B.交C.除D.并

10.若變量已正確定義,有下列程序段:inta=3,b=5,c=7;if(a>B)a=b;c=a;if(c!=A)c=b;printf("%d,%d,%d\n",a,b,C);其輸出結(jié)果是()。A.程序段有語法錯B.3,5,3C.3,5,5D.3,5,7

11.現(xiàn)有如下定義語句int*p,s[20],i;p=s;表示數(shù)組元素s[i]的表達(dá)式不正確的是

A.*(s+i)B.*(p+i)C.*(s=s+i)D.*(p=p+i)

12.設(shè)"char**s;",以下正確的表達(dá)式是()。

A.s="computer";B.*s="computer";C.**s="computer";D.*s='c';

13.對線性表進(jìn)行二分法檢索,其前提條件是()。

A.線性表以順序方式存儲,并按關(guān)鍵碼值排好序

B.線性表以順序方式存儲,并按關(guān)鍵碼的檢索頻率排好序

C.線性表以鏈?zhǔn)椒绞酱鎯?,并按關(guān)鍵碼值排好序

D.線性表以鏈?zhǔn)椒绞酱鎯?,并按關(guān)鍵碼的檢索頻率排好序

14.下面關(guān)于圖的存儲的敘述中正確的是()。

A.用鄰接表法存儲圖,占用的存儲空間大小只與圖中邊數(shù)有關(guān),而與頂點個數(shù)無關(guān)

B.用鄰接表法存儲圖,占用的存儲空間大小與圖中邊數(shù)和頂點個數(shù)都有關(guān)

C.用鄰接矩陣法存儲圖,占用的存儲空間大小與圖中頂點個數(shù)和邊數(shù)無關(guān)

D.用鄰接矩陣存儲圖,占用的存儲空間大小只與圖中邊數(shù)有關(guān),而與頂點個數(shù)無關(guān)

15.有以下程序:#includeMain(){charc1.c2;.c1='A'+'8'-'4';c2='A'+'8'-'5';.printf("%c,%d\n",,c1.c2);}已知字母A的ASCI碼為65.程序運行后的輸出結(jié)果是()。A.E.68B.D.69C.E,DD.輸出無定值

16.

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

A.函數(shù)的返回值類型不能是結(jié)構(gòu)體類型,只能是簡單類型

B.函數(shù)可以返回指向結(jié)構(gòu)體變量的指針

C.可以通過指向結(jié)構(gòu)體變量的指針訪問所指結(jié)構(gòu)體變量的任何成員

D.只要類型相同,結(jié)構(gòu)體變量之間可以整體賦值

18.

19.對兩個數(shù)組a和b進(jìn)行下列初始化:charm[]1="l234567":charn[]={1,2,3,4,5,6,7);則下列敘述正確的是()。A.數(shù)組m與數(shù)組n完全相同B.數(shù)組m與數(shù)組n長度相同C.數(shù)組m比數(shù)組n長1D.數(shù)組m與數(shù)組n中都存放字符串

20.

二、2.填空題(20題)21.以下程序的功能是【】。

main()

{intnum[10]={10,1,-20,-203,-21,2,-2,-2,11,-21};

intsum=0,i;

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

if(num[i]>0)

sum=num[i]+sum;

printf("sum=%6d",sum);

}

22.下面程序的功能是用來統(tǒng)計文件中字符個數(shù)。請?zhí)羁铡?/p>

#include"stdio.h"

main()

{longcount=OL;

FILE*fp=【】("text.dat","r");

if(fp==0)

{printf("Openerror\n");

exit(0);

}

while(【】)

{

fgetc(fp);

count++;

}

fclise(fp);

printf("%1d\n",count);

}

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

main()

{inta[]={31,27,20,12,6,1},*p=a;

p++;

printf("%d\n",*(p+2));

}

24.下面程序的功能是將一個字符串str的內(nèi)容顛倒過來,請?zhí)羁铡?/p>

main()

{

inti,j,【】;charstr[]={"1234567");

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;}

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

}

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

main()

{char*p[]={"BOOL","OPK","H","SP"};

inti;

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

26.以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值。請?zhí)羁铡?/p>

#include<stdio,h>

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

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

prinff("\n");

}

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

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

{x=ar[i][0];'

for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

【】=x;

}

}

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

main()

{ints=0,i=1;

while(s<=10)

{S=S+i*i;

i++;

b

}

printf("%d",--i);

}

28.實現(xiàn)程序可將磁盤中的一個文件復(fù)制到另一個文件中,兩個文件的文件名在可執(zhí)行命令的命令行中(相當(dāng)于copy命令),假定文件在當(dāng)前目錄下。請補(bǔ)全程序。

#include<stdio.h>

voidmain(intargc,char*argv[])

{FILE*f1,*f2;

if(argc<【】)

{printf("parametererror!\n");exit(0);}

f1=fopen(argv[1],"r");

f2=fopen(argv[2],"w");

while(【】)fputc(fgetc(f1),f2);

fclose(f1);

fclose(f2);

}

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

main()

{inti,sum;

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

sum+=i;

primf("%d",sum);

}

30.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

#include<stdio.h>

main()

intt=0.s=0,i:

for(i=1;i<=5;i++){t=i+【】;s=s+t;}

prinff("s=%d\n".s);}

31.在軟件維護(hù)時,對測試階段未發(fā)現(xiàn)的錯誤進(jìn)行測試、診斷、定位、糾錯直至回歸測試的過程稱為【】。

32.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及列數(shù)據(jù)的操作運算。

33.在關(guān)系模型中,把數(shù)據(jù)看成是二維表,每一個二維表稱為一個【】。

34.有以下程序main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序執(zhí)行后的輸出結(jié)果是

35.數(shù)據(jù)的物理結(jié)構(gòu)在計算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的【】。

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

37.關(guān)系數(shù)據(jù)庫的關(guān)系演算語言是以【】為基礎(chǔ)的DML語言。

38.以下fun函數(shù)的功能是:累加數(shù)組元素中的值,n為數(shù)組中元素的個數(shù),累加的和值放入x所指的存儲單元中。請?zhí)羁铡?/p>

fun(intb[],intn,int*x)

{intk,r=0;

for(k=0,k<n;k++)r=【】;

【】=r;

}

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

#include"stdio.h"

main()

{charfun(char,int);

chara='A';

intb=13;

a=fun(a,b);

putchar(a);}

charfun(chara,intb)

{chark;

k=a+b;

returnk;}

40.在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個______。

三、1.選擇題(20題)41.已知一個文件中存放若干工人檔案記錄,其數(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);

42.設(shè)有以下語句:inta=1,b=2,c;c=a∧(b<<2);執(zhí)行后,c的值為()。

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

43.函數(shù)調(diào)用strcat(strcpy(str1,str2),str3)的功能是()。

A.將字符串str1復(fù)制到字符串str2中后再連接到字符串str3之后

B.將字符串str1連接到字符串str2之后再復(fù)制到字符串str3之后

C.將字符串str2復(fù)制到字符串str1中后再將字符串str3連接到字符串str1之后

D.將字符串str2連接到字符串str1之后再將字符串str1復(fù)制到字符串str3中

44.執(zhí)行語句for(i=1;i++<4;);后變量i的值是______。

A.3B.4C.5D.不定

45.以下程序的輸出結(jié)果是______。longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%ld\n",fun(3));}

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

46.若要顯示或打印漢字將用到漢字編碼中的()

A.輸入碼B.字型碼C.機(jī)內(nèi)碼D.交換碼

47.若以"a+"方式打開一個已存在的文件,則下列敘述正確的是()。

A.文件打開時,原有文件內(nèi)容不被刪除,位置指針移到文件末尾,可以進(jìn)行添加或讀操作

B.文件打開時,原有文件內(nèi)容不被刪除,只能進(jìn)行讀操作

C.文件打開時,原有文件內(nèi)容被刪除,只能進(jìn)行寫操作

D.以上三種說法都不正確

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

#include"stdio.h"

#include"string.h"

main()

{chara[]="acfijk";/*這里是有序的字符序列*/

charb[]="befijklqswz";/*這里是有序的字符序列*/

charc[80],*p;

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

while(a[i]!=′\0′&&b[j]!=′\0′)

{if(a[i]<b[j])c[k++]=a[i++];

elseif(a[i]>b[j])c[k++]=b[j++];

else{c[k++]=b[j++];

i++;}}

while(a[i]==′\0′&&b[j]!=′\0′)

c[k++]=b[j++];

while(a[i]!=′\0′&&b[j]==′\0′)

c[k++]=a[i++];

c[k]=′\0′;

puts(c);}

則輸出結(jié)果是

A.acfijkbefijklqswz

B.abceffiijjkklqswz

C.befijklqswzacfijk

D.abcefijklqswz

49.下面的關(guān)鍵字中,不能夠從循環(huán)體中跳到循環(huán)體外的是______。

A.gotoB.breakC.returnD.continue

50.某片軟盤上已染有病毒,為防止該病毒傳染計算機(jī)系統(tǒng),正確的措施是______。

A.刪除軟盤上的所有文件即刪除了病毒B.將該軟盤進(jìn)行寫保護(hù)C.將軟盤放一段時間后再用D.將該軟盤重新格式化

51.下列關(guān)系運算的敘述中,正確的是()。A.A.投影、選擇、連接是從二維表行的方向進(jìn)行的運算

B.并、交、差是從二維表的列的方向來進(jìn)行運算

C.投影、選擇、連接是從二維表列的方向進(jìn)行的運算

D.以上3種說法都不對

52.有以下程序:main(){char*p[10]={"abc","aabdfg","dcdbe","abbcf',"cd"};printf("%d\n",strlen(p[4]));}執(zhí)行后的輸出結(jié)果是______。

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

53.有以F程序#include<stdio.h>main(){inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的運行結(jié)果是

A.741B.963C.852D.875421

54.以下程序中函數(shù)f的功能是將n個字符串按由大到小的順序進(jìn)行排序。#include<string.h>voidf(charp[][10],intn){chart[20];inti,j;for(i=0;i<n-1;i++)for(j=i+l;j<n;j++)if(strcmp(p[i],p[j])<0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[][lO]-{"abc","aabdfg","abbd","dcdbe","cd"};inti;f(p,5);printf("%dkn",strlen(p[0]));}程序運{亍后的輸出結(jié)果是

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

55.以下程序的運行結(jié)果是

#defineMAX(A,B)(A)>(B)?(A):(B)

#definePRINT(Y)printf("Y=%d\t",Y)

main()

{inta=1,b=2,c=3,d=4,t;

t=MAX(a+b,c+d);

PRINT(t);}

A.Y=3B.存在語法錯誤C.Y=7D.Y=0

56.下列程序的輸出結(jié)果是()。#include<stdio.h>intb=2;intfunc(int*a){b+=*a;returnb;}main(){inta=1,t=2;t+=func(&a);printf("%d\n",t);}

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

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

A.在賦值表達(dá)式中,賦值號的左邊既可以是變量,也可以是任意表達(dá)式

B.實型變量中允許存放整型數(shù)

C.若a和b類型相同,在執(zhí)行了賦值a=b后,b中的值將放入a中,但b中的值不變

D.在C程序中,求余運算符“%”兩邊的類型相同時才能進(jìn)行運算

58.下面程序的輸出是______。main(){char*s="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default:v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=8,v2=8,v3=8,v4=8

59.對下述程序的判斷中,正確的是()。#include<stdio.h>voidmain(){char*P,s[256];p=s;while(strcmp(s,"theend")){printf("Inputthestring:");gets(s);while(*P)putchar(*p++);}}

A.此程序循環(huán)接收字符串并輸出,直到接收到字符串“theend”為止

B.此程序循環(huán)接收字符串,接收到字符串“theend”則輸出,否則程序終止

C.此程序循環(huán)接收字符串并輸出,直到接收字符串“theend”為止,但因為代碼有錯誤,程序不能正常工作

D.此程序循環(huán)接收字符串并將其連接在一起,直到接收字符串“theend”為止,輸出連接在一起的字符串

60.假定建立了以下鏈表結(jié)構(gòu),指針p、q分別指向如圖所示的結(jié)點,則以下可以將q所指結(jié)點從鏈表中刪除并釋放該結(jié)點的語句組是______。

A.free(q);p->next=q->next;

B.(*p).next=(*q).next;free(q);

C.q=(*q).next;(*p).next=q;free(q);

D.q=q->next;p->next=q;p=p->next;free(p);

四、選擇題(20題)61.

62.設(shè)有如下程序段:

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

A.輸出值為2004

B.輸出值為2008

C.運行時產(chǎn)生出錯信息

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

63.在深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為A.32B.31C.16D.15

64.在c語言中,只有在使用時才占用內(nèi)存單元的變量,其存儲類型是()。A.aut0和Iegister

B.extern和register

C.aut0和static

D.static和register

65.若有定義語句:inta[4][10],*P,*q[4];且0<=i<4,則錯誤的賦值是()。

A.P=aB.q[i]=a[i]C.p=a[i]D.p=&a[2][1]

66.

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

A.在C語言中調(diào)用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參

B.在C的函數(shù)中,最好使用全局變量

C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)

D.自動變量實質(zhì)上是一個函數(shù)內(nèi)部的局部變量

68.若有說明:inta[3][4]={0};,則下面正確的敘述是

A.只初始化了第一個元素,即a[0][0]可得到初值0

B.此初始化語句不正確

C.?dāng)?shù)組a中各元素都可得到初值,但其值不一定為0

D.?dāng)?shù)組a中每個元素均可得到初值0

69.以下能定義為用戶標(biāo)識符的是()。

A.printfB.charC._8abcD.Void

70.

71.有以下程序:

#include<stdio.h>

inta=1,b=2:

voidfunl(inta,intb)

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

voidfun2()

{a=3;b=4;}

main()

{funl(5,6);fun2();

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

}

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

A.1256

B.5634

C.5612

D.3456

72.

73.以下程序段中的變量已正確定義

74.

75.

76.第

1

若有運算符<<,sizeof,^,&=,則它們按優(yōu)先級由高至低的正確排列次序是

A.sizeof,&=,<<,^

B.sizeof,<<,^,&=

C.^,<<,sizeof,&=

D.<<,^,&=,sizeof

77.若有說明:inti,j=7,*p=&i;,則與i=j;等價的語句是()。

A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;

78.

79.

80.

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

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

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:在字符串的最前端加入m個*號,形成新串,并且覆蓋原串。例如,用戶輸入字符串a(chǎn)bcd(以Enter鍵結(jié)束),然后輸入m值為3,則結(jié)果為***abcd。注意:字符串的長度最長允許為79。請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是將M行N列的二維數(shù)組中的數(shù)據(jù),按列的順序依次存放到一維數(shù)組中,將一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>voidfun(int(*s)[10],int*b,int*n,intmm,intnn){}main(){intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;inta[100]={0},n=0;printf(“Thematrix:\n”);for(i=0;i<3;i++){for(j=0;j<4;j++)printf(“%3d”,w[i][j]);printf(“\n”);}fun(w,a,&n,3,4);printf(“TheAarray:\n”);for(i=0;i<n;i++)<p=""></n;i++)<>printf(“%3d”,a[i]);}

參考答案

1.B程序首先定義二維字符數(shù)組v,使用4個字符串初始化,另外定義字符指針數(shù)組P。通過第1個for循環(huán),將v的4個字符串的首地址賦給p。第2for循環(huán)通過兩層內(nèi)嵌循環(huán)將p中元素指向的字符串首字母進(jìn)行排序交換。規(guī)則是將指向的字符串的首字母字符按照字母表中的順序排序后交換。注意,這里交換的是首字母,而不是整個字符串,所以程序輸出:afgebcdhnopqmijkl。本題答案為B選項。

2.A冒泡排序、快速排序、簡單插入排序、簡單選擇排序在最壞情況下比較次數(shù)均為n(n-1)/2,堆排序在最壞情況下比較次數(shù)為nlog2n,希爾排序在最壞情況下需要比較的次數(shù)是nr(1﹤r﹤2)。本題答案為A選項。

3.B解析:—個函數(shù)可以帶回—個整型值、字符值、實型值等,但也可以帶回指針型數(shù)據(jù),即地址。本題的定義中,包括括號和*號,由于()優(yōu)先級高于*。故它是—個返回整型指針的函數(shù)。

4.C將兩個字符串連接起來組成一個字符串,選用strcat函數(shù)來連接。

5.BB?!窘馕觥筷P(guān)系的交(∩)、并(∪)和差(-)運算要求兩個關(guān)系是同元的,顯然作為二元的R和三元的S只能做笛卡兒積運算。

6.Cfread函數(shù)中的參數(shù)buffer是內(nèi)存塊的首地址,輸入的數(shù)據(jù)存入此內(nèi)存塊中。

7.A程序定義結(jié)構(gòu)體類型STU,定義類型STU的全局變量a。main函數(shù)定義局部類型為STU變量b,并對它初始化,調(diào)用函數(shù)f。將局部變量c的各個成員值賦給a,覆蓋a的舊值,將a的新值返回并賦給b,此時a、b的各個成員值都是Sun,f,90,程序輸出:Sun,f,90,Sun,f,90。本題答案為A選項。

8.C解析:程序流程圖是人們對解決問題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號表示操作的內(nèi)容,流程線表示操作的先后次序。帶箭頭的線段在數(shù)據(jù)流程圖中表示數(shù)據(jù)流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項中,在圖元之間用帶有箭頭的線段表示圖元關(guān)系。在模塊之間用帶有箭頭的線段表示調(diào)用關(guān)系。構(gòu)成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;

表示邏輯條件。

9.C由圖所知,其中,C中只有一個屬性,是除操作。

10.B解析:本題考查的是程序結(jié)構(gòu)設(shè)計中if語句的應(yīng)用,當(dāng)if判斷條件成立時就執(zhí)行其后的相關(guān)語句,否則不執(zhí)行,本題中第一個if條件不成立,故不執(zhí)行“a=b”,接著執(zhí)行“c=a”,此時第二個if條件也不成立,故不執(zhí)行其后語句,最終c的值為3。

11.C解析:當(dāng)p指向s數(shù)組的首地址時,表示數(shù)組元素s[i]的表達(dá)式應(yīng)當(dāng)有:①s[i],②,(s+i),③*(p+i),④p[i]四種形式。選項C)錯誤的原因是,數(shù)組的地址是不可變的,指針的地址是可以變的。

12.B

13.A解析:對線性表進(jìn)行二分法檢索,要求線性表是按順序方式存儲的,并按關(guān)鍵碼值的大小排好序,而不是按關(guān)鍵碼的檢索頻率排序。

14.B

15.A[解析]本題目中字符變量c1是字符A的ASCII碼加上4.即69所對應(yīng)的字符E。字符變量c2是字符'A'的ASCII碼加上3.即68所對應(yīng)的字符D'。但是打印輸出時,c1以%c的格式輸出,所以是E,c2以%d的格式輸出,所以是68.

16.D

17.A函數(shù)返回值類型可以是簡單類型和結(jié)構(gòu)體類型。

18.D

19.C在m數(shù)組中賦值的是字符串,其長度為7,末尾有結(jié)束符\0,故字節(jié)數(shù)為8,而n數(shù)組中賦的是字符,其長度為7,故C選項正確。

20.C

21.計算數(shù)組num中大于零的數(shù)據(jù)之和計算數(shù)組num中大于零的數(shù)據(jù)之和

22.fopen!feof(fp)fopen\r\n!feof(fp)解析:第一空從右邊的括號中可以看出,這里應(yīng)該填入一個fopen,整條語句用來打開一個名為text.dat的文件。第二空是一個while循環(huán)的循環(huán)條件表達(dá)式,循環(huán)體每次讀取一個字符,并讓count增1,所以循環(huán)條件應(yīng)該是“如果文件還沒結(jié)束”,故應(yīng)該填!feof(fp)。

23.1212解析:本題簽考查如何用指針引用數(shù)組元素。分析程序,首先定義了一個指向數(shù)組a的指針p,p指向數(shù)組的首地址,通過p++,將p指向a[1],p+2是將指針后移2位指向a[3],*(p+2)即是取a[3)的值12。

24.k-1k\r\n-1解析:程序山使用了整型變量i、j、k,使用前應(yīng)先聲明,因此第1個空應(yīng)填變量k。i和j作為下標(biāo)的值,i被賦初值為0,j應(yīng)為下標(biāo)的最大值,下標(biāo)的最大值為數(shù)組的長度減1。

25.SOSO解析:考查用指針引用字符串?dāng)?shù)組中元素的方法。題中需要注意兩個問題:一是for循環(huán)的修正表達(dá)式共執(zhí)行兩次'i--'操作;二是*p[i]是對某個字符的引用。

26.br[i]或*(br+i)br[i]或*(br+i)解析:程序中的數(shù)組a是一個3行4列的二維數(shù)組,一維數(shù)組b用于存放每行的最大數(shù)。在函數(shù)fun中,通過二重for循環(huán)求每行的最大數(shù),外層for循環(huán)用于控制行數(shù),內(nèi)層for循環(huán)用于控制列數(shù),當(dāng)外層循環(huán)執(zhí)行一次時,內(nèi)層循環(huán)則從一行的4個數(shù)中找出最大數(shù)x,然后將最大值x賦給數(shù)組br,故空格處應(yīng)填br[i]或*(br+i)。

27.33解析:分析程序運行過程,第1次循環(huán):s=s+i*i=0+1*1=1,i=2;第2次循環(huán):s=s+i*i=1+2*2=5,i=3;第3次循環(huán):s=s+i*i=5+3*3=14,i=4;循環(huán)條件不成立輸出i,--i使i的值減1,輸出結(jié)果為3。

28.3!feof(f1)3\r\n!feof(f1)解析:要實現(xiàn)文件復(fù)制,需要指定源文件及目的文件,因此在命令行下執(zhí)行程序時至少要指定兩個參數(shù),加上程序名本身,故argc的值至少為3,因此第一空應(yīng)填3。while循環(huán)中語句fputc(fgetc(f1),f2);的目的是將f1中的字符依次讀出并寫入到f2對應(yīng)的文件中去,直至文件f1結(jié)束為止,因此第二空為!feof(f1)。

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

30.t*10t*10解析:程序中變量,用于存放表達(dá)式1+12+123+1234+12345之和,變量t用于存放其表達(dá)式的各項。當(dāng)i=1時,要使t=1;i=2時,t=12;i=3時,t=123;依此類推。每一次的t值是用上一次的t乘以10再加上此次的i的值,所以本題答案為t*10。

31.校正性維護(hù)校正性維護(hù)

32.存儲結(jié)構(gòu)存儲結(jié)構(gòu)解析:數(shù)據(jù)結(jié)構(gòu)包括3個方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)及對數(shù)據(jù)的操作運算。

33.關(guān)系關(guān)系解析:在數(shù)據(jù)庫中,一個表就是一個關(guān)系。一個關(guān)系的邏輯結(jié)構(gòu)就是一張二維表。

34.C

35.內(nèi)模式或物理模式或存儲模式內(nèi)模式或物理模式或存儲模式解析:一個數(shù)據(jù)庫只有一個內(nèi)模式,它是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)庫內(nèi)部的表示方法。例如,記錄的存儲方式是順序存儲、索引按照什么方式組織;數(shù)據(jù)是否壓縮存儲,是否加密等。

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

37.謂詞演算謂詞演算

38.r+b[k]*x

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

40.關(guān)系關(guān)系解析:關(guān)系模型用;維表表示,則每個;維表代表一種關(guān)系。

41.B

42.D解析:先算括號內(nèi)的表達(dá)式,即先對b進(jìn)行左移運算:b的二進(jìn)制為00000010,左移后變?yōu)?0001000,然后再與a進(jìn)行異或運算(參與運算的兩個對應(yīng)位相同,則為0,相異則為1),結(jié)果為00001001,換算成十進(jìn)制數(shù)結(jié)果為9。對于左移運算也可直接用此規(guī)則:左移1位相當(dāng)于該數(shù)乘以2,左移2位相當(dāng)于該數(shù)乘以22=4,依此類推。

43.C解析:strcat(s1,s2)是把s2字符串連接到s1字符串末尾,strcpy(s1,s2)是把s2字符串復(fù)制給s1字符串,要保證s1能容納下連接或復(fù)制后的字符串。

44.C解析:for語句中的表達(dá)式可以部分或全部省略,但兩個“;”不能省略,若3個表達(dá)式均省略,會因為缺少條件判斷,導(dǎo)致循環(huán)無限執(zhí)行,而形成死循環(huán)。本題中當(dāng)i的值為5的時候,循環(huán)終止。

45.A解析:該題考查的是遞歸函數(shù)的調(diào)用,題中讀fun函數(shù)進(jìn)行了遞歸調(diào)用,第1次調(diào)用:fun(3)n=3s=3-fun(2);第二次調(diào)用時:fun(2)n=2s=2返回第一次調(diào)用后,s=3-2=1。

46.B

47.A解析:本題考查文件使用方式標(biāo)識符,以“a+”方式打開一個己存在的文件,則表示保留文件中原有的數(shù)據(jù),文件的位置指針在文件末尾,此時,可以進(jìn)行追加或讀操作。

48.D解析:這個題目的功能是實現(xiàn)兩個有序字符串,合并成一個新的有序的字符串。

49.B解析:在C語言中,可以用break語句和continue語句跳出本層循環(huán)和結(jié)束本次循環(huán)。goto語句可跳出多層循環(huán),如果在函數(shù)的循環(huán)體內(nèi)使用return語句,就會直接結(jié)束循環(huán)返回函數(shù)值。

50.D解析:軟盤中有病毒,有可能打開軟盤就會感染機(jī)器,因此最好的辦法是直接格式化。

51.C解析:在關(guān)系模型的數(shù)據(jù)語言中,一般除了運用常規(guī)的集合運算(并、交、差、笛卡爾積等),還定義了一些專門的關(guān)系運算,如投影、選擇、連接等。前者是將關(guān)系(即二維表)看成是元組的集合,這些運算主要是從二維表的行的方向來進(jìn)行運算的。后者是從二維表的列的方向來進(jìn)行運算的。

52.A解析:本題中p[4]='cd',所以strlen(p[4])=2。

53.C解析:本題考查變量的自加“++”和自減“--”問題。當(dāng)y的值為9、6或3時,if語句的條件成立,執(zhí)行輸出語句,輸出表達(dá)式--y的值,y的自減要先于輸出語句執(zhí)行,故輸出結(jié)果為852。

54.C解析:函數(shù)strcmp(字符串1,字符串2)作用是將”字符串1”和”字符串2”進(jìn)行比較,如果“字符串1”》”字符串2”,返回一個大于0的整數(shù)值;如果“字符串1”<“字符串2”,返回一個小于0的整數(shù)值;如果”字符串1”=“字符串2”,返回0。函數(shù)strcpy(字符串?dāng)?shù)組名,字符串,[整型表達(dá)式])的作用是將“字符串”的前“整型表達(dá)式”個字符有入到指定的“字符數(shù)組”中,若省略“整型表達(dá)式”,則將整個“字符串”存入,字符數(shù)組”中.函數(shù)f()的功能是利用選擇法把一個具有n行的二維數(shù)組中按行存放的n個字符串由大到小排序。在主函數(shù)中定義了一個二維字符數(shù)組p并給它按行賦初值,然后調(diào)用f()函數(shù);把它按行從大到小排列。字符串比較大小的標(biāo)準(zhǔn)是從第一個字符開始依次向右比較,遇到某一個字符大,該字符所在的字符串就是較大的字符串。由此可知最大的字符串為“dcdbe”,排序后存放在第一行,其首地址為P[0],在輸出語句輸出的p[0]指向的字符串長度是5。所以4個選項中C正確。

55.C解析:考查帶參數(shù)的宏替換。宏替換不像函數(shù)調(diào)用要進(jìn)行參數(shù)值的計算、傳遞等,而只是簡單按照原格式進(jìn)行字符串的替換。

56.B解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。在執(zhí)行函數(shù)func時,由于全局定義了一個變量b,所以在函數(shù)體中執(zhí)行時b=2+1=3,最終t=2+3=5。

57.B解析:選項A),在賦值表達(dá)式中,賦值號的左邊只能是變量或者是代表某個存儲單元的表達(dá)式,不能是任意表達(dá)式。

在判斷選項B)時首先應(yīng)該建立這桿的概念,整型變量中只能存放整型數(shù),實型變量中能存放實型數(shù),也能存放整型數(shù)。

選項C),執(zhí)行表達(dá)式a=b后,將把變量b存儲單元中的值賦給變量a,從而覆蓋a中原有的值,但b中原有的值并不改變。

選項D),在C程序中,求余運算符“%”兩邊的類型均為整型數(shù)據(jù)。

58.C解析:當(dāng)switch后面括弧內(nèi)的表達(dá)式的值與某一個case后面的常量的表達(dá)式的值相等時,就執(zhí)行此case后面的語句,若所有的case中的常量表達(dá)式的值都沒有與表達(dá)式的值匹配的,就執(zhí)行default后面的語句。

59.A解析:strcmp(str1,str2)是比較字符串str1和sir2,當(dāng)兩字符串相等時,返回值為0,不相等時返回值為非0;所以此段程序的功能是在未接收到字符串“theend”時,讀入字符并輸出。

60.B解析:選項A的錯誤在于,先已經(jīng)把q結(jié)點給釋放,無法再進(jìn)行余下語句了:選項C和D的錯誤在于因為有了q=(*q).next做了賦值,則free(q)釋放了原來q后面的一個結(jié)點。

61.D

62.B(x,y)考查逗號表達(dá)式,逗號運算符的結(jié)合性為從左到右,因此,最后一個表達(dá)式的值就是此逗號表達(dá)式的值,因此選項B)正確。

63.C2(n-1)

=2(5-1)=16

64.Aaut0:函數(shù)中的局部變量動態(tài)地分配存儲空間,數(shù)據(jù)存儲在動態(tài)存儲區(qū)中,在調(diào)用該函數(shù)時系統(tǒng)會給它們分配存儲空間,在函數(shù)調(diào)用結(jié)束時就自動釋放這些存儲空間。register:為了提高效率。c語言允許將局部變量的值放在cPu中的寄存器中,這種變量叫“寄存器變量”,只有局部自動變量和形式參數(shù)可以作為寄存器變量。extern:外部變量(全局變量)是在函數(shù)的外部定義的,它的作用域為從變量定義處開始,到本程序文件的末尾。如果外部變量不在文件的開頭定義,其有效的作用范圍只限于定義處到文件末尾。static:靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元,在程序整個運行期間都不釋放。根據(jù)以上分析可知,故本題答案為A)。

65.A二維數(shù)組名是指向指針的指針,所以a和q都為指向指針的指針,而P為指向int類型的指針。所以選項A)是將一個指向int類型的指針用來指向一個指針的指針,顯然是錯誤的。其他幾個選項都是正確的賦值,其中選項D)是用&返回整數(shù)的地址,然后賦值給P。

66.B

67.B解析:編譯時,編譯系統(tǒng)不為局部變量分配內(nèi)存單元,而是在程序運行中,當(dāng)局部變量所在的函數(shù)被調(diào)用時,編譯系統(tǒng)根據(jù)需要要臨時分配內(nèi)存,調(diào)用結(jié)束空間釋放;全局變量一經(jīng)定義,編譯系統(tǒng)為其分配固定的內(nèi)存單元,在程序運行的自始至終都占用固定的單元。在考慮內(nèi)存不定的情況下,最好使用全局變量。

68.D二維數(shù)組進(jìn)行初始化時可以按照分段進(jìn)行賦值,將每一行看成一段,每一段的個數(shù)為列數(shù)。也可以按行連續(xù)賦值,不用分段,將所有的數(shù)值寫成一行,系統(tǒng)會在數(shù)組每一行的元素個數(shù)與列數(shù)相同時,從下一行開始繼續(xù)賦值。也可以對部分?jǐn)?shù)組賦初值,未賦初值的元素自動取0。題目中可以看成是對數(shù)組按行進(jìn)行連續(xù)賦值,并且只給出了第一行第一列的數(shù)值0,對于未賦值的元素,系統(tǒng)自動取0,故整個數(shù)組中的每個元素都可以取初值0。

69.B用戶自定義標(biāo)識符不能與關(guān)鍵字相同。但可以與庫函數(shù)名相同,只是一般不建議用戶這么做。

70.C

71.B\nFunl是輸出局部變量的值,fun2是把全局變量的值改成3和4,所以輸出的結(jié)果是5634。

\n

72.A

73.A由于內(nèi)層循環(huán)for(k=1;k<3;k++)后面直接跟了空語句“;”,因此在循環(huán)內(nèi)部什么操作也不做,執(zhí)行完內(nèi)層循環(huán)后執(zhí)行打印語句,所以打印了一個“*,’故本題答案A)。

74.C

75.B

76.B本題主要考查運算符的優(yōu)先級。在C語言中包含算術(shù)運算符、關(guān)系運算符和邏輯運算符等。這些運算符的優(yōu)先級和結(jié)合方式在我們的教材《30天通過計算機(jī)等級考試:二級C語言》中可以查閱到。題目中給出運算符優(yōu)先級從高到低依次為sizeof、<<、^、&=。因此本題的答案選B。

77.B

78.C

79.A

80.A

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

\n

81.(1)錯誤:str=P;

正確:p=str;

(2)錯誤:i++;

正確:i++;p++;

(3)錯誤:a[i]=0;

正確:a[i]=ˊ\0ˊ;

【解析】由函數(shù)proc()可知,變量p是指向字符串的指針,其初始化應(yīng)為字符串首地址,因此,“str=p;”應(yīng)改為“p=str;”;將P指向的字符串中的每一個字符插在m個*之后,并存放在字符串?dāng)?shù)組a中,因此,“i++;”應(yīng)改為“i++;p++;”;操作完成后要為字符串?dāng)?shù)組添加結(jié)束符,因此“a[i]=0;”應(yīng)改為“a[i]=ˊ\0ˊ;”。

82.voidfun(int(*s)[10],int*b,int*n,intmm,intnn){inti,j;for(j=0;j<nn;j++)/*將二維數(shù)組中的數(shù)據(jù)按列的順序依次存入一維數(shù)組中*/for(i=0;i<=""p="">{b[*n]=*(*(s+i)+j);*n=*n+1;/*通過指針返回元素個數(shù)*/}}題目要求實現(xiàn)將二維數(shù)組元素存入一維數(shù)組。使用for循環(huán)語句來控制二維數(shù)組元素的下標(biāo),同時使用指針變量配合操作??梢杂脙蓚€循環(huán)來處理問題,由于是按列的順序取出,因此第1個循環(huán)用于控制列下標(biāo),第2個循環(huán)用于控制行下標(biāo)。2021-2022年浙江省湖州市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.abcdefghijklmnopq

B.afgebcdhnopqmijklhnopqmijkl

C.efgabcdmnopqhijkl

D.mijklhnopqebcdafg

2.在最壞情況下比較次數(shù)相同的是()。A.冒泡排序與快速排序B.簡單插入排序與希爾排序C.簡單選擇排序與堆排序D.快速排序與希爾排序

3.定義int*swap()指的是______。

A.—個返回整型值的函數(shù)swap()

B.一個返回指向整型值指針的函swap()

C.一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值

D.以上說法均錯

4.將兩個字符串連接起來組成一個字符串時,選用()函數(shù)。A.strlen()B.strcpy()C.strcat()D.strcmp()

5.設(shè)R是一個二元關(guān)系,S是一個三元關(guān)系,則下列運算中正確的是()。

A.R-SB.R×SC.R∩SD.R∪S

6.

讀取二進(jìn)制文件的函數(shù)調(diào)用形式為:fread(buffersize,count,fp);,其中buffer代表的是()。

A.一個文件指針,指向待讀取的文件

B.一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)

C.一個內(nèi)存塊的首地址,代表讀人數(shù)據(jù)存放的地址

D.一個內(nèi)存塊的字節(jié)數(shù)

7.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.Sun,f,90,Sun,f,90

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

C.Zhao,m,85,Qian,f,95

D.Sun,f,90,Qian,f,95

8.程序流程圖中帶有箭頭的線段表示的是()。

A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系

9.有三個關(guān)系R、S和T如下:由關(guān)系R和S得到關(guān)系T的操作是()。A.自然連接B.交C.除D.并

10.若變量已正確定義,有下列程序段:inta=3,b=5,c=7;if(a>B)a=b;c=a;if(c!=A)c=b;printf("%d,%d,%d\n",a,b,C);其輸出結(jié)果是()。A.程序段有語法錯B.3,5,3C.3,5,5D.3,5,7

11.現(xiàn)有如下定義語句int*p,s[20],i;p=s;表示數(shù)組元素s[i]的表達(dá)式不正確的是

A.*(s+i)B.*(p+i)C.*(s=s+i)D.*(p=p+i)

12.設(shè)"char**s;",以下正確的表達(dá)式是()。

A.s="computer";B.*s="computer";C.**s="computer";D.*s='c';

13.對線性表進(jìn)行二分法檢索,其前提條件是()。

A.線性表以順序方式存儲,并按關(guān)鍵碼值排好序

B.線性表以順序方式存儲,并按關(guān)鍵碼的檢索頻率排好序

C.線性表以鏈?zhǔn)椒绞酱鎯?,并按關(guān)鍵碼值排好序

D.線性表以鏈?zhǔn)椒绞酱鎯?,并按關(guān)鍵碼的檢索頻率排好序

14.下面關(guān)于圖的存儲的敘述中正確的是()。

A.用鄰接表法存儲圖,占用的存儲空間大小只與圖中邊數(shù)有關(guān),而與頂點個數(shù)無關(guān)

B.用鄰接表法存儲圖,占用的存儲空間大小與圖中邊數(shù)和頂點個數(shù)都有關(guān)

C.用鄰接矩陣法存儲圖,占用的存儲空間大小與圖中頂點個數(shù)和邊數(shù)無關(guān)

D.用鄰接矩陣存儲圖,占用的存儲空間大小只與圖中邊數(shù)有關(guān),而與頂點個數(shù)無關(guān)

15.有以下程序:#includeMain(){charc1.c2;.c1='A'+'8'-'4';c2='A'+'8'-'5';.printf("%c,%d\n",,c1.c2);}已知字母A的ASCI碼為65.程序運行后的輸出結(jié)果是()。A.E.68B.D.69C.E,DD.輸出無定值

16.

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

A.函數(shù)的返回值類型不能是結(jié)構(gòu)體類型,只能是簡單類型

B.函數(shù)可以返回指向結(jié)構(gòu)體變量的指針

C.可以通過指向結(jié)構(gòu)體變量的指針訪問所指結(jié)構(gòu)體變量的任何成員

D.只要類型相同,結(jié)構(gòu)體變量之間可以整體賦值

18.

19.對兩個數(shù)組a和b進(jìn)行下列初始化:charm[]1="l234567":charn[]={1,2,3,4,5,6,7);則下列敘述正確的是()。A.數(shù)組m與數(shù)組n完全相同B.數(shù)組m與數(shù)組n長度相同C.數(shù)組m比數(shù)組n長1D.數(shù)組m與數(shù)組n中都存放字符串

20.

二、2.填空題(20題)21.以下程序的功能是【】。

main()

{intnum[10]={10,1,-20,-203,-21,2,-2,-2,11,-21};

intsum=0,i;

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

if(num[i]>0)

sum=num[i]+sum;

printf("sum=%6d",sum);

}

22.下面程序的功能是用來統(tǒng)計文件中字符個數(shù)。請?zhí)羁铡?/p>

#include"stdio.h"

main()

{longcount=OL;

FILE*fp=【】("text.dat","r");

if(fp==0)

{printf("Openerror\n");

exit(0);

}

while(【】)

{

fgetc(fp);

count++;

}

fclise(fp);

printf("%1d\n",count);

}

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

main()

{inta[]={31,27,20,12,6,1},*p=a;

p++;

printf("%d\n",*(p+2));

}

24.下面程序的功能是將一個字符串str的內(nèi)容顛倒過來,請?zhí)羁铡?/p>

main()

{

inti,j,【】;charstr[]={"1234567");

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;}

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

}

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

main()

{char*p[]={"BOOL","OPK","H","SP"};

inti;

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

26.以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值。請?zhí)羁铡?/p>

#include<stdio,h>

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

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

prinff("\n");

}

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

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

{x=ar[i][0];'

for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

【】=x;

}

}

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

main()

{ints=0,i=1;

while(s<=10)

{S=S+i*i;

i++;

b

}

printf("%d",--i);

}

28.實現(xiàn)程序可將磁盤中的一個文件復(fù)制到另一個文件中,兩個文件的文件名在可執(zhí)行命令的命令行中(相當(dāng)于copy命令),假定文件在當(dāng)前目錄下。請補(bǔ)全程序。

#include<stdio.h>

voidmain(intargc,char*argv[])

{FILE*f1,*f2;

if(argc<【】)

{printf("parametererror!\n");exit(0);}

f1=fopen(argv[1],"r");

f2=fopen(argv[2],"w");

while(【】)fputc(fgetc(f1),f2);

fclose(f1);

fclose(f2);

}

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

main()

{inti,sum;

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

sum+=i;

primf("%d",sum);

}

30.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

#include<stdio.h>

main()

intt=0.s=0,i:

for(i=1;i<=5;i++){t=i+【】;s=s+t;}

prinff("s=%d\n".s);}

31.在軟件維護(hù)時,對測試階段未發(fā)現(xiàn)的錯誤進(jìn)行測試、診斷、定位、糾錯直至回歸測試的過程稱為【】。

32.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及列數(shù)據(jù)的操作運算。

33.在關(guān)系模型中,把數(shù)據(jù)看成是二維表,每一個二維表稱為一個【】。

34.有以下程序main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序執(zhí)行后的輸出結(jié)果是

35.數(shù)據(jù)的物理結(jié)構(gòu)在計算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的【】。

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

37.關(guān)系數(shù)據(jù)庫的關(guān)系演算語言是以【】為基礎(chǔ)的DML語言。

38.以下fun函數(shù)的功能是:累加數(shù)組元素中的值,n為數(shù)組中元素的個數(shù),累加的和值放入x所指的存儲單元中。請?zhí)羁铡?/p>

fun(intb[],intn,int*x)

{intk,r=0;

for(k=0,k<n;k++)r=【】;

【】=r;

}

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

#include"stdio.h"

main()

{charfun(char,int);

chara='A';

intb=13;

a=fun(a,b);

putchar(a);}

charfun(chara,intb)

{chark;

k=a+b;

returnk;}

40.在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個______。

三、1.選擇題(20題)41.已知一個文件中存放若干工人檔案記錄,其數(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);

42.設(shè)有以下語句:inta=1,b=2,c;c=a∧(b<<2);執(zhí)行后,c的值為()。

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

43.函數(shù)調(diào)用strcat(strcpy(str1,str2),str3)的功能是()。

A.將字符串str1復(fù)制到字符串str2中后再連接到字符串str3之后

B.將字符串str1連接到字符串str2之后再復(fù)制到字符串str3之后

C.將字符串str2復(fù)制到字符串str1中后再將字符串str3連接到字符串str1之后

D.將字符串str2連接到字符串str1之后再將字符串str1復(fù)制到字符串str3中

44.執(zhí)行語句for(i=1;i++<4;);后變量i的值是______。

A.3B.4C.5D.不定

45.以下程序的輸出結(jié)果是______。longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%ld\n",fun(3));}

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

46.若要顯示或打印漢字將用到漢字編碼中的()

A.輸入碼B.字型碼C.機(jī)內(nèi)碼D.交換碼

47.若以"a+"方式打開一個已存在的文件,則下列敘述正確的是()。

A.文件打開時,原有文件內(nèi)容不被刪除,位置指針移到文件末尾,可以進(jìn)行添加或讀操作

B.文件打開時,原有文件內(nèi)容不被刪除,只能進(jìn)行讀操作

C.文件打開時,原有文件內(nèi)容被刪除,只能進(jìn)行寫操作

D.以上三種說法都不正確

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

#include"stdio.h"

#include"string.h"

main()

{chara[]="acfijk";/*這里是有序的字符序列*/

charb[]="befijklqswz";/*這里是有序的字符序列*/

charc[80],*p;

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

while(a[i]!=′\0′&&b[j]!=′\0′)

{if(a[i]<b[j])c[k++]=a[i++];

elseif(a[i]>b[j])c[k++]=b[j++];

else{c[k++]=b[j++];

i++;}}

while(a[i]==′\0′&&b[j]!=′\0′)

c[k++]=b[j++];

while(a[i]!=′\0′&&b[j]==′\0′)

c[k++]=a[i++];

c[k]=′\0′;

puts(c);}

則輸出結(jié)果是

A.acfijkbefijklqswz

B.abceffiijjkklqswz

C.befijklqswzacfijk

D.abcefijklqswz

49.下面的關(guān)鍵字中,不能夠從循環(huán)體中跳到循環(huán)體外的是______。

A.gotoB.breakC.returnD.continue

50.某片軟盤上已染有病毒,為防止該病毒傳染計算機(jī)系統(tǒng),正確的措施是______。

A.刪除軟盤上的所有文件即刪除了病毒B.將該軟盤進(jìn)行寫保護(hù)C.將軟盤放一段時間后再用D.將該軟盤重新格式化

51.下列關(guān)系運算的敘述中,正確的是()。A.A.投影、選擇、連接是從二維表行的方向進(jìn)行的運算

B.并、交、差是從二維表的列的方向來進(jìn)行運算

C.投影、選擇、連接是從二維表列的方向進(jìn)行的運算

D.以上3種說法都不對

52.有以下程序:main(){char*p[10]={"abc","aabdfg","dcdbe","abbcf',"cd"};printf("%d\n",strlen(p[4]));}執(zhí)行后的輸出結(jié)果是______。

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

53.有以F程序#include<stdio.h>main(){inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的運行結(jié)果是

A.741B.963C.852D.875421

54.以下程序中函數(shù)f的功能是將n個字符串按由大到小的順序進(jìn)行排序。#include<string.h>voidf(charp[][10],intn){chart[20];inti,j;for(i=0;i<n-1;i++)for(j=i+l;j<n;j++)if(strcmp(p[i],p[j])<0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[][lO]-{"abc","aabdfg","abbd","dcdbe","cd"};inti;f(p,5);printf("%dkn",strlen(p[0]));}程序運{亍后的輸出結(jié)果是

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

55.以下程序的運行結(jié)果是

#defineMAX(A,B)(A)>(B)?(A):(B)

#definePRINT(Y)printf("Y=%d\t",Y)

main()

{inta=1,b=2,c=3,d=4,t;

t=MAX(a+b,c+d);

PRINT(t);}

A.Y=3B.存在語法錯誤C.Y=7D.Y=0

56.下列程序的輸出結(jié)果是()。#include<stdio.h>intb=2;intfunc(int*a){b+=*a;returnb;}main(){inta=1,t=2;t+=func(&a);printf("%d\n",t);}

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

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

A.在賦值表達(dá)式中,賦值號的左邊既可以是變量,也可以是任意表達(dá)式

B.實型變量中允許存放整型數(shù)

C.若a和b類型相同,在執(zhí)行了賦值a=b后,b中的值將放入a中,但b中的值不變

D.在C程序中,求余運算符“%”兩邊的類型相同時才能進(jìn)行運算

58.下面程序的輸出是______。main(){char*s="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default:v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=8,v2=8,v3=8,v4=8

59.對下述程序的判斷中,正確的是()。#include<stdio.h>voidmain(){char*P,s[256];p=s;while(strcmp(s,"theend")){printf("Inputthestring:");gets(s);while(*P)putchar(*p++);}}

A.此程序循環(huán)接收字符串并輸出,直到接收到字符串“theend”為止

B.此程序循環(huán)接收字符串,接收到字符串“theend”則輸出,否則程序終止

C.此程序循環(huán)接收字符串并輸出,直到接收字符串“theend”為止,但因為代碼有錯誤,程序不能正常工作

D.此程序循環(huán)接收字符串并將其連接在一起,直到接收字符串“theend”為止,輸出連接在一起的字符串

60.假定建立了以下鏈表結(jié)構(gòu),指針p、q分別指向如圖所示的結(jié)點,則以下可以將q所指結(jié)點從鏈表中刪除并釋放該結(jié)點的語句組是______。

A.free(q);p->next=q->next;

B.(*p).next=(*q).next;free(q);

C.q=(*q).next;(*p).next=q;free(q);

D.q=q->next;p->next=q;p=p->next;free(p);

四、選擇題(20題)61.

62.設(shè)有如下程序段:

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

A.輸出值為2004

B.輸出值為2008

C.運行時產(chǎn)生出錯信息

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

63.在深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為A.32B.31C.16D.15

64.在c語言中,只有在使用時才占用內(nèi)存單元的變量,其存儲類型是()。A.aut0和Iegister

B.extern和register

C.aut0和static

D.static和register

65.若有定義語句:inta[4][10],*P,*q[4];且0<=i<4,則錯誤的賦值是()。

A.P=aB.q[i]=a[i]C.p=a[i]D.p=&a[2][1]

66.

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

A.在C語言中調(diào)用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參

B.在C的函數(shù)中,最好使用全局變量

C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)

D.自動變量實質(zhì)上是一個函數(shù)內(nèi)部的局部變量

68.若有說明:inta[3][4]={0};,則下面正確的敘述是

A.只初始化了第一個元素,即a[0][0]可得到初值0

B.此初始化語句不正確

C.?dāng)?shù)組a中各元素都可得到初值,但其值不一定為0

D.?dāng)?shù)組a中每個元素均可得到初值0

69.以下能定義為用戶標(biāo)識符的是()。

A.printfB.charC._8abcD.Void

70.

71.有以下程序:

#include<stdio.h>

inta=1,b=2:

voidfunl(inta,intb)

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

voidfun2()

{a=3;b=4;}

main()

{funl(5,6);fun2();

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

}

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

A.1256

B.5634

C.5612

D.3456

72.

73.以下程序段中的變量已正確定義

74.

75.

76.第

1

溫馨提示

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

評論

0/150

提交評論