2021-2022年湖南省邵陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第1頁
2021-2022年湖南省邵陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第2頁
2021-2022年湖南省邵陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第3頁
2021-2022年湖南省邵陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第4頁
2021-2022年湖南省邵陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021-2022年湖南省邵陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.設(shè)有定義:intn=0,*p=&n,**q=&p;則下列選項(xiàng)中正確的賦值語句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

2.

3.

4.對一個關(guān)系投影操作以后,新關(guān)系的元組個數(shù)______原來關(guān)系的元組個數(shù)。

A.小于B.小于或等于C.等于D.大于

5.在C語言程序中,main函數(shù)的位置()

A.必須作為第一個函數(shù)B.必須作為最后一個函數(shù)C.可以任意D.必須放在它所調(diào)用的函數(shù)之后

6.有以下程序:程序運(yùn)行后的輸出結(jié)果是()。A.13442B.13431C.01234D.02431

7.如有inta=11;則表達(dá)式(a++*1/3)的值是()。

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

8.有以下程序:#include<stdio.h>structstu{intnum;charname[l0];intage;};voidfun(structstu*p){printf("%s\n",p->name);}main(){structstux[3]={{01,"Zhang",20),{02,"Wang",l9},{03,"Zha0",l8}};fun(x+2);}程序運(yùn)行后的輸出結(jié)果是()。A.ZhangB.ZhaoC.WangD.19

9.有以下程序:#include<stdio.h>main(){inta=-2,b=2;for(;++a&&--b;)printf(“%d,%d\n”,a,b);}程序運(yùn)行后的輸出結(jié)果是()。

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

10.若有以下語句:typedefstructS{intg;charh;}T;以下敘述中正確的是()。A.可用S定義結(jié)構(gòu)體變量B.可用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量

11.若在以下定義和賦值語句,則才s數(shù)組的第i行第j列(假設(shè)i,j已正確說明并賦值)元素地址的合法引用為ints[2][3]={0},(*p)[3];p=s;

A.*(*(p+i)+j)B.*(p[i]+j)C.(p+i)+jD.(*(p+i))[j]

12.在定義inta[5][6];后,數(shù)組a中的第10個元素是()。(設(shè)a[0][0]為第一個元素)

A.a[2][5]B.a[2][4]C.a[1][3]D.a[1][5]

13.C語言中的標(biāo)識符分為關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符,以下敘述正確的是()。

A.預(yù)定義標(biāo)識符(如庫函數(shù)中的函數(shù)名)可用做用戶標(biāo)識符,但失去原有含義

B.用戶標(biāo)識符可以由字母和數(shù)字任意順序組成

C.在標(biāo)識符中大寫字母和小寫字母被認(rèn)為是相同的字符

D.關(guān)鍵字可用做用戶標(biāo)識符,但失去原有含義

14.若有定義inta=5,b=7;,則表達(dá)式a%=(b%2)運(yùn)算后,a的值為()。

A.0B.1C.11D.3

15.有以下定義和語句:structworkers{intnum;charname[20];charC;struct{intday;intmonth;intyear;)S;};structworkersw,*pw;pw=&w;能給w中year成員賦1980的語句是()。A.*pw.year=1980;

B.w.year=1980;

C.pw->year=1980

D.w.S.year=1980;

16.下列不屬于軟件工程的3個要素的是______。

A.工具B.過程C.方法D.環(huán)境

17.已知二叉樹后序遍歷序列是dabeC,中序遍歷序列是debaC,它的前序遍歷序列是()。

A.aChedB.deCabC.deabeD.Cedba

18.下列語句組中正確的是()。

A.char*s;s=“Olympic”;

B.chars[7];s=“Olympic”;

C.char*s;s={“Olympic”};

D.chars[7];s={“Olympic”};

19.當(dāng)執(zhí)行下面的程序時,如果輸入ABC,則輸出結(jié)罘是()。#include<stdio.h>#include<string.h>main(){charss[10]="1,2,3,4,5":gets(ss);strcat(ss,"6789");printf("%s\n",ss);}A.ABC6789B.ABC67C.12345ABC6D.ABC456789

20.下面程序段的時間復(fù)雜度為()。

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

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

#include<stdio.h>

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

執(zhí)行后的輸出結(jié)果是【】。

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

23.診斷和改正程序中錯誤的工作通常稱為【】。

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

main()

{imti,sum;

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

sum+=i;

printf("%d",sum);

}

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

26.在關(guān)系模型中,二維表的行稱為______。

27.棧滿時,再作入棧操作會產(chǎn)生【】,??諘r,刪除操作會產(chǎn)生【】。

28.在面向?qū)ο蠓椒ㄖ?,【】描述的是具有相似屬性與操作的一組對象。

29.以下函數(shù)sstrcat()的功能是實(shí)現(xiàn)字符串的連接,即將t所指字符串復(fù)制到s所指字符串的尾部。例如:s所指字符串為abed,t所指字符串為efgh,函數(shù)調(diào)用后s所指字符串為abodefgh。請?zhí)羁铡?/p>

#include<string.h>

voidsstrcat(char*s,char*t)

{intn;

n=strlen(s);

while(*(s+n)=【】){s++;t++;}

}

30.若有如下定義,則該數(shù)組的第一維大小為【】。

intb[][4]={1,2,3,4,5,6,7,8,9);

31.以下程序中函數(shù)f的功能是在數(shù)組x的n個數(shù)(假定n個數(shù)互不相同)中找出最大最小數(shù),將其中最小的數(shù)與第一個數(shù)對換,把最大的數(shù)與最后一個數(shù)對換。請?zhí)羁铡?/p>

#include<stdio.h>

voidf(intx[],intn)

{intp0,p1,i,j,t,m;

i=j=x[0];p0=p1=0;

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

{if(x[m]>i){i=x[m];p0=m;}

elseif(x[m]<j){j=x[m];p1=m;}

}

t=x[p0];x[p0]=x[n-1];x[n-1]=t;

t=x[p1];x[p1]=【】;【】=t;

}

main()

{inta[10],u;

for(u=0;u<10;u++)scanf("%d",&a[u]);

f(a,10);

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

printf("\n");

}

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

intn='c';

switch(n++)

{default:printf("error");break;

case'a':printf("good");break;

case'c':printf("morning");

case'd':printf("class");

}

33.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);【】;

}while(n!=0);

printf("\n");

}

34.函數(shù)pi的功能是根據(jù)以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+...+1(n*n)

現(xiàn)在請你在下面的函數(shù)中填空,完成求π的功能。

#include"math.h"

{doubles=0.0;longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*S));

}

35.在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)定義語言、數(shù)據(jù)操縱語言和數(shù)據(jù)控制語言中,【】負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建。

36.若有定義doublea[5];,則a數(shù)組元素下標(biāo)的上限為______。

37.當(dāng)線性表的元素總數(shù)基本穩(wěn)定,且很少進(jìn)行插入和刪除操作,并要求以很快的速度存取線性表中的數(shù)據(jù)元素時,應(yīng)采用【】存儲結(jié)構(gòu)。

38.若有以下程序

