2021年湖北省黃岡市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)測試卷(含答案)_第1頁
2021年湖北省黃岡市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)測試卷(含答案)_第2頁
2021年湖北省黃岡市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)測試卷(含答案)_第3頁
2021年湖北省黃岡市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)測試卷(含答案)_第4頁
2021年湖北省黃岡市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)測試卷(含答案)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021年湖北省黃岡市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)測試卷(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.以下對(duì)C語言函數(shù)的有關(guān)描述中,正確的是

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

B.C函數(shù)既可以嵌套定義又可以遞歸調(diào)用

C.函數(shù)必須有返回值,否則不能使用函數(shù)

D.函數(shù)必須有返回值,返回值類型不定

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

A.char*s;s={“BOOK!”};

B.char*s;s=“BOOK!”;

C.chars[10];s=“BOOK!”;

D.chars[];s=“BOOK!”;

3.有以下程序:#include<string.h>inta=4;intf(intn){intt=0;staticinta=5;if(n%2){inta=6;t++=a++;}else{inta=7;t+=a++;}returnt+a++;}main(){ints=a,i=0;for(;i<2;i++)s+=f(i);printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是()。

A.24B.28C.32D.36

4.有定義語句:“int*p[4];”,以下選項(xiàng)中與此語句等價(jià)的是()。

A.intp[4];B.int**P;C.int*(p[4]);D.int(*p)[4];

5.由權(quán)值分別為3,8,6,2,5的葉子結(jié)點(diǎn)生成一棵哈夫曼樹,它的帶權(quán)路徑長度為________。

A.24B.48C.72D.53

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

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

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

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

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

7.下列關(guān)于數(shù)據(jù)結(jié)構(gòu)的敘述中,正確的是()。

A.數(shù)組是同類型值的集合

B.遞歸算法的程序結(jié)構(gòu)比迭代算法的程序結(jié)構(gòu)更為精煉

C.樹是一種線性結(jié)構(gòu)

D.用一維數(shù)組存儲(chǔ)二叉樹,總是以先序遍歷的順序存儲(chǔ)各結(jié)點(diǎn)

8.設(shè)有定義:#include<stdio.h>#include<stdlib.h>typedefstruct{intx,y;}T;typedefstruct{intx,y;}*USER;USERfun(){USERp;p=(USER)malloc(sizeof(T));p->x=1;p->y=2;returnp;}函數(shù)fun返回值的類型是()。

A.T類型的結(jié)構(gòu)體B.指向結(jié)構(gòu)體類型的指針C.int類型的元素D.int類型的指針

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

10.下列函數(shù)的類型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

11.設(shè)順序表的長度為n,則順序查找的平均比較次數(shù)為()

A.nB.n/2C.(n+1)/2D.(n-1)/2

12.有以下程序#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;printf("%d,%d\n",strlen(a),sizeof(a));}程序運(yùn)行后的輸出結(jié)果是()。A.7,4B.4,10C.8,8D.10,10

13.對(duì)矩陣進(jìn)行壓縮存儲(chǔ)是為了()。

A.方便運(yùn)算B.方便存儲(chǔ)C.提高運(yùn)算速度D.減少存儲(chǔ)空間

14.下列算法中,()算法用來求圖中某頂點(diǎn)到其他頂點(diǎn)所有頂點(diǎn)之間的最短路徑。

A.DijkstraB.FloyedC.PrimD.Kruskal

15.若有定義“intx,y;”,并已正確給變量賦值,則以下選項(xiàng)中與表達(dá)式“(x-y)?(x++):(y++)”中的條件表達(dá)式“(x-y)”等價(jià)的是()。

A.(x-y<0||x-y>0)B.(x-y<0)C.(x-y>0)D.(x-y==0)

16.設(shè)n個(gè)待排序的記錄關(guān)鍵字,則在堆排序中需要()個(gè)輔助記錄單元。

A.1B.12C.60D.15

17.如果以鏈表作為棧的存儲(chǔ)結(jié)構(gòu),則出棧操作時(shí)()。

A.必須判別棧是否滿B.必須判別棧是否為空C.必須判別棧元素類型D.可不做任何判斷

18.下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){inta=2,b=3,c=4;if(a<B)if(b<0)c=0;elsec+=1;printf("%d\n",C);}

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

19.下列敘述中錯(cuò)誤的是()。

A.用戶定義的函數(shù)中可以沒有return語句

B.用戶定義的函數(shù)中可以有多個(gè)return語句,以便調(diào)用一次返回多個(gè)函數(shù)值

C.用戶定義的函數(shù)中若沒有return語句,則應(yīng)當(dāng)定義函數(shù)為void類型

D.函數(shù)的return語句中可以沒有表達(dá)式

20.下列敘述中錯(cuò)誤的是()。A.程序可以由多個(gè)程序文件組成

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

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

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

