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è),還剩67頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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.有以下程序:#include<stdio.h>main(){inta=10,b=11;if(++a==b++) printf(“T”);else printf(“F”);printf(“a=%d,b=%d\n”,a,b);}程序運(yùn)行后的輸出結(jié)果是()。

A.Fa=11,b=11B.Fa=10,b=12C.Ta=10,b=11D.Ta=11,b=12

2.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}運(yùn)行該程序的輸出結(jié)果是______。

A.34B.42C.43D.33

3.對(duì)于循環(huán)隊(duì)列()。

A.無法判斷隊(duì)列是否為空B.無法判斷隊(duì)列是否為滿C.隊(duì)列不可能滿D.以上說法都不對(duì)

4.對(duì)包含N個(gè)元素的散列表進(jìn)行檢索,平均檢索長(zhǎng)度________

A.為o(log2N)B.為o(N)C.不直接依賴于ND.上述三者都不是

5.若有以下說明和定義:則對(duì)函數(shù)fun的正確調(diào)用語(yǔ)句是()。A.(*a)(&c);B.a=a(x);C.b=*b(x);D.fun(b);

6.執(zhí)行完下列語(yǔ)句段后,i值為()。A.A.2B.4C.8D.無限遞歸

7.設(shè)有以下函數(shù):voidfun(intn,char*s){…}則下面對(duì)函數(shù)指針的定義和賦值均正確的是()。

A.void(*pf)();pf=fun;

B.void*pf();pf=fun

C.void*pf();*pf=fun;

D.void(*pf)(int,char);pf=&fun;

8.

9.下列程序的輸出結(jié)果是()structabc{inta,b,c;};main(){structabcs[2]={{1,2,3},{4,5,6}};intt;t=s[0].a+s[1].b;printf("%d\n",t);}

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

10.在E-R圖中,用來表示實(shí)體的圖形是______。A.矩形B.橢圓形C.菱形D.三角形

11.給出發(fā)下定義:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};則正確的敘述為______。

A.數(shù)組x和數(shù)組y等價(jià)B.數(shù)組x和數(shù)組y的長(zhǎng)度相同C.數(shù)組x的長(zhǎng)度大于數(shù)組y的長(zhǎng)度D.數(shù)組x的長(zhǎng)度小于數(shù)組y的長(zhǎng)度

12.廣義表(a,b,c,d)的表頭是()。

A.aB.(a)C.(b,c,d)D.((b,c,c))

13.有以下程序:#include<stdio.h>#include<string.h>main(){printf(“%d\n”,strlen(“0\t\n\0C011\1”));}程序運(yùn)行后的輸出結(jié)果是()。

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

14.若i和k都是int類型變量,有以下for語(yǔ)句:for(i=0,k=-1;k=1;k++)printf("*****\n");下面關(guān)于語(yǔ)句執(zhí)行情況的敘述中正確的是()。

A.循環(huán)體執(zhí)行兩次B.循環(huán)體執(zhí)行一次C.循環(huán)體一次也不執(zhí)行D.構(gòu)成無限循環(huán)

15.可以作為Windows外殼程序的是()

A.程序管理器B.文件管理C.程序管理器和文件管理器D.主群組

16.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case1:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}執(zhí)行后輸出的結(jié)果是A.11122B.12C.12020D.120

17.下列程序的執(zhí)行結(jié)果是______。#include<stdio.h>unionun{inti;charc[2};};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}

A.266B.11C.265D.138

18.在執(zhí)行完下列的C語(yǔ)句段之后,則B的值是()。Chara="A";intb;B=((34&&56)&&(a<'b'));

A.int類型B.float類型C.void類型D.函數(shù)無類型說明,定義有錯(cuò)

19.有以下程序:#includeMain(){intb[3][3]={0.1,2.0,1,},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf(“%d\n”,t);程序運(yùn)行后的輸出結(jié)果是()。A.3B.4C.1D.9

20.在以下給出的表達(dá)式中,與“while(E)”中的“(E)”不等價(jià)的表達(dá)式是()。

A.(E>0||E<0)B.(E==0)C.(!E==0)D.(E!=0)

二、2.填空題(20題)21.函數(shù)fun的返回值是【】。

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')num++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

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

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

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

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}

23.設(shè)有下列宏定義:#defineA2

#defineBA+3

則執(zhí)行賦值語(yǔ)句:t=b*2;t為血型變量后的值是______。

24.若x和y都是buble型變量,且x的初值為3.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為【】。

25.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

26.在最壞情況下,冒泡排序的時(shí)間復(fù)雜度為【】。

27.下面程序的運(yùn)行結(jié)果是______。

#defineDOUBLE(x,y)x/y

main()

{intx=4,y=2,t;

t=DOUBLE(x+y,x-y);

printf("%d",t);

}

28.下列語(yǔ)句的輸出結(jié)果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

29.問題處理方案的正確而完整的描述稱為______。

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

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

main()

{inta=5,b=4,c=3,d;

d=(a>b>c);

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

}

32.深度為5的滿二叉樹中,葉子結(jié)點(diǎn)的個(gè)數(shù)為______。

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

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6},*k[3],i=1;

while(i<4)

{k[i-1]=&a[2*i-1];

printf("%d",*k[i-1]);

i++;

}

}

34.下列程序利用指針將2個(gè)數(shù)按從大到小的順序輸出。

main()

{inta,b,【】;

printf("inputa,b:");

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

【】;

p2=&b;

if(a<b)

{p=p1;

p1=p2;

p2=p;

}

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

printf("max=%dmin=%d\n",【】);

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

36.下面程序有兩個(gè)printf語(yǔ)句,如果第一個(gè)printf語(yǔ)句輸出的是194,則第二個(gè)printf語(yǔ)句的輸出結(jié)果是【】。

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

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

printf("%x\",p+9);

}

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

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

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

main()

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

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

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

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

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

printf("\n");

}

}

39.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當(dāng)前文件位置指針的具體位置,從而確定文件長(zhǎng)度,請(qǐng)?zhí)羁铡?/p>

FILE*myf;longf1;

myf=【】("test,t","rb");

fseek(myf,(),SEEK_END;f1+ftell(myf);

fclose(myf);

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

40.mystrlen函數(shù)的功能是計(jì)算str所指字符串的長(zhǎng)度,并作為函數(shù)值返回。請(qǐng)?zhí)羁铡?/p>

intmystden(char*str)

{inti;

fo,(i=0;【】!='\0';i++);

return(i);

三、1.選擇題(20題)41.有以下程序main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*(x=6.5);printf("%d%d%3.1f%3.1f\n",a,c,f,x);}程序運(yùn)行后的輸出結(jié)果是

A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5

42.以下選項(xiàng)中,能用作數(shù)據(jù)常量的是()。

A.18B.11C.0.800.5D.25L

43.在下列敘述中,正確的一條是()

A.語(yǔ)句int*pt中的*pt是指針變量名

B.語(yǔ)句"int*p=a;"等價(jià)于"int*p;p=&a[0];”

C.運(yùn)算符*和&都是取變量地址的運(yùn)算符

D.已知指針變量p指向變量a,則&a和*p值相同,都是變量a的值