main()

{intp,a=5;

if(p=a!=0)

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

else

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

}

執(zhí)行后輸出結(jié)果是【】。

39.若按功能劃分,軟件測試的方法通常分為白盒測試方法和【】測試方法。

40.表達(dá)式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的數(shù)據(jù)類型為______。

三、1.選擇題(20題)41.有如下程序intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}該程序的輸出結(jié)果是______。

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

42.函數(shù)rewind(fp))的作用是()。

A.使fp指定的文件的位置指針重新定位到文件的開始位置

B.將fp指定的文件的位置指針指向文件中所要求的特定位置

C.使fp指定的文件的位置指針向文件的末尾

D.使fp指定的文件的位置指針自動移至下一個字符位置

43.X、Y、Z被定義為mt型變量,若從鍵盤給X、Y、2輸入數(shù)據(jù),正確的輸入語句是______。

A.INPUTX,Y,Z;

B.scanf("%d%d%d",&X,&Y,&Z);

C.scanf("%d%d%d",X,Y,Z);

D.read("%d%d%d",&X,&Y,&Z);

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

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

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

A.一個C語言程序只能實(shí)現(xiàn)一種算法

B.c程序可以由多個程序文件組成

C.C程序可以由一個或多個函數(shù)組成

D.一個c函數(shù)可以單獨(dú)作為一個C程序文件存在

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

A.指針是一個變量B.指針中存放的是數(shù)值C.指針可以進(jìn)行加、減等算術(shù)運(yùn)算D.指針變量占用存儲空間

47.設(shè)有下面的程序段:chars[]="china";char*p;p=s;則下列敘述正確的是

A.s和p完全相同

B.數(shù)組s中的內(nèi)容和指針變量p中的內(nèi)容相同

C.s數(shù)組長度和p所指向的字符串長度相等

D.*p與s[0]相等

48.概要設(shè)計(jì)是軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計(jì),以下選項(xiàng)中不屬于概要設(shè)計(jì)的是()。A.A.把軟件劃分成模塊B.確定模塊之間的調(diào)用關(guān)系C.確定各個模塊的功能D.設(shè)計(jì)每個模塊的偽代碼

49.以下描述中正確的是

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

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

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

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

50.若有如下語句:intx=3;do{printf("%d\n",x-=2);}wbile(!(--x));則上面程序段()。

A.輸出的是1B.輸出的是1和-2C.輸出的是3和0D.是死循環(huán)

51.以下程序段中,不能正確賦字符串(編譯時系統(tǒng)會提示錯誤)的是()。

A.chars[10]="abcdefg";

B.chart[]="abcdefg",*s=t;

C.chars[10];s="abcdefg";

D.chars[10];strcpy(s,"abcdefg");

52.若有如下定義:unionaa{intn;charc[9];floatx;}a,b,c;則下列敘述中不正確的是()

A.unionaa是定義的共用體類型

B.a,b,c是定義的共用體類型名

C.n、c[9]和x是共用體的成員名

D.a,b,c是定義的共用體變量名

53.下面程序的輸出是______。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

54.以下程序的運(yùn)行結(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

55.在C語言中,運(yùn)算對象必須是整型數(shù)的運(yùn)算符是()。

A.%B.\C.%和\D.**

56.以下程序(程序左邊的數(shù)字為符加的行號)。1#include<str.h>2#include<stdio.h>3main()4{chars[]="string";5puts(s);6strcpy(s,"hello");7printf("%3s\n",s);}

A.沒有錯B.第1行有錯C.第6行有錯D.第7行有錯

57.下述程序向文件輸出的結(jié)果是_______。#include<stdio.h>voidmain(){FILE*fp=fopen("TEST","wb");fprintf(fp,"%d%5.of%c%d",58,76273.0,'-'2278);fclose(fp);}

A.5876273-2278

B.5876273.000000-2278

C.5876273-2278

D.因文件為二進(jìn)制文件而不可讀

58.若有以下說明和定義uniondt{inta;charb;doublec;}data;以下敘述中錯誤的是

A.data的每個成員起始地址都相同

B.變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等

C.程序段:data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000

D.data可以作為函數(shù)的實(shí)參

59.下列程序的輸出結(jié)果是()。main(){inti=1,j=2,k=3;if(i++==1&&(++j==3‖k++==3))printf("%d%d%d\n",i,j,k);}

A.123B.234C.223D.233

60.有以下程序:main(){intx=0,y=5,z=31while(z-->0&&++x<5)y=y-1;printf("%d,%d,%d\n",x,y,z);}程序執(zhí)行后的輸出結(jié)果是______。

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

四、選擇題(20題)61.

62.若x=5,y=3則y*=x+5;y的值為___________.

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

63.支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是()。

A.棧B.樹C.隊(duì)列D.二叉樹

64.有以下程序:

執(zhí)行程序時,給變量X輸入10,程序的輸出結(jié)果是()。

A.54B.55C.65D.45

65.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。

A.EOFB.-lC.非零值D.0

66.下列函數(shù)的功能是()

67.以下程序段完全正確的是()。

68.

69.

70.若有定義語句:doublea,*p=&a;,以下敘述中錯誤的是()。A.定義語句中的*號是一個間址運(yùn)算符

B.定義語句中的*號是一個說明符

C.定義語句中的p只能存放double類型變量的地址

D.定義語句中,*p=&a把變量a的地址作為初值賦給指針變量P

71.

72.

73.設(shè)變量x為float型且已賦值,則以下語句能將x中的數(shù)值保留到小數(shù)點(diǎn)后兩位,并將第3位四舍五入的是()。

A.

B.

C.

D.

74.

75.有以下程序

#include"stdio.h"

main()

{charstr[]="tomeetme",str1[]="toseeyou";

char*p=str,*p1=str1;

inti;

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

if(*(p+i)==*(p1+i))

putchar(*(p+i));

printf("\n");

}

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

A.to

B.tomeet

C.toee

D.程序段不能通過編譯

76.有以下程序:

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

A.120B.11C.6D.21

77.在滿足實(shí)體完整性約束的條件下()。

A.一個關(guān)系中廊該有一個或多個候選關(guān)鍵字

B.一個關(guān)系中只能有一個候選關(guān)鍵字

C.一個關(guān)系中必須有多個候選關(guān)鍵字

D.一個關(guān)系中可以沒有候選關(guān)鍵字

78.軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于系統(tǒng)軟件的是():

A.學(xué)生成績管理系統(tǒng)B.ERP系統(tǒng)C.辦公自動化系統(tǒng)D.UNIX系統(tǒng)

79.

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

A.seanf

B.getchar

C.gets

D.getc

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun的功能是:將P所指字符串中的所有字符復(fù)制到b中,要求每復(fù)制三個字符之后插入一個空格。

例如,若給a輸入字符串:ABCDEFGKHHK,調(diào)用函數(shù)后,字符數(shù)組b中的內(nèi)容為:ABCDEFGHIJK。請改正程序中的錯誤,使它能得出正確的結(jié)果。

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

六、程序設(shè)計(jì)題(1題)82.下列程序定義了MM的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)proc(inta[][M]),該函數(shù)的功能是:使數(shù)組左下半三角元素中的值全部置成0。例如,a數(shù)組中的值為:

注意:部分源程序給出如下。

請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。

試題程序:

參考答案

1.D解析:選項(xiàng)A),B),C)的指針賦值表達(dá)方式都不正確,*p=5表達(dá)整數(shù)5放到指針p所指向的存儲單元中。注意:通過指針引用一個存儲單。

2.C

3.B

4.B解析:投影操作是從關(guān)系中選擇某些列,投影后消去了某些屬性,就可能出現(xiàn)重復(fù)元組,根據(jù)關(guān)系的性質(zhì),應(yīng)消去這些完全相同的元組。這樣使得新關(guān)系的元組數(shù)小于或等于原來的元組數(shù)。

5.C

6.Bmain函數(shù)中定義包含5個元素的數(shù)組m,每個元素都是NODE類型。指針p指向數(shù)組第1個元素,指針q指向數(shù)組最后一個元素。while循環(huán)使用p、q從首尾向中間遍歷,遍歷的同時為各個元素賦值。所以第1輪循環(huán),i的值為0,先執(zhí)行的值為++i,后執(zhí)行i++的值也為1,m[0].k和m[4].k的值都為1;接著第2輪循環(huán),i的值為2,先執(zhí)行的值為3,后執(zhí)行i++的值也為3,m[l].k和m[3].k的值都為3;第3輪循環(huán),p和q指向的都是m[2]元素,指針相同,循環(huán)結(jié)束,此時i的值為4,即m[2].k賦值為4。綜上,程序輸出:13431。本題答案為B選項(xiàng)。

7.B

8.Bfun(x+2)表示的是結(jié)構(gòu)體數(shù)組中的第3個元素即{03,"Zhao",l8),而輸出的是name元素,所以答案為B。

9.A在語句“for(;++a&&--b;)”中,for循環(huán)的表達(dá)式1和表達(dá)式3為缺省項(xiàng)。首先判斷條件表達(dá)式“b”。當(dāng)“a=-2,b=2”時,第1次執(zhí)行“++a”和“--b”,條件表達(dá)式為真,循環(huán)條件成立。第2次執(zhí)行“++a”為0,由于運(yùn)算符,當(dāng)?shù)?個條件為假時,不執(zhí)行第2個條件,因此“b=1”,發(fā)生短路,“--b”不再執(zhí)行。因此輸出的最終值為0,1。故本題答案為A選項(xiàng)。

10.B解析:語句typedefstructS{intg;charh;}T的作用是用T作為struetS{intg;charh;)的簡寫,所以選B。

11.A解析:p+i是數(shù)組s的第i+1行的首地址,而*(p+i)則是數(shù)組第i+1行第1列的元素的地址,*(p+i)+j則是第i+1行的第j+1列的地址,*(*(p+i)+j)引用的是數(shù)組元素s[i][j]的值。注意:通過建立一個指針數(shù)組來引用二維數(shù)組元素。

12.C

13.A用戶標(biāo)識符不能以數(shù)字開頭,C語言中標(biāo)識符是區(qū)分大小寫的,關(guān)鍵字不能用做用戶標(biāo)識符。

14.A解析:本題考查'%'運(yùn)算符的使用。運(yùn)算符'%'要求兩個運(yùn)算對象都為整型,其結(jié)果是整數(shù)除法的余數(shù)。本題中表達(dá)式ao%=(b%2)等價于a=a%o(b%2)=5%(7%2)=5%1=0。

15.D結(jié)構(gòu)workers中的成員s是一個嵌套的結(jié)構(gòu)類型定義,因此在給year賦值時,要用“.”運(yùn)算在深入一層訪問到最基本的成員year,只有D項(xiàng)反映出了這一點(diǎn)。

16.D解析:本題考查了軟件工程的基本概念。軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項(xiàng)目的技術(shù)手段;工具支持軟件的開發(fā)、管理和文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制和管理。

17.D二叉樹的遍歷有3種:前序、中序和后序。①前序遍歷訪問根結(jié)點(diǎn),然后按左右順序遍歷子結(jié)點(diǎn);②中序首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹;③后序遍歷首先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點(diǎn)。本題根據(jù)后序和中序遍歷的結(jié)果可以得出二叉樹的結(jié)構(gòu),然后再對其進(jìn)行前序遍歷,正確答案選項(xiàng)為D。

18.A字符型指針變量可以用A選項(xiàng)的賦值方法“Char*s;s=“OlymPiC”;”。C選項(xiàng)的寫法“char*s;s={“Olympic”};”是錯誤的。字符數(shù)組可以在定義的時候初始化,如“chars[]={“Olympic”};”或者“chars[]=“Olympic”;”,但是不可以在定義字符數(shù)組后對數(shù)組名賦值(數(shù)組名是常量,代表數(shù)組首地址),所以B選項(xiàng)和D選項(xiàng)都是錯誤的。對于本例,B、D選項(xiàng)中字符數(shù)組s的大小至少為8,才能存放下字符串(字符串的末尾都有結(jié)束標(biāo)識‘\\0’),同時,此時S為字符數(shù)組的地址,是常量,不能為其賦值。故本題答案為A選項(xiàng)。

19.A當(dāng)執(zhí)行g(shù)ets(ss)后,ss數(shù)組中的元素為ABC,再執(zhí)行strcat(ss,"6789"),strcat的作用,是把6789連接到了ss數(shù)組后面,執(zhí)行完后SS數(shù)組為ABC6789,故選擇A選項(xiàng)。

20.A

21.00解析:本題是計(jì)算5*4*3*2*1*0的值,結(jié)果為0。

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

23.程序調(diào)試程序調(diào)試解析:程序調(diào)試的任務(wù)是診斷和改正程序中的錯誤。程序調(diào)試與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于調(diào)試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調(diào)試主要在開發(fā)階段。

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

25.模塊化模塊化

26.元組元組解析:在關(guān)系型數(shù)據(jù)庫中,用二維表來表示關(guān)系,二維表的表名即關(guān)系名,二維表的行稱為關(guān)系的元組,二維表的列,稱為關(guān)系的屬性。

27.上溢下溢上溢\r\n下溢

28.類類解析:在面向?qū)ο蠓椒ㄖ?,類描述的是具有相似屬性與操作的一組對象。

29.*t*t解析:函數(shù)中首先讓n=strlen(s),所以while循環(huán)的循環(huán)條件表達(dá)式中*(s+n)指向字符串s的結(jié)束標(biāo)志'\\0'處,而該處應(yīng)該等于字符串t的第1個字符,另外循環(huán)體中讓s和t指向下一個字符,即s+n和t同時被移動到下一個位置,所以該處應(yīng)該填*t,即t所指內(nèi)容。當(dāng)t指向字符串結(jié)束標(biāo)志'\\0'的時候,整個循環(huán)條件表達(dá)式的值也為0(“假”)了,循環(huán)結(jié)束。正好滿足將t所指字符串復(fù)制到s所指的字符串的尾部。