二、2.填空題(20題)21.下面程序是計(jì)算100以內(nèi)能被4整除且個(gè)位數(shù)為4的所有整數(shù),請(qǐng)?zhí)羁铡?/p>

main()

{intm,n;

for(m=0;【】;m++)

{n=m*10+4;

If(【】)continue;

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

22.實(shí)體之間的聯(lián)系可以歸結(jié)為一對(duì)一的聯(lián)系,一對(duì)多的聯(lián)系與多對(duì)多的聯(lián)系。如果一個(gè)學(xué)校有許多學(xué)生,而一個(gè)學(xué)生只屬于一個(gè)學(xué)校,則實(shí)體集學(xué)校與實(shí)體集學(xué)生之間的聯(lián)系屬于【】的聯(lián)系。

23.實(shí)現(xiàn)算法所需的存儲(chǔ)單元多少和算法的工作量大小分別為算法的【】。

24.以下程序的功能是從鍵盤輸入若干學(xué)生的成績,并輸出最高成績和最低成績,當(dāng)輸入負(fù)數(shù)時(shí)結(jié)束。請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{floatx,amax,amin;

scanf("%f",&x);

amax=x;amin=x;

while(【】)

{if(x>amax)amax=x;

else

if(【】)amin=x;

scanf("%f",&x);

}

printf("\namax=%f\namin=%f\n",amax,amin);

}

25.以下程序建立一個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,鏈表結(jié)點(diǎn)中的數(shù)據(jù)通過鍵盤輸入,當(dāng)輸入數(shù)據(jù)為-1時(shí),表示輸入結(jié)束(鍵表頭結(jié)點(diǎn)的data域不放數(shù)據(jù),表空的條件是ph->next==NULL),請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));

p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");

scanf("%d",&a);

while(a!=-1)

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

【】=a;q->next=p;【】=p;scanf("%d",&a);}

p->next='\0';return(ph);}

main()

{structlist*head;head=creatlist();}

26.在深度為7的滿二叉樹中,度為2的結(jié)點(diǎn)個(gè)數(shù)為【】。

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

28.若輸入12、3、2、5、7,則以下程序的運(yùn)行結(jié)果為【】。

intmax,min;

voidmax_min_value();

main()

{inti,number[5];

printf("輸入5個(gè)整數(shù);\n");

for(i=0;i<5;i++)scanf("%d",&number[i]);

maxminvalue(number,5);

printf("max=%d,min=%d\n",max,min);

getch();

}

voidmax_min_value(array,n)

intarray[],n;

{int*p;

max=min=*array;

for(p=array+1;p<array+n;p++)

if(*p>max)max=*p;

elseif(*p<min)min=*p;

}

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

stnctss

{intinfo;sEruc5ss*link;}x.y,z;

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

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

30.理解下面的程序,填空完善程序。

main()

{inta,b,c;

scanf("%d%d",【】);

c=【】(a,b);

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

}

intmax(x,y)

【】;

{intz;

if(x>y)z=x;

elsez=y(tǒng);

【】;

}

31.若輸入字符串:abcde,則以下while循環(huán)體將執(zhí)行【】次。

while((ch=getchar())=='e')printf("*");

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

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%5ld\n",k);}

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

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{

case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

}

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

}

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

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

#include<string.h>

voidfun(char*s,intp,intk)

{inti;

for(i=p;i<k-1;i++)s[i]=s[i+2];

}

main()

{chars[]="abcdefg";

fun(s,3,strlen(s));puts(s);

}

36.以下程序通過函數(shù)SunFun()調(diào)用F(x),x的值從0到10,這里F(x)=x2+1,由F函數(shù)實(shí)現(xiàn),請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

intSunFun(int);

intF(int);

main()

{pfintf("Thesum=%d\n",SunFun(10));}

SunFun(intn)