44.以下有關(guān)宏替換的敘述不正確的是()。A.A.使用宏定義可以嵌套

B.宏定義語(yǔ)句不進(jìn)行語(yǔ)法檢查

C.雙引號(hào)中出現(xiàn)的宏名不替換

D.宏名必須用大寫字母表示

45.以下選項(xiàng)中不能作為合法常量的是_____。A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e0

46.下列關(guān)于棧的描述正確的是()。

A.在棧中只能插入元素而不能刪除元素

B.在棧中只能刪除元素而不能插入元素

C.棧是特殊的線性表,只能在一端插入或刪除元素

D.棧是特殊的線性表,只能在一端插入元素,而在另一端刪除元素

47.若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,則對(duì)a數(shù)組元素不正確的引用是______。

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

48.執(zhí)行以下程序后,test.txt文件的內(nèi)容是(若文件能正常打開)()。#include<stdio.h>#include<stdlib.h>main(){FILE*fp;char*s1="Fortran",*s2="Basic";if((fp=fopen("test.txt","wb"))==NULL){prinff("Can'topentest.txtfile\n");exit(1);}fwrite(s1,7,1,fp);/*把從地址s1開始到7個(gè)字符寫到fp所指文件中*/fseek(fp,OL,SEEK_SET);/*文件位置指針移到文件開頭*/fwrite(s2,5,1,fp);felose(fp);}

A.BasieanB.BasieFortranC.BasicD.FortranBasie

49.

對(duì)兩個(gè)數(shù)組a和b進(jìn)行下列初始化:

charm[]="1234567";

charn[]={1,2,3,4,5,6,7};

則下列敘述正確的是()。

A.數(shù)組m與數(shù)組n完全相同B.數(shù)組m與數(shù)組n長(zhǎng)度相同C.數(shù)組m比數(shù)組n長(zhǎng)1D.數(shù)組m與數(shù)組n中都存放字符串

50.下列描述中正確的是()。

A.軟件工程只是解決軟件項(xiàng)目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則

D.軟件工程只是解決軟件開發(fā)過程中的技術(shù)問題

51.若有條件表達(dá)式(exp)?a++:b--,則以下表達(dá)式中能完全等價(jià)于表達(dá)式(exp)的是

A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)

52.若有下列說明和語(yǔ)句,則對(duì)結(jié)構(gòu)體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;

A.st.iB.*p.iC.(*p).iD.p->i

53.下列敘述中正確的是()。A.用E-R圖能夠表示實(shí)體集之間一對(duì)一的聯(lián)系、一對(duì)多的聯(lián)系、多對(duì)多的聯(lián)系

B.用E-R圖只能表示實(shí)體集之間一對(duì)一的聯(lián)系

C.用E-R圖只能表示實(shí)體集之間一對(duì)多的聯(lián)系

D.用E-R圖表示的概念數(shù)據(jù)模型只能轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型

54.運(yùn)行下列程序時(shí),若輸入的數(shù)據(jù)為“1,2,3”,則輸出結(jié)果是()。main(){floata,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a<

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C');

D.inta[5]="0123";

55.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}

A.6,2B.6,4C.8,4D.8,6

56.以下函數(shù)findmin擬實(shí)現(xiàn)存數(shù)組中查找最小值作為函數(shù)值返回,但程序中有錯(cuò)導(dǎo)致不能實(shí)現(xiàn)預(yù)定功能。#defineMAX2147483647intfindmin(intx[],intn){inti,min;min=MAX;for(i=0;i<n;i++){if(min<x[i])min=x[i];}}造成錯(cuò)誤的原因是()。

A.定義語(yǔ)句inti,min;中min未賦初值

B.賦值語(yǔ)句min=MAN;中,不應(yīng)給min賦MAX值

C.語(yǔ)句if(min<X[i])min=X[i];中判斷條件設(shè)置錯(cuò)誤

D.賦值語(yǔ)句min=MAX;放錯(cuò)了位置

57.結(jié)構(gòu)化程序設(shè)計(jì)的基本原則不包括A.多態(tài)性B.自頂向下C.模塊化D.逐步求精

58.下面的程序執(zhí)行后,文件test.t中內(nèi)容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}

A.hello,B.newworldhelloC.newworldD.hello,rld

59.數(shù)據(jù)處理的最小單位是()。

A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項(xiàng)D.數(shù)據(jù)結(jié)構(gòu)

60.有以下程序:voidfun(int*a,inti,inti){intt;if(i<j){t==a[i];a[i]=a[j];a[i]=t;i++;j--;fun(a,i,j);}}main(){intx[]={2,6,1,8),i;fun(x,0,3),for(i=0;i<4;i++)printf("%2d",x[i]);printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。

A.1268B.8621C.8162D.8612

四、選擇題(20題)61.以下不能正確定義二維數(shù)組的選項(xiàng)是A.inta[2][2]={{1},{2}};

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

C.inta[2][2]={{1},2,3};

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

62.有以下程序

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

}

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

A.9B.編譯出錯(cuò)

C.21D.9.0

63.若有定義語(yǔ)句:“intkl一10,k2=20;”,執(zhí)行表達(dá)式(kl=kl>k2)(k2=k2>

k1)后,kl和k2的值分別為()。

A.0和1B.0和20C.10和1D.10和20

64.

65.若變量已正確定義并賦值,以下符合C++語(yǔ)言語(yǔ)法的表達(dá)式是()。

A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b

66.有以下程序段:

當(dāng)執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。

A.566.0B.55566.0C.7777.0D.566777.0

67.程序中已構(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)

68.作為信息處理熱點(diǎn)技術(shù)之一的“多媒體技術(shù)”中的媒體,強(qiáng)調(diào)的是()。

A.存儲(chǔ)媒體B.表現(xiàn)媒體C.傳輸媒體D.感覺媒體

69.在單鏈表中,增加頭結(jié)點(diǎn)的目的是______。

A.方便運(yùn)算的實(shí)現(xiàn)B.使單鏈表至少有一個(gè)結(jié)點(diǎn)C.標(biāo)識(shí)表結(jié)點(diǎn)中首結(jié)點(diǎn)的位置D.說明單鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)實(shí)現(xiàn)

70.以下函數(shù)的功能是:通過鍵盤輸入數(shù)據(jù),為數(shù)組中的所有元素賦值。

#defineN10

voidmain(int__________)

{inti=0;

while(i<N)

scanf("%d",x+(i++));

}

A.*xB.x[N]C.xD.&x

71.關(guān)系規(guī)范理論是關(guān)系數(shù)據(jù)庫(kù)進(jìn)行邏輯設(shè)計(jì)的基礎(chǔ),這個(gè)理論最基本的要求是關(guān)系中的每個(gè)屬性是()。

A.類型不變的B.寬度不變的C.不可分割的D.互不相關(guān)的

72.整型變量X和Y的值相等,且為非0值,則以下選項(xiàng)中結(jié)果為0的表達(dá)式是()。

A.X‖YB.X|YC.X&YD.X^Y

73.設(shè)變量均已正確定義,若要通過

scaIIf(”%d%c%d%c”,&;al,&;el,&;a2,&;c2);