30.33解析:在初始化一個含有未指定維度的數(shù)組時,C語言總是在能完全容納初始化列表的基礎(chǔ)上盡可能小地設(shè)定該維度,來作為指定維度的標(biāo)準(zhǔn)。本題有9個初始值,若指定第一維度為2,則數(shù)組含有2*4=8個元素,容納不下,所以指定維度為3,3*4=12,足夠容納了。故應(yīng)該填3。

31.x[0]x[0]x[0],x[0]解析:函數(shù)f()通過for循環(huán)逐個比較數(shù)組x中的元素,循環(huán)結(jié)束后,p0和p1分別表示最大值和最小值在數(shù)組中的下標(biāo)位置,然后按照題意將最大值x[p0]和數(shù)組的最后一個元素x[n-1]交換位置,再將最小值x[p1]和第一個元素(x[0])進(jìn)行交換,所以空白處應(yīng)該填入x[0]。

32.morningclassmorningclass解析:本題考查了兩個知識點(diǎn):①“++,--”運(yùn)算后綴形式是先使用變量原來的值,使用完后再使其增1或減1;②在switch語句中,當(dāng)n='c'時,執(zhí)行“case'c'”,輸出morning;因?yàn)榇司渲袥]有break語句,因此接著執(zhí)行“case'd':”,輸出class,最終輸出結(jié)果為morningclass。

33.n/=10或n=n/10n/=10或n=n/10解析:每次循環(huán)把n除以10所得的商賦給n。

34.0/(i*i)或(double)1/(i*i)0/(i*i)或(double)1/(i*i)解析:表達(dá)式1+1/(2*2)+1/(3*3)+...+1(n*n)可寫為1/(1*1)+1/(2*2)+1/(3*3)+...+1(n*n)

n

即:∑1÷(i×i)

i=1

對應(yīng)的C語言的表達(dá)式s=s+1.0/(i*i)。注:必須要寫成1.0的形式,否則1/(i,i)返回值為其值截尾取整,即恒為0。

35.數(shù)據(jù)定義語言數(shù)據(jù)定義語言解析:在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)定義語言,數(shù)據(jù)操縱語言和數(shù)據(jù)控制語言中,數(shù)據(jù)定義語言負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建,數(shù)據(jù)操縱語言負(fù)責(zé)數(shù)據(jù)的操縱,包括查詢及增、刪、改等操作,數(shù)據(jù)控制語言負(fù)責(zé)數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、恢復(fù)等功能。

36.44解析:一維數(shù)組元素的定義形式為:數(shù)組名[N],則該數(shù)組中元素的下限是0,上限是N-1。

37.順序順序

38.11解析:首先計(jì)算if語句后面的表達(dá)式,根據(jù)運(yùn)算符的優(yōu)先級可知,先算“a!=o”,該值為1,再把1賦值給p,結(jié)果為1(真),執(zhí)行其后的printf語句,輸出的值為1。

39.黑盒軟件測試的方法有三種:動態(tài)測試、靜態(tài)測試和正確性證明。設(shè)計(jì)測試實(shí)例的方法一般有兩類:黑盒測試法和白盒測試法。在使用黑盒法設(shè)計(jì)測試實(shí)例時,測試人員將程序看成一個“黑盒”,即不關(guān)心程序內(nèi)部是如何實(shí)現(xiàn)的,只是檢查程序是否符合它的“功能說明”,所以使用黑盒法設(shè)計(jì)的測試用例完全是根據(jù)程序的功能說明來設(shè)計(jì)的。

40.整型整型解析:上面的表達(dá)式中,通過強(qiáng)制類型轉(zhuǎn)換把最后參與運(yùn)算的數(shù)據(jù)都轉(zhuǎn)換成了int型,所以最后得到的結(jié)果也是int類型。

41.D解析:調(diào)用函數(shù)func(x,y),返回x+y,即7;再調(diào)用函數(shù)func(7,z),返回7+z,即15。

42.A解析:位置指針重返文件頭函數(shù)rewind()的調(diào)用形式為:rewind(fp)。其中,“fp”是指向文件的文件型指針。rewind(fp)的功能是:使fp指定的文件的位置指針重新定位到文件的開始位置。

43.B解析:C語言中沒有輸入輸出語句,它是通過C語言提供的函數(shù)來實(shí)現(xiàn)的,本題C中,應(yīng)為變量地址。

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

45.A答案A

解析:一個C程序可以有一個或多個程序文件,也可以有一個或多個函數(shù),所以一個C語言程序可以實(shí)現(xiàn)多種算法。

46.B解析:指針中存放的是變量的地址,指針也可以進(jìn)行增減運(yùn)算,這時指針移動的最小單位是—個存儲單元,而不是一個字節(jié)。

47.D解析:考查的是字符指針和字符數(shù)組的區(qū)別。選項(xiàng)A)中,s為數(shù)組名,是一個常量地址,而指針p為一個字符變量,不能說兩者完全相同,所以選項(xiàng)A)錯誤。選項(xiàng)B)和C)的說法都不嚴(yán)謹(jǐn),只有選項(xiàng)D)的說法正確。

48.D解析:概要設(shè)計(jì)是軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計(jì),其目的就是要按照需求規(guī)格說明書,把軟件按照功能劃分為多個模塊,然后確定每個模塊要實(shí)現(xiàn)的功能,最后確定模塊之間的調(diào)用關(guān)系。而設(shè)計(jì)每個模塊的偽代碼則屬于詳細(xì)設(shè)計(jì)。所以只有最后一個不屬于概要設(shè)計(jì)范疇。

49.C解析:do-while語句的一般形式為:do循環(huán)體語句while(表達(dá)式);,其中循環(huán)體語句可以是復(fù)合型語句,但必須用花括號括起來。while后必須要有分號作為語句的結(jié)束,在do-while循環(huán)中,不可以省略while。

50.B解析:do-while語句的一般格式為:

do{循環(huán)體語句}while(表達(dá)式);

先執(zhí)行循環(huán)體語句一次,再判斷表達(dá)式的值,若值為真,則繼續(xù)執(zhí)行循環(huán),否則終止循環(huán)。本題中,先執(zhí)行printf('%d\\n',x-=2),值為x=x-2,即為1。然后判斷表達(dá)式的值,!(--x)為真,x=0,繼續(xù)循環(huán)。再次執(zhí)行循環(huán)體語句后,x=-2,此時表達(dá)式!(--x)的值為0,結(jié)束循環(huán)。

51.C解析:選項(xiàng)A中定義了一個字符型數(shù)組并賦初值,故選項(xiàng)A正確;選項(xiàng)B定義了一個字符型數(shù)組t并初始化,然后定義了一個指針變量s并讓它指向t,故選項(xiàng)B正確;選項(xiàng)C先定義?一個長度為10的字符型數(shù)組,然后在給它賦值,這時應(yīng)該分別給數(shù)組中的每個元素賦值,故選項(xiàng)C不正確;選項(xiàng)D中先定義了一個長度為10的字符型數(shù)組s,然后通過字符串拷貝函數(shù)將字符串“abedefs”賦值給它,選項(xiàng)D正確。所以,4個選項(xiàng)中選項(xiàng)C符合題意。