{intx,s=0;

for(x=0;x<=n;x++)s+=F(【】);

returns;

F(intx)

{return(【】);}

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

charb[]="ABCD";

main()

{

charb[30];

strcpy(&b[0],"GH");

strcpy(&b[1],"GH");

strcpy(&b[2],"GH");

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

}

38.在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機(jī)制稱為______。

39.關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實(shí)現(xiàn)的專門關(guān)系運(yùn)算包括選擇、連接和【】。

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

voidfun()

{staticinta;

a+=2;

printf("%d",A);

}

main()

{intcc;

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

printf("\n");

}

三、1.選擇題(20題)41.以下選項(xiàng)中可作為C語言合法常量的是()。

A.-80B.-80C.-80.0D.-80.0e

42.設(shè)已包含頭文件<string.h>,下列程序段的運(yùn)行結(jié)果是()。chars1[]={"ACDEF"};chars2[]="ABC";strcpy(s1,s2);printf("%d",strlen(s1));

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

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

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

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

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

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

44.fgetc函數(shù)的作用是從指定文件讀入一個(gè)個(gè)字符,該文件的打開方式必須是______。

A.只讀B.追加C.讀或讀寫D.以上均正確

45.有以下程序main(){char*s="abcde";s+=2;printf("%ld\n",s);}程序運(yùn)行后的輸出結(jié)果是()

A.cdeB.字符c的ASCII碼值C.字符c的地址D.出錯(cuò)

46.有以下程序:#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;for(p=a;p<a+10;p++)printf("%d,",*p);}程序運(yùn)行后的輸出結(jié)果是()。

A.1,2,3,4,5,6,7,8,9,0,

B.2,3,4,5,6,7,8,9,10,1,

C.0,1,2,3,4,5,6,7,8,9,

D.1,1,1,1,1,1,1,1,1,1,

47.對(duì)建立良好的程序設(shè)計(jì)風(fēng)格,下面描述正確的是()

A.程序應(yīng)簡單、清晰、可讀性好B.符號(hào)名的命名只要符合語法C.充分考慮程序的執(zhí)行效率D.程序的注釋可有可無

48.以下選項(xiàng)中不能正確把cl定義成結(jié)構(gòu)體變量的是A.typedefstruct{intred;intgreen;intblue;}COLOR;COLORcl;

B.structcolorcl{intred;intgreen;intblue;}

C.structcolor{intred;intgreen;intblue;}cl;

D.struct{intred;intgreen;intblue;}cl;

49.若有以下結(jié)構(gòu)體,則正確的定義或引用的是()。structTest{intx;inty;}vl;

A.Test.x=10;

B.Testv2;v2.x=10;

C.struetv2;v2.x=10;

D.structTestv2={10};

50.有以下程序

main()

{intk=5,n=0;

do

{switch(k)

{case1:case3:n+=1;k--;break;

default:n=0;k--;

case2:case4:n+=2;k--;break;

}

printf("%d",n);

}while(k>0&&n<5);

}

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

A.235B.0235C.02356D.2356

51.數(shù)據(jù)結(jié)構(gòu)作為計(jì)算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對(duì)各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算,以及()。A.A.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)B.計(jì)算方法C.數(shù)據(jù)映象D.邏輯存儲(chǔ)

52.有以下程序:main(){intx=102,y=012;printf(“%2d,%2d\n”,x,y);}執(zhí)行后輸出結(jié)果是()。

A.10,01B.02,12C.102,10D.02,10

53.在C語言中,下列關(guān)于文件操作的敘述正確的是()。

A.對(duì)文件操作必須先關(guān)閉文件B.對(duì)文件操作必須先打開文件C.對(duì)文件操作順序沒有統(tǒng)一規(guī)定D.以上全錯(cuò)

54.已知大寫字母B的ASCII碼值是66,小寫字母b的ASCII碼值是98,則用八進(jìn)制表示的字符常量'\142'是()

A.字符BB.字符bC.字符aD.非法的常量

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

A.軟件交付使用后還需要進(jìn)行維護(hù)

B.軟件一旦交付使用就不需要再進(jìn)行維護(hù)

C.軟件交付使用后其生命周期就結(jié)束

D.軟件維護(hù)是指修復(fù)程序中被破壞的指令

56.下列程序的運(yùn)行結(jié)果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}

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

57.變量a所占的內(nèi)存字節(jié)數(shù)是______。

A.4

B.5

C.6

D.8unionU{charst[4];inti;longl;};StructA{intc;unionUu;}a;

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

A.scanf()B.getchar()C.gets()D.Setc()

59.有以下程序structSTU{charnum[10];floatscore[3];};main(){stmctSTUs[3]={{“20021”,90,95,85},{“20022”,95,80,75},{“20023”,100,95,90}},*p=s;inti;floatsum=0;for(i=0;i<3;i++)sum=sum+p->score[i];printf(“%6.2f\n”,sum);}程序運(yùn)行后的輸出結(jié)果是

A.260B.270C.280D.285

60.運(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";

四、選擇題(20題)61.

下列程序的運(yùn)行結(jié)果為()。

#include<stdio.h>

main

{structdate

{intyear,month,day;

}today;

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

}

A.8B.6C.10D.12

62.

63.for(i=1;i<=10;i=i+3)for(j=2;j<6;j++){··…·}的循環(huán)次數(shù)是()。

A.16B.18C.14D.12

64.以下程序的功能是

#include<stdio.h>

main()

{FILE*fp1;*fp2;

fp1=fopen("file1","r");

fp2=fopen("file2","w");

while(!feof(fp1))

fputc(fgetc(fp1),fp2);

fclose(fp1);

fclose(fp2);

}

A.將磁盤文件的內(nèi)容顯示在屏幕上

B.將兩個(gè)磁盤文件合為一個(gè)

C.將一個(gè)磁盤文件復(fù)制到另一個(gè)磁盤文件中

D.將兩個(gè)磁盤文件合并后送屏幕

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

A.115LB.0118C.1.5el.5D.0115

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

A.C語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)