語(yǔ)句為變量al和a2賦數(shù)值l0和20,為變量cl和c2賦字符x和Y。以下所示的輸入形式中正確的是()。(注:口代表空格字符)

74.

設(shè)變量a、b、c、d和y都已正確定義并賦值。若有以下if語(yǔ)句:

if(a<b)

if(c==d)y=0;

elsey=1;

該語(yǔ)句所表示的含義是()。

A.y=0,a<b且c=dy=1,a≥b

B.y=0,a<b且c=dy=1,a≥b且c≠d

C.y=0,a<b且c=dy=1,a<b且c≠d

D.y=0,a<b且c=dy=1,c≠d

75.有三個(gè)關(guān)系R、S和T如下:

則由關(guān)系R和S得到關(guān)系T的操作是()。

A.自然連接B.交C.除D.并

76.有下列程序:intfunl(doublea){returna*=a;}intfun2(doublex,doubley){doublea=0,b=0;a=funl(x);b=funl(y);return(int)(a+h);}main{doublew;w=fun2(1.1,2.0),……}程序執(zhí)行后變量w中的值是()。A.5.21B.5C.5.0D.0.0

77.

78.若有以下定義和語(yǔ)句:“doubler=99,*p=&r;*P=r;”,則以下正確的敘述是()。

A.兩個(gè)*p含義相同,都說明給指針變量p賦值

B.在“doubler=99,*p=&r;”中,把r的地址賦值給了P所指的存儲(chǔ)單元

C.語(yǔ)句“*p=r;”把變量r的值賦給指針變量P

D.語(yǔ)句“*p=r;”取變量r的值放回r中

79.有以下程序:

#include<stdio.h>

main()

{inta=0,b=0,c=0;

c=(a=a=5);(a=b,b+=4);

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

}

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

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

80.

五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc的功能是:首先把b所指字符串中的字符按逆序存放,然后將str1所指字符串中的字符和Str2所指字符串中的字符,按排列的順序交叉合并到str所指數(shù)組中,過長(zhǎng)的剩余字符接在str所指數(shù)組的尾部。例如,當(dāng)str1所指字符串中的內(nèi)容為ABCDEFG,str2所指字符串中的內(nèi)容為1234時(shí),str所指數(shù)組中的內(nèi)容應(yīng)該為A483C2D1EFG;而當(dāng)str1所指字符串中的內(nèi)容為1234,str2所指字符串中的內(nèi)容為ABCEDFG時(shí),str所指數(shù)組中的內(nèi)容應(yīng)該為1G2F31:4DCBA。

請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio。h>

#include<string.h>

voidproc(char*strl,char*str2,char*str){

inti,j;charch;

i=0;j=strleu(str2)-1;

//****found****

while(i>j)

{

ch=str2[i];str2[i]=str2[j];str2[j]=ch;

i++;j--;

}

while(*str1||*str2)

{

if(*str1){*str=*str1;str++;str1++;)

if(*str2){*str=*str2;str++;str2++;)

}

//****found****

*str=0:

}

voidmain

{

chars1[100],s2[100],t[200];

system("CLS");

printf("\nEnters1string:");

scanf("%s",sl);

printf("\nEnters2string:");

scanf("%s",s2);

proc(s1,s2,t);

printf("\nTheresultis:%s\n",t);

}

六、程序設(shè)計(jì)題(1題)82.請(qǐng)編一個(gè)函數(shù)floatproe(doubleh),函數(shù)的功能是對(duì)變量h中的值保留2位小數(shù),并對(duì)第3位進(jìn)行四舍五人(規(guī)定h中的值為正數(shù))。例如,若h值為7.32596,則函數(shù)返回7.33;若h值為7.32496,則函數(shù)返回7.32。注意:部分源程序給出如下。.請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:

參考答案

1.D自增運(yùn)算符是將運(yùn)算對(duì)象的值增1,它有前綴形式“++a”和后綴形式“b++”。其中“++a”表示首先將a的值自增1,然后表達(dá)式“++a”的值就是自增后a的值;而“b++”表示首先將b的值作為表達(dá)式的值,然后再將b的值自增1。本題中,a的初值為10,b的初值為11,則表達(dá)式“++a==b++”,等價(jià)于“11==11”,條件為真,所以輸出“T”。if語(yǔ)句執(zhí)行完后,a的值為11,b的值為12,輸出“a=11,b=12”。故本題答案為D選項(xiàng)。

2.D解析:逗號(hào)表達(dá)式(++x,y++)的值應(yīng)該是y++的值,由于y++是先引用后自增,所以y++的值是3。

3.D

4.C

5.A題干中,函數(shù)fun接收一個(gè)整型指針參數(shù),返回值為int類型。main函數(shù)首先定義一個(gè)函數(shù)指針a,將函數(shù)fun的地址賦給a,所以a是指向函數(shù)fun的指針,可以通過a調(diào)用函數(shù)fun。選項(xiàng)A中,通過a調(diào)用函數(shù)fun,可以使用(*a),接收的參數(shù)是整型變量c的地址,正確;選項(xiàng)B中,參數(shù)x是一個(gè)數(shù)組,錯(cuò)誤;選項(xiàng)C中,調(diào)用b函數(shù),由于程序沒有給出函數(shù)b的定義,因此這里調(diào)用b是錯(cuò)誤的,而且函數(shù)b是沒有參數(shù)的,這里調(diào)用b的時(shí)候傳入了參數(shù),所以C錯(cuò)誤;選項(xiàng)D中,由于b是一個(gè)函數(shù),不能作為整型指針變量傳給fun函數(shù),因此D錯(cuò)誤。本題答案為A選項(xiàng)。

6.B

7.A函數(shù)指針的定義格式為函數(shù)類型(*指針變量名)(形參列表);函數(shù)名和數(shù)組名一樣代表了函數(shù)代碼的首地址,因此在賦值時(shí),直接將函數(shù)指針指向函數(shù)名就行了。所以選項(xiàng)A正確。

8.B

9.D

10.A解析:在E-R圖中,用三種圖框分別表示實(shí)體、屬性和實(shí)體之間的聯(lián)系,其規(guī)定如下:用矩形框表示實(shí)體,框內(nèi)標(biāo)明實(shí)體名;用橢圓狀框表示實(shí)體的屬性,框內(nèi)標(biāo)明屬性名;用菱形框表示實(shí)體間的聯(lián)系,框內(nèi)標(biāo)明聯(lián)系名。所以,選項(xiàng)A正確。

11.C

12.A

13.AC語(yǔ)言中的轉(zhuǎn)義字符也是一個(gè)字符。字符串“0\\t\\n\\0C011\\1”,共有字符‘0’、‘\\t’、‘\\n’3個(gè)字符。strlen遇到‘\\0’字符計(jì)數(shù)結(jié)束,因此計(jì)數(shù)為3。故本題答案為A選項(xiàng)。

14.D此題考查的是基本的循環(huán),答案為D。

15.C

16.A解析:當(dāng)執(zhí)行switch語(yǔ)句時(shí),首先計(jì)算緊跟其后一對(duì)括號(hào)中的值,然后在語(yǔ)句體內(nèi)尋找與該值吻合的case標(biāo)號(hào)。若相等,則執(zhí)行該標(biāo)號(hào)后開始的各語(yǔ)句,包括在其后的所有case和default后的語(yǔ)句,直到switch語(yǔ)句體結(jié)束。