52.B

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

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

55.A解析:在C語言中,“%”運(yùn)算符兩側(cè)的運(yùn)算數(shù)必須是整型。

56.B解析:字符串復(fù)制函數(shù)strcpy包含在頭文件string.h中,因此,程序中的第1行文件包含命令是錯誤的。

57.C解析:fprintf函數(shù)工作時,多個數(shù)據(jù)間不會自動加分隔符,選項(xiàng)A錯誤;浮點(diǎn)數(shù)的輸出格式是“%5.of”表明其小數(shù)部分輸出0位,即沒有輸出,所以選項(xiàng)B也是錯誤的。

58.D解析:選項(xiàng)A),共用體的每個成員的起始地址都相同;選項(xiàng)B),共用體變量所占的內(nèi)存長度等于最長的成員的長度;選項(xiàng)C)因?yàn)槊總€成員的起始地址相同,所以整型數(shù)5以浮點(diǎn)型輸出時為5.000000;選項(xiàng)D)C語言規(guī)定,不能把共用體變量作為函數(shù)的參數(shù)。

59.D解析:本題考查自增運(yùn)算符“++”、邏輯與運(yùn)算符“&&”和邏輯或運(yùn)算符“‖”。自增運(yùn)算符“++”,出現(xiàn)在變量之前(如題中的中++n),表示先使變量的值加1,再使用變量的值進(jìn)行運(yùn)算:出現(xiàn)在變量之后(如題中的n++),表示先使用變量的值進(jìn)行運(yùn)算,再使變量的值加1。當(dāng)邏輯與運(yùn)算符“&&”兩邊的運(yùn)算對象都為真時,邏輯表達(dá)式的值才為真;當(dāng)邏輯或運(yùn)算符“‖”左邊的運(yùn)算對象為真時,其值就為真,不用計(jì)算其右邊的運(yùn)算對象的值.所以根據(jù)運(yùn)算符的優(yōu)先級,題中應(yīng)先計(jì)算內(nèi)層括號中的值。++j是先自加后運(yùn)算,因此運(yùn)算時j的值等于3,所以表達(dá)式++j=3成立,即表達(dá)式的值為1;由于1與任何數(shù)都為進(jìn)行或(‖)運(yùn)算,結(jié)果都為1,因此k=3;最后計(jì)算“&&”之前的表達(dá)式,i++是先運(yùn)算后自加,因此運(yùn)算時i為1,所以i++=1成立,自加1后i=2。if語句的條件為真即“1”,所以輸出i、j、k的值分別是2,3,3。

60.B解析:第一次執(zhí)行while語句時,z=3>0,然后執(zhí)行z--得z=2,執(zhí)行++x得x=1<5,條件成立,執(zhí)行y=y-1=5

-1=4;第二次執(zhí)行while語句時,z=2>0,然后執(zhí)行z--得z=1,執(zhí)行++x得x=2<5,條件成立,執(zhí)行y=y-1=4-1=3;第三次執(zhí)行while語句時,z=1>0,然后執(zhí)行z--得x=0,執(zhí)行++x得x=3<5,條件成立,執(zhí)行y=y-1=3-1=2;第四次執(zhí)行while語句時因z=0,z<0條件不成立,同時執(zhí)行c--得z=-1。即執(zhí)行完while循環(huán)后x=3、y=2、z=-1。

61.A

62.D

63.A棧支持子程序調(diào)用。棧是-種只能在-端進(jìn)行插入或刪除的線性表,在主程序調(diào)用子函數(shù)時要首先保存主程序當(dāng)前的狀態(tài),然后轉(zhuǎn)去執(zhí)行子程序,最終把子程序的執(zhí)行結(jié)果返回到主程序中調(diào)用子程序的位置,繼續(xù)向下執(zhí)行,這種調(diào)用符合棧的特點(diǎn),因此本題的答案為A。

64.B本程序考察的是函數(shù)的遞歸調(diào)用,在調(diào)用一個函數(shù)的過程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用,執(zhí)行結(jié)果為l+2+3+4+5+6+7+8+9+10=55.

65.D本題考查leon(tp)函數(shù),其功能是:測試所指的文件的位置指針是否已達(dá)到文件尾,如果已達(dá)到文件尾,則函數(shù)返回非0值;否則返回0,表示文件未結(jié)束。

66.A將a數(shù)組里元素賦值給b數(shù)組,直到數(shù)組a的末尾,所以選擇A)。

67.AsCanfi垂i數(shù)參數(shù)列表,需要為指針,這個指針必須指向變量,所以答案選擇A)。

68.A

69.C

70.A在變量定義doublea,*p:&a;中,*號是一個指針運(yùn)算符,而非間址運(yùn)算符,因此A)錯誤。

71.A

72.C

73.B(int)(x*100+0.5)把float型數(shù)據(jù)(x*100+0.5)強(qiáng)轉(zhuǎn)成int,這樣就可以去掉小數(shù)點(diǎn),+0.5就是為了四舍五人。例如x=1.234,則(1.234*100+0.5)=123.9.則(int)123.9/100.0=123/100.0=1.23。

74.D

75.C本題屬于綜合性題目,考查的知識點(diǎn)有字符數(shù)組的指針表示,for循環(huán)與if語句的結(jié)合,初始時定義兩個字符數(shù)組:str和str1,用兩個指針p、p1分別指向這兩個數(shù)組,每個數(shù)組中都是長度為8的字符串。定義變量i作為數(shù)組下標(biāo)的增量,if語句表示如果有*(p+i)=*(p1+i),即str[i]=str1[i],則將相同的字符輸出。tomeetme中與toseeyou相同位置上具有的相同字符為toee。

76.Dfun函數(shù)中的變量X為靜態(tài)局部變量,占用固定的內(nèi)存單元,下一次調(diào)用時仍可以保留上次調(diào)用時的值。也就是說,如果多次調(diào)用fun函數(shù),x的定義只在第一次調(diào)用時有效,從第二次調(diào)用開始,x的定義相當(dāng)于不存在,直接使用上次X的值。fun函數(shù)被調(diào)用了5次,每次調(diào)用后的返回值累加到s上。5次調(diào)用后,x的值為6,8的值為1+2+3+4+5+6=21。因此D選項(xiàng)正確。

77.A實(shí)體完整性約束要求關(guān)系的主鍵中屬性值不能為空值,因此本題答案為A)。

78.D系統(tǒng)軟件是管理計(jì)算機(jī)的資源,提高計(jì)算機(jī)的使用效率,為用戶提供各種服務(wù)的軟件。應(yīng)用軟件是為了應(yīng)用于特定的領(lǐng)域而開發(fā)的軟件。選項(xiàng)D屬于系統(tǒng)軟件。選項(xiàng)A、B、C屬于應(yīng)用軟件。故選D選項(xiàng)。

79.B

80.C本題綜合考查了輸入函數(shù)的使用。scanf函數(shù)會將空格視為分隔符,getchar函數(shù)只能輸入單個字符,getc函數(shù)是文件操作函數(shù),顯然都不符合題意。通過gets函數(shù)輸入字符串時,輸入的空格被認(rèn)為是字符串的一個字符。