B.打開一個(gè)已存在的文件并進(jìn)行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋

C.在一個(gè)程序中當(dāng)對(duì)文件進(jìn)了寫操作后,必須先關(guān)閉該文件然后再打開,才能讀到第1個(gè)數(shù)據(jù)

D.當(dāng)對(duì)文件的讀(寫)操作完成之后,必須將它關(guān)閉,否則可能導(dǎo)致數(shù)據(jù)丟失

67.

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

A.冒泡排序B.簡單選擇排序C.直接插入排序D.堆排序

69.

70.軟件設(shè)計(jì)包括軟件的結(jié)構(gòu)、數(shù)據(jù)接口和過程設(shè)計(jì),其中軟件的過程設(shè)計(jì)是指()

A.模塊間的關(guān)系B.系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述C.軟件層次結(jié)構(gòu)D.軟件開發(fā)過程

71.

72.

73.

74.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A.軟件集成測試計(jì)劃B.軟件詳細(xì)設(shè)計(jì)說明書C.用戶手冊(cè)D.軟件需求規(guī)格說明書

75.

76.下列敘述中錯(cuò)誤的是()。A.在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致,

B.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的共享問題

C.數(shù)據(jù)庫設(shè)計(jì)是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫

D.數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持

77.有以下程序:

若從鍵盤輸入:ijkxyz<回車>,則輸出結(jié)果是()。

A.ijkk

B.ijkxyz

C.xyzxyz

D.jj

78.有以下程序:

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

A.AbcdefB.ABCDEFC.aBcDeFD.AbCdEf

79.

80.下面描述中錯(cuò)誤的是()。

A.系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細(xì)設(shè)計(jì)

B.軟件設(shè)計(jì)是將軟件需求轉(zhuǎn)換為軟件表示的過程

C.數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設(shè)計(jì)是軟件設(shè)計(jì)的任務(wù)之一

D.PAD圖是軟件詳細(xì)設(shè)計(jì)的表示工具

五、程序改錯(cuò)題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:用選擇法對(duì)數(shù)組中的m個(gè)元素按從小到大的順序進(jìn)行排序。

例如,排序前的數(shù)據(jù)為:1132-5214

則排序后的數(shù)據(jù)為:-52111432

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

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

試題程序:

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

參考答案

1.A解析:C語言中的函數(shù)可以進(jìn)行遞歸調(diào)用,但不能在函數(shù)中定義函數(shù),即函數(shù)不能嵌套定義。函數(shù)可以沒有返回值,若有返回值,則返回值類型必須確定。

2.BA選項(xiàng)去掉花括號(hào)后,賦值正確;C選項(xiàng)和D選項(xiàng)應(yīng)在定義時(shí)賦初值,因?yàn)閿?shù)組名相當(dāng)于常量,不能重新賦值。故本題答案為B選項(xiàng)。

3.B解析:本題考查的是外部變量的應(yīng)用。因?yàn)槌绦虻某跏糹nta=4;語句定義了外部變量a,在以后的執(zhí)行過程中,當(dāng)i=0時(shí),調(diào)用f(0)函數(shù),執(zhí)行的語句是else{inta=7;t+=a++;},此處程序中又定義了變量a,所以原來定義的外部變量在此不起作用,得到t=7,返回值語句returnt+a++;處,外部變量a起作用,返回值為7+5=12:當(dāng)i=1時(shí),調(diào)用f(1)函數(shù),執(zhí)行的是語句else{inta=6:t+=a++;},此處程序中又定義了變量a,所以原來定義的外部變量在此不起作用,得到t=6,返回值語句

4.D本題int*p[4]的作用是聲明一個(gè)指針數(shù)組,每個(gè)元素都是int*型指針。

5.D

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

7.B

8.B由題意可知:使用typedef將類型“struct{intx,y;}*”重命名為“USER”,所以函數(shù)fun的返回類型為“struct{intx,y;}*”,即指向結(jié)構(gòu)體類型的指針。故本題答案為B選項(xiàng)。

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

10.A本題考查函數(shù)值的類型。在函數(shù)調(diào)用時(shí),盡管Y的類型是float.x的類型是double,但是因?yàn)楹瘮?shù)定義時(shí)沒有指定類型說明,系統(tǒng)默認(rèn)函數(shù)值的類型為int型,所以計(jì)算后Y的類型是int型。

11.C

12.Bstrlen是求字符串的長度,結(jié)果為4,sizeof是求數(shù)組的長度,而數(shù)據(jù)在定義時(shí)已給出長度為10。