17.A解析:由于本題定義的是共用體,所以成員表列中的整型變量x與字符數(shù)組c共占用同一個(gè)存儲(chǔ)單元,且此存儲(chǔ)單元為2個(gè)字節(jié),通常c[0]位于低字節(jié),c[1]位于高字節(jié),所以x.i的值為266。

18.A解析:本題考查默認(rèn)函數(shù)的函數(shù)值的類型。在函數(shù)定義時(shí),由于函數(shù)沒有說明其類型,系統(tǒng)默認(rèn)一律自動(dòng)按整型處理,因此,函數(shù)的類型為int類型。

19.B

20.Bwhile語(yǔ)句中條件表達(dá)式E的值不為0即真,認(rèn)為滿足條件。這與B選項(xiàng)中表達(dá)式的含義正好相反。故本題答案為B選項(xiàng)。

21.字符串a(chǎn)和b的長(zhǎng)度之和字符串a(chǎn)和b的長(zhǎng)度之和解析:本題首先通過第一個(gè)while循環(huán)計(jì)算字符串a(chǎn)的長(zhǎng)度,再通過第二個(gè)循環(huán),將字符串a(chǎn)和b相連,最后返回連接后的總長(zhǎng)度。

22.66解析:條件運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符,因此本題先計(jì)算關(guān)系表達(dá)式(*ptr+y)<x)?*(ptr+y):x的值,再賦給變量z。當(dāng)y=0時(shí),*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個(gè)條件表達(dá)式的值為*(ptr+y)=2,所以z=2;當(dāng)y-1時(shí),*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個(gè)條件表達(dá)式的值為*(ptr+y)=4,所以z=4;當(dāng)y=2時(shí),*(ptr+y)=6,(*(ptr+y)<x)條件為真,則整個(gè)條件表達(dá)式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。

23.88解析:本題考查帶參數(shù)的宏定義及相關(guān)運(yùn)算。運(yùn)算過程為:t=-B*2=A+3*2=2+3*2=8。

24.88解析:fabs函數(shù)功能是求x的絕對(duì)值,計(jì)算結(jié)果為double型。pow功能是計(jì)算x的y次方的值,計(jì)算結(jié)果同樣為double型。所以本題表達(dá)式相當(dāng)于2.0的3.0次方,結(jié)果為8.000000。

25.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。

26.

解析:冒泡排序法是通過相鄰數(shù)據(jù)元素的交換逐步將線性表變成有序。假設(shè)線性表的長(zhǎng)度為n,則在最壞的情況下,冒泡排序需要經(jīng)過遍的從前往后的掃描和遍的從后往前的掃描,需要的比較次數(shù)為。

27.2

28.aaaaAAAAAaaaaAAAAA解析:函數(shù)strcat(sp,'AAAAA')的作用是將字符中“AAAAA”連接到字符串sp的末尾,并自動(dòng)覆蓋字符數(shù)組sp末尾的\'\\0\'。

29.算法或程序或流程圖算法或程序或流程圖解析:算法是問題處理方案正確而完整的描述。

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

31.00解析:本題的關(guān)鍵在于對(duì)變量c的賦值運(yùn)算:

d=(a>b>c)

d=(5>4>3)

先算5>4,為真,得1,即:d=(1>3),此時(shí)1>3,為假,得0。

32.1616解析:滿二叉樹的葉子結(jié)點(diǎn)都在最后一層,即第4層,且第4層的結(jié)點(diǎn)達(dá)到最大數(shù),即25-1=16。

33.246

34.*p*p1*p2p1:&a*p1*p2

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

36.1a61a6解析:對(duì)于指針變量的運(yùn)算,就是對(duì)地址的運(yùn)算。本題中由于指針指向的是整型變量,所以,使指針變量移動(dòng)9個(gè)位置也就是移動(dòng)18個(gè)字節(jié)。注意,本題是以十六進(jìn)制輸出的。

37.33解析:C語(yǔ)言的語(yǔ)法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合。因?yàn)閤不大于y,所以執(zhí)行printf('%d\\n',z);語(yǔ)句。

38.123056009123\r\n056\r\n009解析:本題中,定義了一個(gè)元素類型為整型的二維數(shù)組a[][3]={1,2,3,4,5,6,7,8,9},它是一個(gè)3*3的矩陣,“for(i=0;i<3;i++)for(j=i=1;j<3;j++)a[j][i]=0;”將列下標(biāo)i小于行下標(biāo)j的元素a[1][0]、a[2][0]、a[2][1]賦值為0,最后“for(j=0;j<3;j++)printf('%n',a[i][j]);printf('\\n');”進(jìn)行換行輸出,所以輸出結(jié)果為:

123

056

009

39.fopenfopen解析:C語(yǔ)言中的文件分為:ASCII文件與二進(jìn)制文件。文件在使用前打開,使用后要關(guān)閉。打開文件的函數(shù)為:fopen(),調(diào)用形式為:fp=fopen(“文件名”,“使用文件方式”);關(guān)閉文件的函數(shù)為:fclose(),調(diào)用形式為:fclose(fp);其中fp為文件指針。

40.*(str+i)或str[i]*(str+i)或str[i]解析:str是指針變量,它指向字符型數(shù)據(jù),在循環(huán)過程中,用*(str+i)或str[i]來訪問字符串的第i個(gè)元素,判斷是否是結(jié)束標(biāo)志,如果不是,i=i+1,繼續(xù)取下一個(gè)元素進(jìn)行判斷,直到*(str+i)的值為'\\0'為止。

41.B解析:主函數(shù)中先定義了一個(gè)整型變量a,一個(gè)字符變量c并賦初值10,一個(gè)浮點(diǎn)型變量f并賦初值100.00和一個(gè)double型x,接著執(zhí)行“a=f/=c*=(x=6.5)”,該語(yǔ)句從右向左計(jì)算,先把6.5賦值給x(該括號(hào)表達(dá)式的值也為6.5),此時(shí)x的值的變?yōu)?.5,然后執(zhí)行“c*=(x=6.5)”相當(dāng)于執(zhí)行“c=c*(x=6.5)”,此時(shí)c的值為65,接著向左執(zhí)行“f/=c*=(x=6.5)”,語(yǔ)句相當(dāng)于執(zhí)行“f=f/c”接著向最右邊執(zhí)行“a=f,由于a是整型變量,所以a最后取f的整數(shù)部分為1。程序最后輸出的a、c、f和x的值分別為1、65、1.5、6.5。

42.D

43.D

44.D解析:本題考查宏替換的規(guī)則。宏替換有兩類:簡(jiǎn)單的字符替換和帶參數(shù)的宏替換。使用宏應(yīng)注意:①宏定義僅僅是符號(hào)替換,不是賦值語(yǔ)句,因此不做語(yǔ)法檢查:②為了區(qū)別程序中其他的標(biāo)示符,宏名的定義通常用大寫字母,但不是必須用大寫;③雙引號(hào)中出現(xiàn)的宏名不替換;④使用宏定義可以嵌套,即后定義的宏中可以使用先定義的宏。