81.

(1)b[k]=+p;

(2)b[k]=“;k++;

【考點(diǎn)分析】

本題考查:指針類型變量作為函數(shù)的參數(shù),函數(shù)的參數(shù)不僅可以是整型、實(shí)型、字符型等數(shù)據(jù)類型,還可以是指針類型。它的作用是將一個變量的址傳送到另一個函數(shù)中。

【解題思路】

(1)JllN中p是指針型變量作函數(shù)參數(shù),因此給b[k]賦值時出現(xiàn)錯誤0

(2)題目要求賦值3個字符后加一個空格,所以應(yīng)該是先給b[k]賦值空格,然后變量k再加1。

【解題寶典】

C語言中為了表示指針變量和它所指向的變量之間的關(guān)系,在程序中用“*’’符號表示“指向”,例如,pointer代表指針變量,而*pointer是pointer所指向的變量。

82.

【解析】要使數(shù)組左下半三角元素中的值全部置成0,先要找出數(shù)組的下半三角元素,再將其值全部賦值為0。二維數(shù)組中下半三角元素的特點(diǎn)為,其列下標(biāo)小于其行下標(biāo)。根據(jù)這個特點(diǎn),將二維數(shù)組的下半三角元素都賦值為0。

2021-2022年湖南省邵陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.設(shè)有定義:intn=0,*p=&n,**q=&p;則下列選項(xiàng)中正確的賦值語句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

2.

3.

4.對一個關(guān)系投影操作以后,新關(guān)系的元組個數(shù)______原來關(guān)系的元組個數(shù)。

A.小于B.小于或等于C.等于D.大于

5.在C語言程序中,main函數(shù)的位置()

A.必須作為第一個函數(shù)B.必須作為最后一個函數(shù)C.可以任意D.必須放在它所調(diào)用的函數(shù)之后

6.有以下程序:程序運(yùn)行后的輸出結(jié)果是()。A.13442B.13431C.01234D.02431

7.如有inta=11;則表達(dá)式(a++*1/3)的值是()。

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

8.有以下程序:#include<stdio.h>structstu{intnum;charname[l0];intage;};voidfun(structstu*p){printf("%s\n",p->name);}main(){structstux[3]={{01,"Zhang",20),{02,"Wang",l9},{03,"Zha0",l8}};fun(x+2);}程序運(yùn)行后的輸出結(jié)果是()。A.ZhangB.ZhaoC.WangD.19

9.有以下程序:#include<stdio.h>main(){inta=-2,b=2;for(;++a&&--b;)printf(“%d,%d\n”,a,b);}程序運(yùn)行后的輸出結(jié)果是()。

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

10.若有以下語句:typedefstructS{intg;charh;}T;以下敘述中正確的是()。A.可用S定義結(jié)構(gòu)體變量B.可用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量

11.若在以下定義和賦值語句,則才s數(shù)組的第i行第j列(假設(shè)i,j已正確說明并賦值)元素地址的合法引用為ints[2][3]={0},(*p)[3];p=s;

A.*(*(p+i)+j)B.*(p[i]+j)C.(p+i)+jD.(*(p+i))[j]

12.在定義inta[5][6];后,數(shù)組a中的第10個元素是()。(設(shè)a[0][0]為第一個元素)

A.a[2][5]B.a[2][4]C.a[1][3]D.a[1][5]

13.C語言中的標(biāo)識符分為關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符,以下敘述正確的是()。

A.預(yù)定義標(biāo)識符(如庫函數(shù)中的函數(shù)名)可用做用戶標(biāo)識符,但失去原有含義

B.用戶標(biāo)識符可以由字母和數(shù)字任意順序組成

C.在標(biāo)識符中大寫字母和小寫字母被認(rèn)為是相同的字符

D.關(guān)鍵字可用做用戶標(biāo)識符,但失去原有含義

14.若有定義inta=5,b=7;,則表達(dá)式a%=(b%2)運(yùn)算后,a的值為()。

A.0B.1C.11D.3

15.有以下定義和語句:structworkers{intnum;charname[20];charC;struct{intday;intmonth;intyear;)S;};structworkersw,*pw;pw=&w;能給w中year成員賦1980的語句是()。A.*pw.year=1980;

B.w.year=1980;

C.pw->year=1980

D.w.S.year=1980;

16.下列不屬于軟件工程的3個要素的是______。

A.工具B.過程C.方法D.環(huán)境

17.已知二叉樹后序遍歷序列是dabeC,中序遍歷序列是debaC,它的前序遍歷序列是()。

A.aChedB.deCabC.deabeD.Cedba

18.下列語句組中正確的是()。

A.char*s;s=“Olympic”;

B.chars[7];s=“Olympic”;

C.char*s;s={“Olympic”};

D.chars[7];s={“Olympic”};

19.當(dāng)執(zhí)行下面的程序時,如果輸入ABC,則輸出結(jié)罘是()。#include<stdio.h>#include<string.h>main(){charss[10]="1,2,3,4,5":gets(ss);strcat(ss,"6789");printf("%s\n",ss);}A.ABC6789B.ABC67C.12345ABC6D.ABC456789

20.下面程序段的時間復(fù)雜度為()。

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

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

#include<stdio.h>

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

執(zhí)行后的輸出結(jié)果是【】。

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

23.診斷和改正程序中錯誤的工作通常稱為【】。

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

main()

{imti,sum;

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

sum+=i;

printf("%d",sum);

}

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

26.在關(guān)系模型中,二維表的行稱為______。

27.棧滿時,再作入棧操作會產(chǎn)生【】,??諘r,刪除操作會產(chǎn)生【】。

28.在面向?qū)ο蠓椒ㄖ?,【】描述的是具有相似屬性與操作的一組對象。

29.以下函數(shù)sstrcat()的功能是實(shí)現(xiàn)字符串的連接,即將t所指字符串復(fù)制到s所指字符串的尾部。例如:s所指字符串為abed,t所指字符串為efgh,函數(shù)調(diào)用后s所指字符串為abodefgh。請?zhí)羁铡?/p>

#include<string.h>

voidsstrcat(char*s,char*t)

{intn;

n=strlen(s);

while(*(s+n)=【】){s++;t++;}

}

30.若有如下定義,則該數(shù)組的第一維大小為【】。

intb[][4]={1,2,3,4,5,6,7,8,9);

31.以下程序中函數(shù)f的功能是在數(shù)組x的n個數(shù)(假定n個數(shù)互不相同)中找出最大最小數(shù),將其中最小的數(shù)與第一個數(shù)對換,把最大的數(shù)與最后一個數(shù)對換。請?zhí)羁铡?/p>

#include<stdio.h>

voidf(intx[],intn)

{intp0,p1,i,j,t,m;

i=j=x[0];p0=p1=0;

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

{if(x[m]>i){i=x[m];p0=m;}

elseif(x[m]<j){j=x[m];p1=m;}

}

t=x[p0];x[p0]=x[n-1];x[n-1]=t;

t=x[p1];x[p1]=【】;【】=t;

}