13.D

14.A

15.A條件表達(dá)式“x=表達(dá)式1?表達(dá)式2:表達(dá)式3”的含義是:先求解表達(dá)式1,若其值不為0(真),則求解表達(dá)式2,將表達(dá)式2的值賦給x;若表達(dá)式1的值為0(假),則求解表達(dá)式3,將表達(dá)式3的值賦給X。本題中與條件表達(dá)式“(x-y)”等價(jià)的是“(x-y<0||lx-y>0)”。故本題答案為A選項(xiàng)。

16.A

17.B

18.C解析:本題考查ifelse語句。第一個(gè)if語句,先判斷條件,發(fā)現(xiàn)a<b條件成立,執(zhí)行下列的語句;第二個(gè)if語句,先判斷條件,發(fā)現(xiàn)b<0條件不成立,則執(zhí)行與其配對(duì)的else語句,c+=1,得c=5。

19.B函數(shù)的值只能通過return語句返回主調(diào)函數(shù)。函數(shù)中允許有多個(gè)return語句,但每次只能調(diào)用一個(gè)return語句,因此只能返回一個(gè)函數(shù)值。不返回函數(shù)值的函數(shù),可以明確定義為“空類型”,類型說明符為void。故本題答案為B選項(xiàng)。

20.B[解析]在一個(gè)C語言程序中可以進(jìn)行多種算法的實(shí)現(xiàn),對(duì)算法的個(gè)數(shù)沒有規(guī)定,所以B)錯(cuò)誤。

21.m<10n%4!=0

22.一對(duì)多一對(duì)多解析:實(shí)體之間的聯(lián)系可以歸結(jié)為一對(duì)一、一對(duì)多與多對(duì)多。如果一個(gè)學(xué)校有許多學(xué)生,而一個(gè)教師只歸屬于一個(gè)學(xué)生,則實(shí)體集學(xué)校與實(shí)體集學(xué)生之間的聯(lián)系屬于一對(duì)多的聯(lián)系。

23.空間復(fù)雜度和時(shí)間復(fù)雜度空間復(fù)雜度和時(shí)間復(fù)雜度解析:算法的復(fù)雜性是指對(duì)一個(gè)在有限步驟內(nèi)終止算法和所需存儲(chǔ)空間大小的估計(jì)。算法所需存儲(chǔ)空間大小是算法的空間復(fù)雜性,算法的計(jì)算量是算法的時(shí)間復(fù)雜性。

24.x>=0x<aminx>=0x<amin解析:本題先從鍵盤接受數(shù)值,并分別賦給amax(用于保存最高成績)和amin(用于保存最低成績),然后通過while循環(huán)控制是否結(jié)束輸入,并且通過if語句來給amax和amin賦值。

25.p->dataqp->data\r\nq解析:本題考查的是鏈表這一數(shù)據(jù)結(jié)構(gòu)對(duì)結(jié)構(gòu)體變量中的數(shù)據(jù)的引用。鏈表的特點(diǎn)是結(jié)構(gòu)體變量中有兩個(gè)域,一個(gè)是數(shù)據(jù),一個(gè)是指向該結(jié)構(gòu)體變量類型的指針,用以指明鏈表的下一個(gè)結(jié)點(diǎn)。

26.63或26-163或26-1解析:在滿二叉樹中,每層結(jié)點(diǎn)都是滿的,即每層結(jié)點(diǎn)都具有最大結(jié)點(diǎn)數(shù)。深度為k的滿二叉樹,一共有2k-1個(gè)結(jié)點(diǎn),其中包括度為2的結(jié)點(diǎn)和葉子結(jié)點(diǎn)。因此,深度為7的滿二叉樹,一共有27-1個(gè)結(jié)點(diǎn),即127個(gè)結(jié)點(diǎn)。根據(jù)二叉樹的另一條性質(zhì),對(duì)任意一棵二叉樹,若終端結(jié)點(diǎn)(即葉子結(jié)點(diǎn))數(shù)為n0,而其度數(shù)為2的結(jié)點(diǎn)數(shù)為n2,則n0=n2+1。設(shè)深度為7的滿二叉樹中,度為2的結(jié)點(diǎn)個(gè)數(shù)為x,則改樹中葉子結(jié)點(diǎn)的個(gè)數(shù)為x+1。則應(yīng)滿足x+(x+1)=127,解該方程得到,x的值為63。結(jié)果上述分析可知,在深度為7的滿二叉樹中,度為2的結(jié)點(diǎn)個(gè)數(shù)為63。