45.B解析:本題考查的是C語(yǔ)言中實(shí)型常量的指數(shù)表示法。實(shí)型常量的指數(shù)表示法是用字母e(或E)將一個(gè)實(shí)數(shù)的小數(shù)部分和指數(shù)部分分隔開。字母e(或E)之前是小數(shù)部分,之后是指數(shù)部分,這兩部分都不能省略,且指數(shù)部分必須為整數(shù)。故選項(xiàng)B不正確。所以,4個(gè)選項(xiàng)中選項(xiàng)B符合題意。

46.C解析:根據(jù)數(shù)據(jù)結(jié)構(gòu)對(duì)棧的定義及其特點(diǎn)可知:棧是限定只在表尾進(jìn)行插入或刪除操作的線性表,因此棧是先進(jìn)后出的線性表,對(duì)棧的插入與刪除操作,不需要改變棧底元素。棧是限定只在表尾進(jìn)行插入或刪除操作的線性表。

47.D解析:通常,引用一個(gè)數(shù)組元素可以用下標(biāo)法,如a[P-a]形式,或指針法,如*(&a[i])的形式。本題中a[9]=9,a[10]顯然超出了數(shù)組范圍,注意,數(shù)組的下標(biāo)是從0開始的。

48.A解析:程序以“只寫”方式打開一個(gè)名為test.txt的文件,并向該文件寫入指針變量s1指向的7個(gè)字符'Fortran',執(zhí)行fseek函數(shù),使文件位置指針移到文件的開頭,再次向文件輸入指針變量s2指向的5個(gè)字符'Basic'這時(shí)系統(tǒng)會(huì)覆蓋原有的內(nèi)容'Fortr',所以最后test.txt里的內(nèi)容為:Basican。

49.C解析:本題考查字符數(shù)組和字符串賦值給數(shù)組的一些區(qū)別。語(yǔ)句“charm[]='1234567';”定義了一個(gè)字符型數(shù)組并進(jìn)行了初始化,C語(yǔ)言規(guī)定,在字符串的末尾自動(dòng)加上串結(jié)束標(biāo)記\'\\0\',因此數(shù)組m的長(zhǎng)度是8;而數(shù)組n是按照字符方式對(duì)數(shù)組進(jìn)行初始化,系統(tǒng)不會(huì)自動(dòng)加上串結(jié)束標(biāo)記\'\\0\',因此數(shù)組n的長(zhǎng)度是7。

50.CC。【解析】軟件工程是指將工程化的思想應(yīng)用于軟件的開發(fā)、應(yīng)用和維護(hù)的過程,包括軟件開發(fā)技術(shù)和軟件工程管理。

51.B解析:條件運(yùn)算符要求有3個(gè)操作對(duì)象,稱三目(元)運(yùn)算符,它是C語(yǔ)言中惟一的一個(gè)三目運(yùn)算符。條件表達(dá)式的一般形式為:表達(dá)式17表達(dá)式2:表達(dá)式3其求解順序是:先求解表達(dá)式1,若為非O(真)則求解表達(dá)式2,此時(shí)表達(dá)式2的值就作為整個(gè)條件表達(dá)式的值。若表達(dá)式1的值為0(假),則求解表達(dá)式3,表達(dá)式3的值就是整個(gè)條件表達(dá)式的值。并且注意++、--的用法。

52.B解析:本題主要考查結(jié)構(gòu)指針:p=&st,訪問結(jié)構(gòu)體的成員,可以通過結(jié)構(gòu)變量訪問,即st.i,也可以用等價(jià)的指針形式,即(*p).i和p->i。

53.A解析:用E-R圖可以簡(jiǎn)單明了地描述實(shí)體及其相互之間的聯(lián)系,用E-R圖還可以方便地描述多個(gè)實(shí)體集之間的聯(lián)系和一個(gè)實(shí)體集內(nèi)部實(shí)體之間的聯(lián)系。因此,選項(xiàng)A中的說法是正確的,而選項(xiàng)B與C中的說法都是錯(cuò)誤的。

為了建立用戶所要求的數(shù)據(jù)庫(kù).必須把概念結(jié)構(gòu)(用E-R圖表示的概念數(shù)據(jù)模型)轉(zhuǎn)換為某個(gè)具體的數(shù)據(jù)庫(kù)管理系統(tǒng)所支持的數(shù)據(jù)模型,這就是邏輯結(jié)構(gòu)設(shè)計(jì)所要完成的任務(wù)。

在已給定數(shù)據(jù)庫(kù)管理系統(tǒng)的情況下,數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)可以分兩步來進(jìn)行:

①將概念模型轉(zhuǎn)換成一般的數(shù)據(jù)模型;

②將一般的數(shù)據(jù)模型轉(zhuǎn)換為特定的數(shù)據(jù)庫(kù)管理系統(tǒng)所支持的數(shù)據(jù)模型。

由此可知,用E-R圖表示的概念數(shù)據(jù)模型不僅能轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型,還可以轉(zhuǎn)換為其他數(shù)據(jù)模型,如網(wǎng)狀模型和層次模型等。因此,選項(xiàng)D中的說法也是錯(cuò)誤的。

54.B解析:在定義數(shù)組時(shí),如果賦給的初始值個(gè)數(shù)大于數(shù)值的長(zhǎng)度,這樣就會(huì)越界,因此選項(xiàng)A錯(cuò)誤;選項(xiàng)C中定義的是一個(gè)字符變量C;選項(xiàng)D)中整型數(shù)組a中只能存儲(chǔ)整型數(shù)據(jù),而不能存儲(chǔ)字符串常量“0123”。

55.B解析:本題主要考查結(jié)構(gòu)體和聯(lián)合內(nèi)存使用的區(qū)別:結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個(gè)結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個(gè)成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個(gè)成員相互獨(dú)立;聯(lián)合所占用的內(nèi)存空間為最長(zhǎng)的成員所占用的空間。

56.D解析:在C語(yǔ)言中,一個(gè)整型變量占用4個(gè)字節(jié)的內(nèi)存單元,并按整型數(shù)的存儲(chǔ)方式存放數(shù)據(jù),允許存放的數(shù)值范圍是:-2147483648~2147483647。所以在這個(gè)題目中定義的宏變量MAX的值就是整數(shù)范圍內(nèi)最大的數(shù)值,因而對(duì)于任意一個(gè)整數(shù)來說,其值都比MAX小,而判斷最小值,是當(dāng)找到的數(shù)比min小時(shí),才交換。

57.A結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則可以概括為:自頂向下,逐步求精,模塊化和限制使用GOTO語(yǔ)句,其中不包括多態(tài)性。

58.A解析:C語(yǔ)言中文件有文本文件與二進(jìn)制文件,對(duì)文件的使用前必須先打開,打開方式有只讀、寫入、讀寫等方式。

59.C解析:數(shù)據(jù)處理的最小單位是數(shù)據(jù)項(xiàng);由若干數(shù)據(jù)項(xiàng)組成數(shù)據(jù)元素;而數(shù)據(jù)是指能夠被計(jì)算機(jī)識(shí)別、存儲(chǔ)和加工處理的信息載體;數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)之間的相互關(guān)系和數(shù)據(jù)運(yùn)算。故正確答案為選項(xiàng)C)。