main()

{inta[10],u;

for(u=0;u<10;u++)scanf("%d",&a[u]);

f(a,10);

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

printf("\n");

}

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

intn='c';

switch(n++)

{default:printf("error");break;

case'a':printf("good");break;

case'c':printf("morning");

case'd':printf("class");

}

33.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);【】;

}while(n!=0);

printf("\n");

}

34.函數(shù)pi的功能是根據(jù)以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+...+1(n*n)

現(xiàn)在請你在下面的函數(shù)中填空,完成求π的功能。

#include"math.h"

{doubles=0.0;longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*S));

}

35.在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)定義語言、數(shù)據(jù)操縱語言和數(shù)據(jù)控制語言中,【】負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建。

36.若有定義doublea[5];,則a數(shù)組元素下標(biāo)的上限為______。

37.當(dāng)線性表的元素總數(shù)基本穩(wěn)定,且很少進(jìn)行插入和刪除操作,并要求以很快的速度存取線性表中的數(shù)據(jù)元素時,應(yīng)采用【】存儲結(jié)構(gòu)。

38.若有以下程序

main()

{intp,a=5;

if(p=a!=0)

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

else

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

}

執(zhí)行后輸出結(jié)果是【】。

39.若按功能劃分,軟件測試的方法通常分為白盒測試方法和【】測試方法。

40.表達(dá)式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的數(shù)據(jù)類型為______。

三、1.選擇題(20題)41.有如下程序intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}該程序的輸出結(jié)果是______。

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

42.函數(shù)rewind(fp))的作用是()。

A.使fp指定的文件的位置指針重新定位到文件的開始位置

B.將fp指定的文件的位置指針指向文件中所要求的特定位置

C.使fp指定的文件的位置指針向文件的末尾

D.使fp指定的文件的位置指針自動移至下一個字符位置

43.X、Y、Z被定義為mt型變量,若從鍵盤給X、Y、2輸入數(shù)據(jù),正確的輸入語句是______。

A.INPUTX,Y,Z;

B.scanf("%d%d%d",&X,&Y,&Z);

C.scanf("%d%d%d",X,Y,Z);

D.read("%d%d%d",&X,&Y,&Z);

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

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

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

A.一個C語言程序只能實(shí)現(xiàn)一種算法

B.c程序可以由多個程序文件組成

C.C程序可以由一個或多個函數(shù)組成

D.一個c函數(shù)可以單獨(dú)作為一個C程序文件存在

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

A.指針是一個變量B.指針中存放的是數(shù)值C.指針可以進(jìn)行加、減等算術(shù)運(yùn)算D.指針變量占用存儲空間

47.設(shè)有下面的程序段:chars[]="china";char*p;p=s;則下列敘述正確的是

A.s和p完全相同

B.數(shù)組s中的內(nèi)容和指針變量p中的內(nèi)容相同

C.s數(shù)組長度和p所指向的字符串長度相等

D.*p與s[0]相等

48.概要設(shè)計(jì)是軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計(jì),以下選項(xiàng)中不屬于概要設(shè)計(jì)的是()。A.A.把軟件劃分成模塊B.確定模塊之間的調(diào)用關(guān)系C.確定各個模塊的功能D.設(shè)計(jì)每個模塊的偽代碼

49.以下描述中正確的是

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

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

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

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

50.若有如下語句:intx=3;do{printf("%d\n",x-=2);}wbile(!(--x));則上面程序段()。

A.輸出的是1B.輸出的是1和-2C.輸出的是3和0D.是死循環(huán)

51.以下程序段中,不能正確賦字符串(編譯時系統(tǒng)會提示錯誤)的是()。

A.chars[10]="abcdefg";

B.chart[]="abcdefg",*s=t;

C.chars[10];s="abcdefg";

D.chars[10];strcpy(s,"abcdefg");

52.若有如下定義:unionaa{intn;charc[9];floatx;}a,b,c;則下列敘述中不正確的是()

A.unionaa是定義的共用體類型

B.a,b,c是定義的共用體類型名

C.n、c[9]和x是共用體的成員名

D.a,b,c是定義的共用體變量名

53.下面程序的輸出是______。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

54.以下程序的運(yùn)行結(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

55.在C語言中,運(yùn)算對象必須是整型數(shù)的運(yùn)算符是()。

A.%B.\C.%和\D.**

56.以下程序(程序左邊的數(shù)字為符加的行號)。1#include<str.h>2#include<stdio.h>3main()4{chars[]="string";5puts(s);6strcpy(s,"hello");7printf("%3s\n",s);}

A.沒有錯B.第1行有錯C.第6行有錯D.第7行有錯

57.下述程序向文件輸出的結(jié)果是_______。#include<stdio.h>voidmain(){FILE*fp=fopen("TEST","wb");fprintf(fp,"%d%5.of%c%d",58,76273.0,'-'2278);fclose(fp);}

A.5876273-2278

B.5876273.000000-2278

C.5876273-2278

D.因文件為二進(jìn)制文件而不可讀

58.若有以下說明和定義uniondt{inta;charb;doublec;}data;以下敘述中錯誤的是

A.data的每個成員起始地址都相同

B.變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等

C.程序段:data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000

D.data可以作為函數(shù)的實(shí)參

59.下列程序的輸出結(jié)果是()。main(){inti=1,j=2,k=3;if(i++==1&&(++j==3‖k++==3))printf("%d%d%d\n",i,j,k);}

A.123B.234C.223D.233

60.有以下程序:main(){intx=0,y=5,z=31while(z-->0&&++x<5)y=y-1;printf("%d,%d,%d\n",x,y,z);}程序執(zhí)行后的輸出結(jié)果是______。

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

四、選擇題(20題)61.

62.若x=5,y=3則y*=x+5;y的值為___________.

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

63.支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是()。

A.棧B.樹C.隊(duì)列D.二叉樹

64.有以下程序:

執(zhí)行程序時,給變量X輸入10,程序的輸出結(jié)果是()。

A.54B.55C.65D.45

65.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。

A.EOFB.-lC.非零值D.0

66.下列函數(shù)的功能是()

67.以下程序段完全正確的是()。

68.

69.

70.若有定義語句:doublea,*p=&a;,以下敘述中錯誤的是()。A.定義語句中的*號是一個間址運(yùn)算符

B.定義語句中的*號是一個說明符

C.定義語句中的p只能存放double類型變量的地址

D.定義語句中,*p=&a把變量a的地址作為初值賦給指針變量P

71.

72.

73.設(shè)變量x為float型且已賦值,則以下語句能將x中的數(shù)值保留到小數(shù)點(diǎn)后兩位,并將第3位四舍五入的是()。

A.

B.

C.

D.

74.

75.有以下程序

#include"stdio.h"

main()

{charstr[]="tomeetme",str1[]="toseeyou";

char*p=str,*p1=str1;

inti;

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

if(*(p+i)==*(p1+i))

putchar(*(p+i));

printf("\n");

}

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

A.to

B.tomeet

C.toee

D.程序段不能通過編譯

76.有以下程序:

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

A.120B.11C.6D.21

77.在滿足實(shí)體完整性約束的條件下()。

A.一個關(guān)系中廊該有一個或多個候選關(guān)鍵字

B.一個關(guān)系中只能有一個候選關(guān)鍵字

C.一個關(guān)系中必須有多個候選關(guān)鍵字

D.一個關(guān)系中可以沒有候選關(guān)鍵字

78.軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于系統(tǒng)軟件的是():

A.學(xué)生成績管理系統(tǒng)B.ERP系統(tǒng)C.辦公自動化系統(tǒng)D.UNIX系統(tǒng)

79.

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

A.seanf

B.getchar

C.gets

D.getc

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun的功能是:將P所指字符串中的所有字符復(fù)制到b中,要求每復(fù)制三個字符之后插入一個空格。

例如,若給a輸入字符串:ABCDEFGKHHK,調(diào)用函數(shù)后,字符數(shù)組b中的內(nèi)容為:ABCDEFGHIJK。請改正程序中的錯誤,使它能得出正確的結(jié)果。

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

六、程序設(shè)計(jì)題(1題)82.下列程序定義了MM的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)proc(inta[][M]),該函數(shù)的功能是:使數(shù)組左下半三角元素中的值全部置成0。例如,a數(shù)組中的值為:

注意:部分源程序給出如下。

請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。

試題程序:

參考答案

1.D解析:選項(xiàng)A),B),C)的指針賦值表達(dá)方式都不正確,*p=5表達(dá)整數(shù)5放到指針p所指向的存儲單元中。注意:通過指針引用一個存儲單。

2.C

3.B

4.B解析:投影操作是從關(guān)系中選擇某些列,投影后消去了某些屬性,就可能出現(xiàn)重復(fù)元組,根據(jù)關(guān)系的性質(zhì),應(yīng)消去這些完全相同的元組。這樣使得新關(guān)系的元組數(shù)小于或等于原來的元組數(shù)。

5.C

6.Bmain函數(shù)中定義包含5個元素的數(shù)組m,每個元素都是NODE類型。指針p指向數(shù)組第1個元素,指針q指向數(shù)組最后一個元素。while循環(huán)使用p、q從首尾向中間遍歷,遍歷的同時為各個元素賦值。所以第1輪循環(huán),i的值為0,先執(zhí)行的值為++i,后執(zhí)行i++的值也為1,m[0].k和m[4].k的值都為1;接著第2輪循環(huán),i的值為2,先執(zhí)行的值為3,后執(zhí)行i++的值也為3,m[l].k和m[3].k的值都為3;第3輪循環(huán),p和q指向的都是m[2]元素,指針相同,循環(huán)結(jié)束,此時i的值為4,即m[2].k賦值為4。綜上,程序輸出:13431。本題答案為B選項(xiàng)。

7.B

8.Bfun(x+2)表示的是結(jié)構(gòu)體數(shù)組中的第3個元素即{03,"Zhao",l8),而輸出的是name元素,所以答案為B。

9.A在語句“for(;++a&&--b;)”中,for循環(huán)的表達(dá)式1和表達(dá)式3為缺省項(xiàng)。首先判斷條件表達(dá)式“b”。當(dāng)“a=-2,b=2”時,第1次執(zhí)行“++a”和“--b”,條件表達(dá)式為真,循環(huán)條件成立。第2次執(zhí)行“++a”為0,由于運(yùn)算符,當(dāng)?shù)?個條件為假時,不執(zhí)行第2個條件,因此“b=1”,發(fā)生短路,“--b”不再執(zhí)行。因此輸出的最終值為0,1。故本題答案為A選項(xiàng)。

10.B解析:語句typedefstructS{intg;charh;}T的作用是用T作為struetS{intg;charh;)的簡寫,所以選B。

11.A解析:p+i是數(shù)組s的第i+1行的首地址,而*(p+i)則是數(shù)組第i+1行第1列的元素的地址,*(p+i)+j則是第i+1行的第j+1列的地址,*(*(p+i)+j)引用的是數(shù)組元素s[i][j]的值。注意:通過建立一個指針數(shù)組來引用二維數(shù)組元素。

12.C

13.A用戶標(biāo)識符不能以數(shù)字開頭,C語言中標(biāo)識符是區(qū)分大小寫的,關(guān)鍵字不能用做用戶標(biāo)識符。

14.A解析:本題考查'%'運(yùn)算符的使用。運(yùn)算符'%'要求兩個運(yùn)算對象都為整型,其結(jié)果是整數(shù)除法的余數(shù)。本題中表達(dá)式ao%=(b%2)等價于a=a%o(b%2)=5%(7%2)=5%1=0。

15.D結(jié)構(gòu)workers中的成員s是一個嵌套的結(jié)構(gòu)類型定義,因此在給year賦值時,要用“.”運(yùn)算在深入一層訪問到最基本的成員year,只有D項(xiàng)反映出了這一點(diǎn)。

16.D解析:本題考查了軟件工程的基本概念。軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項(xiàng)目的技術(shù)手段;工具支持軟件的開發(fā)、管理和文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制和管理。

17.D二叉樹的遍歷有3種:前序、中序和后序。①前序遍歷訪問根結(jié)點(diǎn),然后按左右順序遍歷子結(jié)點(diǎn);②中序首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹;③后序遍歷首先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點(diǎn)。本題根據(jù)后序和中序遍歷的結(jié)果可以得出二叉樹的結(jié)構(gòu),然后再對其進(jìn)行前序遍歷,正確答案選項(xiàng)為D。

18.A字符型指針變量可以用A選項(xiàng)的賦值方法“Char*s;s=“OlymPiC”;”。C選項(xiàng)的寫法“char*s;s={“Olympic”};”是錯誤的。字符數(shù)組可以在定義的時候初始化,如“chars[]={“Olympic”};”或者“chars[]=“Olympic”;”,但是不可以在定義字符數(shù)組后對數(shù)組名賦值(數(shù)組名是常量,代表數(shù)組首地址),所以B選項(xiàng)和D選項(xiàng)都是錯誤的。對于本例,B、D選項(xiàng)中字符數(shù)組s的大小至少為8,才能存放下字符串(字符串的末尾都有結(jié)束標(biāo)識‘\\0’),同時,此時S為字符數(shù)組的地址,是常量,不能為其賦值。故本題答案為A選項(xiàng)。

19.A當(dāng)執(zhí)行g(shù)ets(ss)后,ss數(shù)組中的元素為ABC,再執(zhí)行strcat(ss,"6789"),strcat的作用,是把6789連接到了ss數(shù)組后面,執(zhí)行完后SS數(shù)組為ABC6789,故選擇A選項(xiàng)。

20.A

21.00解析:本題是計(jì)算5*4*3*2*1*0的值,結(jié)果為0。

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

23.程序調(diào)試程序調(diào)試解析:程序調(diào)試的任務(wù)是診斷和改正程序中的錯誤。程序調(diào)試與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于調(diào)試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調(diào)試主要在開發(fā)階段。

溫馨提示

  • 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

提交評論