27.3232解析:while(表達(dá)式)的功能是:首先計(jì)算表達(dá)式的值,若為真,則執(zhí)行循環(huán)體語句,執(zhí)行完畢,再計(jì)算表達(dá)式的值,若仍為真,則重復(fù)執(zhí)行循環(huán)體語句,直到表達(dá)式的值為假時(shí),結(jié)束while語句的執(zhí)行,繼續(xù)執(zhí)行while語句后面的語句:i=0時(shí)滿足循環(huán)條件,也滿足if的條件,執(zhí)行語句得i=11,a=11,第2次循環(huán)不滿足if的條件,執(zhí)行i--,i=10,執(zhí)行i+=11;a+=i后,得i=21,a=32,不滿足i<20,循環(huán)結(jié)束。

28.max=12min=2

29.x.link=&z;或x.link=y.link;或x.1ink=x.1ink->link;或x.1ink=*(x.link).link;x.link=&z;或x.link=y.link;或x.1ink=x.1ink->link;或x.1ink=*(x.link).link;解析:本題考核的知識(shí)點(diǎn)是鏈表中結(jié)點(diǎn)的刪除。要?jiǎng)h除結(jié)點(diǎn)y,只需要讓結(jié)點(diǎn)x的指針域指向y結(jié)點(diǎn)的指針域所指向的后續(xù)結(jié)點(diǎn)就可,因此只需把結(jié)點(diǎn)2的地址賦給x的指針域就可以了即讓結(jié)點(diǎn)x的指針域指向結(jié)點(diǎn)2。而結(jié)點(diǎn)z得地址保存在節(jié)點(diǎn)y的指針域中,因此只需把節(jié)點(diǎn)y的指針城賦值給節(jié)點(diǎn)x的指針域即可。

30.&a&bmaxintxyreturn(z)

31.00解析:函數(shù)getchar()是從鍵盤得用戶輸入的一個(gè)字符。用戶輸入的第1個(gè)字符a,不管后面輸入的是什么ch的值都是'a',因此條件(ch=getchar())=='e'為假,這個(gè)循環(huán)不會(huì)被執(zhí)行。

32.k=5k=5解析:本題主要考查了函數(shù)的遞歸調(diào)用方法。g=0或g=1或g=2是遞歸的終止條件,然后用回代的方法從一個(gè)已知值推出下一個(gè)值,直到計(jì)算出最終結(jié)果。

33.2121解析:外層switch語句后面括號(hào)里的x的值為1,所以執(zhí)行從casel:后面的語句開始執(zhí)行,而cascl:后面語句也為switch語句,這個(gè)switch語句后面括號(hào)里的y的值為0,所以從該switch語句里的case0:開始執(zhí)行即執(zhí)行a++,這時(shí)a的值變?yōu)?,執(zhí)行完畢,遇到break語句,退出內(nèi)層switch語句,又回到外層switch語句,繼續(xù)執(zhí)行casel:下面的語句即case2:執(zhí)行完畢后,a自加1變?yōu)?,b自加1變?yōu)?。所以最后輸出的a和b的值為21。

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

35.abcfgabcfg解析:本題考查的是字符數(shù)組用作函數(shù)參數(shù)。C語言中數(shù)組名可以看作該數(shù)組首地址的常量指針、因此可以直接傳遞給指針類型的參數(shù)。本題的主函數(shù)調(diào)用fun(s,3,strlen(s));后,函數(shù)中for循環(huán)就是for(i=3;i<strlen(s)-1;i++),即i從3遞增到字符數(shù)組s的長度-2位置,循環(huán)中讓s[i]=s[i+2],所以函數(shù)fun()實(shí)現(xiàn)的功能簡單來說就是將字符串s下標(biāo)為p+2~k范圍的字符整體復(fù)制到字符串s下標(biāo)為p~k-2的位置上。在本題中strlen(s)返回s的長度7,所以復(fù)制的字符為s[5]~s[7],即'f'、'g','\\0'三個(gè)字符,復(fù)制到s[3]~s[5],故最終輸出的字符串為abcfg(因?yàn)閟[5]為'\\0',所以后面的字符不會(huì)輸出)。

36.xx*x+1x\r\nx*x+1解析:本題考查函數(shù)的調(diào)用。P(x)的含義為x的平方加1,所以第一處應(yīng)填x;第二處應(yīng)填x*x+1。

37.GGGHGGGH解析:由于在函數(shù)main中定義了數(shù)組變量b,其將屏蔽全局變量b。對(duì)于一維數(shù)紐變量,其值為一常數(shù),等于數(shù)組首元素地址。strcpy(&b[0],'GH'),是將字符串'GH'復(fù)制到數(shù)組b中從首元數(shù)開始的空間中,此是b中的字符串為”叫”:strcpy(&b[1],'GH'),是將字符串'GH'復(fù)制到數(shù)組b中從第二個(gè)元素開始的空間中,此是b中的字符串為“GH”。執(zhí)行第三次strcpy函數(shù)后,b中的字符串為'GGGH'。