60.C解析:函數(shù)fun()中用了一個(gè)if語(yǔ)句,當(dāng)數(shù)組下標(biāo)i小于數(shù)組下標(biāo)j時(shí),交換數(shù)組元素a[i]和a[j]的值,并使i值加1,j值減1。其功能就是把數(shù)組a中從下標(biāo)i到j(luò)的元素首尾互換。主函數(shù)中定義一個(gè)數(shù)組x,該數(shù)組有4個(gè)元素,接著調(diào)用fun(a,O,3),其中將a數(shù)組的第一個(gè)元素的下標(biāo)0和最后一個(gè)元素的下標(biāo)3傳給了函數(shù)fun(),故執(zhí)行完該函數(shù)后,數(shù)組a中的元素首尾互換,因此最后依次輸出的數(shù)組a中值為8、1、6和2,所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。

61.D解析:選項(xiàng)A)定義的數(shù)組按行各數(shù)組元素分別是:1,0,2,0;選項(xiàng)B)定義的數(shù)組按行各數(shù)組元素分別是:1,2,3,4;選項(xiàng)C)定義的數(shù)組按行各數(shù)組元素分別是:1,0,2,3;因?yàn)槎x數(shù)組時(shí),第一維的長(zhǎng)度可以不指定,第二維的長(zhǎng)度必須指定,所以選項(xiàng)D)錯(cuò)。

62.A本題主要考查函數(shù)的嵌套調(diào)用。在本題中,首先定義了函數(shù)fun,該函數(shù)的返回類型為浮點(diǎn)型,函數(shù)帶有兩個(gè)整型形參,函數(shù)的作用不難看出是返回兩個(gè)形參的和。

在主函數(shù)中,定義了三個(gè)整型變量a,b,c,并分別賦初值為2,5,8,然后嵌套調(diào)用fun函數(shù)。輸出語(yǔ)句fun((int)fun(a+c,b),a-c)首先調(diào)用嵌套的fun函數(shù),即(int)fun(a+c,b),按照前面對(duì)fun函數(shù)的介紹,它應(yīng)該返回的值為a+c+b=15,由于函數(shù)在前面加了強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換,將本來的返回結(jié)果浮點(diǎn)型轉(zhuǎn)換為了整型,并作為函數(shù)的參數(shù),與函數(shù)定義的參數(shù)類型匹配,程序編譯不報(bào)錯(cuò),然后執(zhí)行fun函數(shù),它返回的結(jié)果為15+a-c=9,此時(shí)的結(jié)果應(yīng)該是浮點(diǎn)型,即為9.0,但輸出語(yǔ)句的輸出格式是“%3.0f”,說明無須輸出小數(shù)部分,因此,最終的輸出結(jié)果是9。

63.B

64.A

65.B解析:a=b=c+2實(shí)際上相當(dāng)于a=(b=c+2),進(jìn)而可分解為兩個(gè)表達(dá)式:b=c+2和a=b。注意:選項(xiàng)A)中包含一個(gè)不合法的運(yùn)算符“:=”;選項(xiàng)C)應(yīng)改為(int)18.5%3;選項(xiàng)D)可理解為兩個(gè)表達(dá)式:a+7=c+b和a=a+7,其中第一個(gè)是錯(cuò)的,因?yàn)镃++語(yǔ)言規(guī)定賦值號(hào)的左邊只能是單個(gè)變量,不能是表達(dá)式或常量等。注意:C++語(yǔ)言賦值語(yǔ)句的運(yùn)用,

66.A它是格式輸人函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中。其中的格式命令可以說明最大域?qū)?。在百分?hào)(%)與格式碼之間的整數(shù)用于限制從對(duì)應(yīng)域讀入的最大字符數(shù)。所以j的值為55,Y的值為566.0,字符數(shù)組llame為7777abc。

67.D本題考查鏈表的操作,本題中首先是s指向了它的下個(gè)結(jié)點(diǎn),題目中說明了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正確。

68.D媒體分為感覺媒體、表示媒體、存儲(chǔ)媒體、傳輸媒體和表現(xiàn)媒體五種,“多媒體技術(shù)”中的媒體強(qiáng)調(diào)的是感覺媒體。

69.A\nA。【解析】頭結(jié)點(diǎn)不僅標(biāo)識(shí)了表中首結(jié)點(diǎn)的位置,而且根據(jù)單鏈表(包含頭結(jié)點(diǎn))的結(jié)構(gòu),只要掌握了表頭,就能夠訪問整個(gè)鏈表,因此增加頭結(jié)點(diǎn)的目的是為了便于運(yùn)算的實(shí)現(xiàn)。

\n

70.B由輸入函數(shù)的輸入項(xiàng),我們知道在這里x代表的是一個(gè)地址,而函數(shù)的功能是為數(shù)組中的所有元素賦值,而數(shù)組名代表的就是數(shù)組的首地址,所以數(shù)組名是x,因此空格中應(yīng)該填x[N].

71.C關(guān)系規(guī)范理論是關(guān)系數(shù)據(jù)庫(kù)進(jìn)行邏輯設(shè)計(jì)的基礎(chǔ),這個(gè)理論最基本的要求是關(guān)系中的每個(gè)屬性是不可分割的。

72.DX||Y是將X和Y作邏輯或運(yùn)算,因?yàn)槎际欠?,所以結(jié)果為1,X|Y是做位或運(yùn)算,即相同位置的數(shù)字只要有一個(gè)為1,結(jié)果為1,其結(jié)果也為非0,X&Y是為與運(yùn)算,相同位置的數(shù)字都為1的時(shí)候才為1,其結(jié)果為非0,X^Y做位異或運(yùn)算,即同0異1,因?yàn)閄與Y的值相等,所以相同位置的數(shù)字一定相同。

73.C輸入數(shù)據(jù)的格式必須與scanf()的格式控制串完全匹配,如果A、B、Cc選項(xiàng)中在數(shù)字l0后面均輸入了空格,則會(huì)將空格賦給變量cl,而不是把x賦給cl,所以選擇C選項(xiàng)。

74.C

\n語(yǔ)句“if(c==d)y=0;elsey=1;”是if(a<b)語(yǔ)句的一個(gè)子句。所以整個(gè)語(yǔ)句表達(dá)式的意思是:在a<b的情況下,如果c=b,則y=0,否則y=1;如果a<b,則執(zhí)行第2個(gè)if語(yǔ)句,如果C等于d,那么y=0,如果c不等于d,那么y=1,所以,選項(xiàng)C為正確答案。

\n

75.C

76.C子函數(shù)fun1(doublea)的功能是返回a的平方值的整數(shù)部分。子函數(shù)fun2(doublex,doubley)的功能是返回X的平方值的整數(shù)部分與Y的平方值的整數(shù)部分的和。又因?yàn)轭}中變量w的定義為double型,函數(shù)fun(2)的定義為int型,按照各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算,整型數(shù)據(jù)被轉(zhuǎn)換為實(shí)型數(shù)據(jù)。所以雙精度型變量w的值為5.0。