38.繼承繼承

39.投影專門關(guān)系運(yùn)算包括對(duì)單個(gè)關(guān)系進(jìn)行垂直分解(投影操作)或水平分解(選擇操作)和對(duì)多個(gè)關(guān)系的結(jié)合(連接操作)等。

40.2468

41.A

42.A解析:頭文件<string.h>是字符串處理函數(shù)對(duì)應(yīng)的頭文件,要想調(diào)用C語言的庫函數(shù)時(shí),都要在程序中嵌入該函數(shù)對(duì)應(yīng)的頭文件,否則無法使用庫函數(shù)。

strcpy(s1,s2)把s2中的字符串復(fù)制到s1中,所以結(jié)果就為s2的長度。

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

44.D解析:fgetc函數(shù)是指從指定的文件讀入一個(gè)字符,該文件必須是以讀或讀寫方式打開的。fgetc函數(shù)的調(diào)用形式為:ch=fgetc(fp);。

45.C

46.A解析:C語言規(guī)定數(shù)組名代表數(shù)組的首地址,所以for循環(huán)中循環(huán)變量p的初值即&a[o),故輸出的*p的值為a[0]的值。執(zhí)行p++后,指針變量P指向a[1],這時(shí)輸出*P即輸出a[1]的值,經(jīng)過10次循環(huán),將輸出a數(shù)組的全部數(shù)據(jù):

1,2,3,4,5,6,7,8,9,0,

47.A解析:符號(hào)名的命名不僅要符合語法,而且符號(hào)名的命名應(yīng)具有一定實(shí)際含義,以便于對(duì)程序功能的理解。所以,選項(xiàng)B錯(cuò)誤。程序設(shè)計(jì)風(fēng)格強(qiáng)調(diào)“清晰第一,效率第二”,而不是效率第一。所以,選項(xiàng)C錯(cuò)誤。程序中的注釋部分雖然不是程序的功能,計(jì)算機(jī)在執(zhí)行程序時(shí)也不會(huì)執(zhí)行它,但在程序中加入正確的注釋能夠幫助讀者理解程序,注釋是提高程序可讀性的重要手段。所以,選項(xiàng)D錯(cuò)誤。本題的正確答案為A。

48.B解析:選項(xiàng)A)是把結(jié)構(gòu)體類型改名后定義為變量cl。選項(xiàng)C),D)則是在定義結(jié)構(gòu)體類型時(shí)定義變量,而選項(xiàng)B)不符合結(jié)構(gòu)體類型定義的語法規(guī)則。

49.D解析:此題考查結(jié)構(gòu)體的定義和引用。選項(xiàng)A)的錯(cuò)誤是通過結(jié)構(gòu)體名引用結(jié)構(gòu)體成員;選項(xiàng)B)的錯(cuò)誤是將結(jié)構(gòu)體名作為類型名使用;選項(xiàng)C)的錯(cuò)誤是將關(guān)鍵字struct作為類型名使用;選項(xiàng)D)是定義變量v2并對(duì)其初始化的語句,初始值只有前一部分,這是允許的。

50.A解析:因?yàn)樽兞康某跏贾捣謩e為'k=5,n=0',所以程序第一次進(jìn)入循環(huán)時(shí),執(zhí)行default語句,這時(shí)k=4,執(zhí)行'case4:'這個(gè)分支,結(jié)果是'n=2,k=3',打印出2;程序然后進(jìn)行第二次循環(huán),這時(shí)'n=2,k=3',執(zhí)行'case3:'這個(gè)分支,結(jié)果是'n=3,k=2',打印出3;程序進(jìn)行第三次循環(huán),這時(shí)'n=3,k=2',執(zhí)行'case2:case4:'這兩個(gè)分支,結(jié)果是\ue008'n=5,k=1'\ue009,打印出5,這時(shí)因?yàn)閚=5不滿足n<5的循環(huán)條件,因此退出循環(huán),程序運(yùn)行結(jié)束,故輸出結(jié)果為235。

51.A解析:數(shù)據(jù)結(jié)構(gòu)作為計(jì)算機(jī)的一門學(xué)科,主要研究和討論以下三個(gè)方面的問題:①數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系,即數(shù)據(jù)的邏輯結(jié)構(gòu);②在對(duì)數(shù)據(jù)進(jìn)行處理時(shí),各數(shù)據(jù)元素在計(jì)算機(jī)中的存儲(chǔ)關(guān)系,即數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu);③對(duì)各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算。

52.C解析:本題中,printf('%2d,%2d\\n',x,y)表示輸出形式是十進(jìn)制整數(shù),域?qū)捠?,而在C語言中規(guī)定:當(dāng)域?qū)捫∮趯?shí)際寬度時(shí)域?qū)挷黄鹱饔?,按?shí)際寬度輸出因此最后的輸出值為102和10,所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。