77.D

78.B在定義*p=&r時(shí),是表示r的地址賦給了p所指的存儲(chǔ)單元,因此選項(xiàng)B正確。

79.A\n本題考查簡(jiǎn)單的賦值運(yùn)算,在程序中c=(a-=am5),先算括號(hào)中的a-=a-5=5,所以c=5,再計(jì)算(a=b,b+=4);,a=b=0,b+=4=0+4=4,所以b=4,所以a=0,b=4,c=5,答案選擇A。

\n

80.B81.\n\t(1)錯(cuò)誤:while(i>j)

\n正確:while(i<j)

\n(2)錯(cuò)誤:*str=0;

\n正確:*str=\0;

\n【解析】由函數(shù)proc可知,變量i和j分別存放的是字符串str前面和后面第i個(gè)字符的位置,當(dāng)i<j時(shí),兩個(gè)位置的字符交換。因此,“while(i>j)”應(yīng)改為“while(i<j)”;交叉合并完成后,要為新的字符串添加結(jié)束符,因此,“*str=0;”應(yīng)改為“*str=\0;”,\n

82.

【解析】要實(shí)現(xiàn)對(duì)變量的值保留2位小數(shù)。并對(duì)第3位小數(shù)進(jìn)行四舍五入,可以通過先將其小數(shù)點(diǎn)后3位變?yōu)檎龜?shù)后加5,所得到的數(shù)除10,最后再除100來實(shí)現(xiàn)。

2021-2022年廣東省廣州市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.有以下程序:#include<stdio.h>main(){inta=10,b=11;if(++a==b++) printf(“T”);else printf(“F”);printf(“a=%d,b=%d\n”,a,b);}程序運(yùn)行后的輸出結(jié)果是()。

A.Fa=11,b=11B.Fa=10,b=12C.Ta=10,b=11D.Ta=11,b=12

2.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}運(yùn)行該程序的輸出結(jié)果是______。

A.34B.42C.43D.33

3.對(duì)于循環(huán)隊(duì)列()。

A.無法判斷隊(duì)列是否為空B.無法判斷隊(duì)列是否為滿C.隊(duì)列不可能滿D.以上說法都不對(duì)

4.對(duì)包含N個(gè)元素的散列表進(jìn)行檢索,平均檢索長(zhǎng)度________

A.為o(log2N)B.為o(N)C.不直接依賴于ND.上述三者都不是

5.若有以下說明和定義:則對(duì)函數(shù)fun的正確調(diào)用語(yǔ)句是()。A.(*a)(&c);B.a=a(x);C.b=*b(x);D.fun(b);

6.執(zhí)行完下列語(yǔ)句段后,i值為()。A.A.2B.4C.8D.無限遞歸

7.設(shè)有以下函數(shù):voidfun(intn,char*s){…}則下面對(duì)函數(shù)指針的定義和賦值均正確的是()。

A.void(*pf)();pf=fun;

B.void*pf();pf=fun

C.void*pf();*pf=fun;

D.void(*pf)(int,char);pf=&fun;

8.

9.下列程序的輸出結(jié)果是()structabc{inta,b,c;};main(){structabcs[2]={{1,2,3},{4,5,6}};intt;t=s[0].a+s[1].b;printf("%d\n",t);}

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

10.在E-R圖中,用來表示實(shí)體的圖形是______。A.矩形B.橢圓形C.菱形D.三角形

11.給出發(fā)下定義:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};則正確的敘述為______。

A.數(shù)組x和數(shù)組y等價(jià)B.數(shù)組x和數(shù)組y的長(zhǎng)度相同C.數(shù)組x的長(zhǎng)度大于數(shù)組y的長(zhǎng)度D.數(shù)組x的長(zhǎng)度小于數(shù)組y的長(zhǎng)度

12.廣義表(a,b,c,d)的表頭是()。

A.aB.(a)C.(b,c,d)D.((b,c,c))

13.有以下程序:#include<stdio.h>#include<string.h>main(){printf(“%d\n”,strlen(“0\t\n\0C011\1”));}程序運(yùn)行后的輸出結(jié)果是()。

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

14.若i和k都是int類型變量,有以下for語(yǔ)句:for(i=0,k=-1;k=1;k++)printf("*****\n");下面關(guān)于語(yǔ)句執(zhí)行情況的敘述中正確的是()。

A.循環(huán)體執(zhí)行兩次B.循環(huán)體執(zhí)行一次C.循環(huán)體一次也不執(zhí)行D.構(gòu)成無限循環(huán)

15.可以作為Windows外殼程序的是()

A.程序管理器B.文件管理C.程序管理器和文件管理器D.主群組

16.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case1:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}執(zhí)行后輸出的結(jié)果是A.11122B.12C.12020D.120

17.下列程序的執(zhí)行結(jié)果是______。#include<stdio.h>unionun{inti;charc[2};};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}

A.266B.11C.265D.138

18.在執(zhí)行完下列的C語(yǔ)句段之后,則B的值是()。Chara="A";intb;B=((34&&56)&&(a<'b'));

A.int類型B.float類型C.void類型D.函數(shù)無類型說明,定義有錯(cuò)

19.有以下程序:#includeMain(){intb[3][3]={0.1,2.0,1,},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf(“%d\n”,t);程序運(yùn)行后的輸出結(jié)果是()。A.3B.4C.1D.9

20.在以下給出的表達(dá)式中,與“while(E)”中的“(E)”不等價(jià)的表達(dá)式是()。

A.(E>0||E<0)B.(E==0)C.(!E==0)D.(E!=0)

二、2.填空題(20題)21.函數(shù)fun的返回值是【】。

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')num++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

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

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

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

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}

23.設(shè)有下列宏定義:#defineA2

#defineBA+3

則執(zhí)行賦值語(yǔ)句:t=b*2;t為血型變量后的值是______。

24.若x和y都是buble型變量,且x的初值為3.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為【】。

25.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

26.在最壞情況下,冒泡排序的時(shí)間復(fù)雜度為【】。

27.下面程序的運(yùn)行結(jié)果是______。

#defineDOUBLE(x,y)x/y

main()

{intx=4,y=2,t;

t=DOUBLE(x+y,x-y);

printf("%d",t);

}

28.下列語(yǔ)句的輸出結(jié)果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

29.問題處理方案的正確而完整的描述稱為______。

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

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

main()

{inta=5,b=4,c=3,d;

d=(a>b>c);

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

}

32.深度為5的滿二叉樹中,葉子結(jié)點(diǎn)的個(gè)數(shù)為______。

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

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6},*k[3],i=1;

while(i<4)

{k[i-1]=&a[2*i-1];

printf("%d",*k[i-1]);

i++;

}

}

34.下列程序利用指針將2個(gè)數(shù)按從大到小的順序輸出。

main()

{inta,b,【】;

printf("inputa,b:");

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

【】;

p2=&b;

if(a<b)

{p=p1;

p1=p2;

p2=p;

}

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

printf("max=%dmin=%d\n",【】);

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

36.下面程序有兩個(gè)printf語(yǔ)句,如果第一個(gè)printf語(yǔ)句輸出的是194,則第二個(gè)printf語(yǔ)句的輸出結(jié)果是【】。

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

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

printf("%x\",p+9);

}

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

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

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

main()

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

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

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

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

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

printf("\n");

}

}

39.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當(dāng)前文件位置指針的具體位置,從而確定文件長(zhǎng)度,請(qǐng)?zhí)羁铡?/p>

FILE*myf;longf1;

myf=【】("test,t","rb");

fseek(myf,(),SEEK_END;f1+ftell(myf);

fclose(myf);

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

40.mystrlen函數(shù)的功能是計(jì)算str所指字符串的長(zhǎng)度,并作為函數(shù)值返回。請(qǐng)?zhí)羁铡?/p>

intmystden(char*str)

{inti;

fo,(i=0;【】!='\0';i++);

return(i);

三、1.選擇題(20題)41.有以下程序main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*(x=6.5);printf("%d%d%3.1f%3.1f\n",a,c,f,x);}程序運(yùn)行后的輸出結(jié)果是

A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5

42.以下選項(xiàng)中,能用作數(shù)據(jù)常量的是()。

A.18B.11C.0.800.5D.25L

43.在下列敘述中,正確的一條是()

A.語(yǔ)句int*pt中的*pt是指針變量名

B.語(yǔ)句"int*p=a;"等價(jià)于"int*p;p=&a[0];”

C.運(yùn)算符*和&都是取變量地址的運(yùn)算符

D.已知指針變量p指向變量a,則&a和*p值相同,都是變量a的值

44.以下有關(guān)宏替換的敘述不正確的是()。A.A.使用宏定義可以嵌套

B.宏定義語(yǔ)句不進(jìn)行語(yǔ)法檢查

C.雙引號(hào)中出現(xiàn)的宏名不替換

D.宏名必須用大寫字母表示

45.以下選項(xiàng)中不能作為合法常量的是_____。A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e0

46.下列關(guān)于棧的描述正確的是()。

A.在棧中只能插入元素而不能刪除元素

B.在棧中只能刪除元素而不能插入元素

C.棧是特殊的線性表,只能在一端插入或刪除元素

D.棧是特殊的線性表,只能在一端插入元素,而在另一端刪除元素

47.若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,則對(duì)a數(shù)組元素不正確的引用是______。

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

48.執(zhí)行以下程序后,test.txt文件的內(nèi)容是(若文件能正常打開)()。#include<stdio.h>#include<stdlib.h>main(){FILE*fp;char*s1="Fortran",*s2="Basic";if((fp=fopen("test.txt","wb"))==NULL){prinff("Can'topentest.txtfile\n");exit(1);}fwrite(s1,7,1,fp);/*把從地址s1開始到7個(gè)字符寫到fp所指文件中*/fseek(fp,OL,SEEK_SET);/*文件位置指針移到文件開頭*/fwrite(s2,5,1,fp);felose(fp);}

A.BasieanB.BasieFortranC.BasicD.FortranBasie

49.

對(duì)兩個(gè)數(shù)組a和b進(jìn)行下列初始化:

charm[]="1234567";

charn[]={1,2,3,4,5,6,7};

則下列敘述正確的是()。

A.數(shù)組m與數(shù)組n完全相同B.數(shù)組m與數(shù)組n長(zhǎng)度相同C.數(shù)組m比數(shù)組n長(zhǎng)1D.數(shù)組m與數(shù)組n中都存放字符串

50.下列描述中正確的是()。

A.軟件工程只是解決軟件項(xiàng)目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則

D.軟件工程只是解決軟件開發(fā)過程中的技術(shù)問題

51.若有條件表達(dá)式(exp)?a++:b--,則以下表達(dá)式中能完全等價(jià)于表達(dá)式(exp)的是

A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)

52.若有下列說明和語(yǔ)句,則對(duì)結(jié)構(gòu)體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;

A.st.iB.*p.iC.(*p).iD.p->i

53.下列敘述中正確的是()。A.用E-R圖能夠表示實(shí)體集之間一對(duì)一的聯(lián)系、一對(duì)多的聯(lián)系、多對(duì)多的聯(lián)系

B.用E-R圖只能表示實(shí)體集之間一對(duì)一的聯(lián)系

C.用E-R圖只能表示實(shí)體集之間一對(duì)多的聯(lián)系

D.用E-R圖表示的概念數(shù)據(jù)模型只能轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型

54.運(yùn)行下列程序時(shí),若輸入的數(shù)據(jù)為“1,2,3”,則輸出結(jié)果是()。main(){floata,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a<

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C');

D.inta[5]="0123";

55.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}

A.6,2B.6,4C.8,4D.8,6

56.以下函數(shù)findmin擬實(shí)現(xiàn)存數(shù)組中查找最小值作為函數(shù)值返回,但程序中有錯(cuò)導(dǎo)致不能實(shí)現(xiàn)預(yù)定功能。#defineMAX2147483647intfindmin(intx[],intn){inti,min;min=MAX;for(i=0;i<n;i++){if(min<x[i])min=x[i];}}造成錯(cuò)誤的原因是()。

A.定義語(yǔ)句inti,min;中min未賦初值

B.賦值語(yǔ)句min=MAN;中,不應(yīng)給min賦MAX值

C.語(yǔ)句if(min<X[i])min=X[i];中判斷條件設(shè)置錯(cuò)誤

D.賦值語(yǔ)句min=MAX;放錯(cuò)了位置

57.結(jié)構(gòu)化程序設(shè)計(jì)的基本原則不包括A.多態(tài)性B.自頂向下C.模塊化D.逐步求精

58.下面的程序執(zhí)行后,文件test.t中內(nèi)容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}

A.hello,B.newworldhelloC.newworldD.hello,rld

59.數(shù)據(jù)處理的最小單位是()。

A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項(xiàng)D.數(shù)據(jù)結(jié)構(gòu)

60.有以下程序:voidfun(int*a,inti,inti){intt;if(i<j){t==a[i];a[i]=a[j];a[i]=t;i++;j--;fun(a,i,j);}}main(){intx[]={2,6,1,8),i;fun(x,0,3),for(i=0;i<4;i++)printf("%2d",x[i]);printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。

A.1268B.8621C.8162D.8612

四、選擇題(20題)61.以下不能正確定義二維數(shù)組的選項(xiàng)是A.inta[2][2]={{1},{2}};

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

C.inta[2][2]={{1},2,3};

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

62.有以下程序

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

}

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

A.9B.編譯出錯(cuò)

C.21D.9.0

63.若有定義語(yǔ)句:“intkl一10,k2=20;”,執(zhí)行表達(dá)式(kl=kl>k2)(k2=k2>

k1)后,kl和k2的值分別為()。

A.0和1B.0和20C.10和1D.10和20

64.

65.若變量已正確定義并賦值,以下符合C++語(yǔ)言語(yǔ)法的表達(dá)式是()。

A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b

66.有以下程序段:

當(dāng)執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。

A.566.0B.55566.0C.7777.0D.566777.0

67.程序中已構(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)

68.作為信息處理熱點(diǎn)技術(shù)之一的“多媒體技術(shù)”中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論