53.B解析:本題考查對(duì)文件的操作。文件打開后才可以對(duì)文件進(jìn)行操作,使用結(jié)束后要關(guān)閉文件。對(duì)文件的操作都是順序讀寫,即從文件的第一個(gè)數(shù)據(jù)開始,依次進(jìn)行讀寫。

54.B

55.A解析:維護(hù)是軟件生命周期的最后一個(gè)階段,也是持續(xù)時(shí)間最長、付出代價(jià)最大的階段。軟件工程學(xué)的目的就在于提高軟件的可維護(hù)性,同時(shí)也要設(shè)法降低維護(hù)的代價(jià)。

軟件維護(hù)通常有以下四類;

①為糾正使用中出現(xiàn)的錯(cuò)誤而進(jìn)行的改正性維護(hù);

②為適應(yīng)環(huán)境變化而進(jìn)行的適應(yīng)性維護(hù);

③為改進(jìn)原有軟件而進(jìn)行的完善性維護(hù);

④為將來的可維護(hù)和可靠而進(jìn)行的預(yù)防性維護(hù)。

軟件維護(hù)不僅包括程序代碼的維護(hù),還包括文檔的維護(hù)。文檔可以分為用戶文檔和系統(tǒng)文檔兩類。但無論是哪類文檔,都必須與程序代碼同時(shí)維護(hù)。只有與程序代碼完全一致的文檔才有意義和價(jià)值。由此可知,本題中選項(xiàng)B、C、D中的說法都是錯(cuò)誤的。

56.D解析:本題考查while循環(huán)。第一次循環(huán),先拿x的值和(y-1)比較,此時(shí)x=1,y-1=2,循環(huán)條件成立,比較完將x的值加1,此時(shí)x=2,進(jìn)入循環(huán),a=a+1=1,判斷if語句的控制條件是否成立,y<x不成立,接著執(zhí)行下一次循環(huán)。第二次循環(huán),先拿x的值和(y-1)比較,此時(shí)x=2,y-1=1,循環(huán)條件成立,比較完將x的值加1,此時(shí)x=3,進(jìn)入循環(huán),a=a+1=2,判斷if語句的控制條件是否成立,y<x成立,執(zhí)行break語句退出循環(huán)。

57.C解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占內(nèi)存長度之和,而共用體變量所占的內(nèi)存長度等于最長的成員的長度。本題結(jié)構(gòu)體變量a中成員c為整型占2個(gè)字節(jié),共用體變量u最大長度為4個(gè)字節(jié),故選C。

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

59.B解析:程序中首先定義了一個(gè)結(jié)構(gòu)體,其成員為一字符數(shù)組和一浮點(diǎn)型數(shù)組。在main()首先定義了一個(gè)結(jié)構(gòu)體數(shù)組并初始化。接下來在for循環(huán)中遍歷了結(jié)構(gòu)體數(shù)組中的第一個(gè)元素中數(shù)組成員即{20021“,90,95,85”}循環(huán)結(jié)果為90+95+85=270最后sum為270,又輸出格式為“%6.2f\\n”要求保留兩位小數(shù)故最后輸出為270.00。

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

61.B

\nstructdate中包含year、month、day這3個(gè)整型變量,一個(gè)整型變量占2個(gè)字節(jié);sizeof是求所占字節(jié)數(shù)的運(yùn)算符。

\n

62.B

63.A

64.C本題主要考查文件的操作。在本題的程序中,首先定義了兩個(gè)文件指針fp1和fp2,然后用指針fp1指向一個(gè)以讀方式打開的文件file1,用指針fp2指向一個(gè)以寫方式打開的文件file1,接著執(zhí)行while循環(huán),循環(huán)的結(jié)束條件是(!feof(fp1))為假,即feof(fp1)為真,表示對(duì)文件fp1的操作讀取到結(jié)束符,因此,循環(huán)結(jié)束的條件是對(duì)文件file1的讀取結(jié)束,循環(huán)體語句fputc(fgetc(fp1),fp2);中用到了fgetc和fputc函數(shù),C語言提供這兩個(gè)函數(shù)對(duì)文本文件進(jìn)行字符的讀寫操作。fgetc(fp1)函數(shù)的作用是從輸入流fp1的當(dāng)前位置返回一個(gè)字符,并將文件指針指示器移到下一個(gè)字符處;fputc(ch,fp2)函數(shù)的作用是將字符ch的值寫入所指定的流文件的當(dāng)前位置處,并將文件指針后移一位。

根據(jù)上面的分析,可以知道循環(huán)結(jié)束后,即將指針fp1指向的文件復(fù)制到指針fp2指向的文件中,然后關(guān)閉兩個(gè)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論