2021-2022年湖南省常德市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第1頁
2021-2022年湖南省常德市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第2頁
2021-2022年湖南省常德市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第3頁
2021-2022年湖南省常德市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第4頁
2021-2022年湖南省常德市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩105頁未讀 繼續(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年湖南省常德市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.以下函數(shù)findmax擬實(shí)現(xiàn)在數(shù)組中查找最大值并作為函數(shù)值返回,但程序中有錯(cuò)導(dǎo)致不能實(shí)現(xiàn)預(yù)定功能。#defineMIN-2147483647intfindmax(intx[],intn){inti,max;for(i=0;i<n;i++){max=MIN;if(max<x[i])max=x[i];)returnmax;}造成錯(cuò)誤的原因是()。A.定義語句“inti,max;”中max未賦初值

B.賦值語句“max=MIN;”中,不應(yīng)給max賦MIN值

C.語句“if(max<x[i])max=x[i];”中判斷條件設(shè)置錯(cuò)誤

D.賦值語句“max-MIN;”放錯(cuò)了位置

2.有以下程序:#include<stdio.h>point(char*p){p+=3;}main()charb[4]={'a','b','c','d'},*p=b;point(p);printf("%c\n",*p);

A.aB.bC.cD.d

3.有以下程序:#include<stdio.h>main(){inta=7;while(a--);print[("%d\n",a);}程序運(yùn)行后的輸出結(jié)果是()。A.-1B.0C.1D.7

4.以下選項(xiàng)中不能用做C程序合法常量的是()。

A.1,234B.‘\123’C.123D.“\x7G”

5.有以下程序:

A.1,5,9,B.1,4,7,C.3,5,7,D.3,6,9,

6.

7.

8.鏈表不具備的特點(diǎn)是()。

A.可隨機(jī)訪問任一結(jié)點(diǎn)B.插入刪除不需要移動(dòng)元素C.不必事先估計(jì)存儲(chǔ)空間D.所需空間與其長度成正比

9.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序運(yùn)行后,若從鍵盤輸入(從第1列開始)

123<回車>

45678<回車>

則輸出結(jié)果是A.A.1267B.1256C.1278D.1245

10.第

2

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

#include"stdio.h"

main()

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

intcount=0,i=0;

while(k[i])

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

i++;}

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

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

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

11.對(duì)線性表進(jìn)行折半查找時(shí),必須要求線性表()。

A.順序方式存儲(chǔ)B.鏈?zhǔn)椒绞酱鎯?chǔ)C.以順序方式存儲(chǔ),且結(jié)點(diǎn)按關(guān)鍵字有序排列D.以鏈?zhǔn)椒绞酱鎯?chǔ),且結(jié)點(diǎn)按關(guān)鍵字有序排列

12.有以下程序:main(){intx[8]={8,7,6,5,O,0},*s;s=x+3;printf("%d\n",s[2]);}執(zhí)行后輸出結(jié)果是()。

A.隨機(jī)值B.0C.5D.6

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

A.宏替換不占用程序的運(yùn)行時(shí)間

B.預(yù)處理命令行必須位于源文件的開頭

C.在源文件的一行上可以有多條預(yù)處理命令

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

14.使用二分查找算法在一個(gè)有序序列中查找一個(gè)元素的時(shí)間復(fù)雜度為()

A.O(N)B.O(logN)C.O(N*N)D.O(N*logN)

15.運(yùn)算符________的優(yōu)先級(jí)最高。

A.[]B.+=C.?:D.++

16.若一棵二叉樹具有10個(gè)度為2的結(jié)點(diǎn),5個(gè)度為1的結(jié)點(diǎn),則度為0的結(jié)點(diǎn)的個(gè)數(shù)是()。

A.9B.11C.15D.不能確定

17.有以下程序:#include<stdio,h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當(dāng)運(yùn)行時(shí)輸入:a<回車>后,以下敘述正確的是()。

A.變量c1被賦予字符a,c2被賦予回車符

B.程序?qū)⒌却脩糨斎氲诙€(gè)字符

C.變量c1被賦予字符a,c2中仍是原有字符2

D.變量c1被賦予字符a,c2中將無確定值

18.設(shè)數(shù)據(jù)結(jié)構(gòu)A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},則數(shù)據(jù)結(jié)構(gòu)A是()。

A.線性結(jié)構(gòu)B.樹形結(jié)構(gòu)C.圖狀結(jié)構(gòu)D.集合

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

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

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

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

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

20.有以下程序:

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

A.1,3

B.2,3

C.1,4

D.1,2

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

doublesub(doublex,inty)

{intn;doublez;

for(n=1,z=x;n<y;n++)z=z*x;

returnz;}

main()

{doublea=2.0,b=4.0,c;

c=sub(a,b);printf("%f",c);}

22.下面程序的功能是:計(jì)算1~10之間的奇數(shù)之和與偶數(shù)之和,請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta,b,c,i;

a=c=0;

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

{a+=i;

【】;

c+=b;}

printf("偶數(shù)之和=%d\n",a);

printf("奇數(shù)之和=%d\n",c-11);}

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

main()

{charc=′z′;

printf("%c",c-25);}

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

main()

{char*p-"abcdefgh",*r;

long*q;

q=(long*)p;

q++;

r=[char*)q;

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

}

25.【】是數(shù)據(jù)庫設(shè)計(jì)的核心。

26.程序測(cè)試分為靜態(tài)分析和動(dòng)態(tài)測(cè)試。其中【】是指不執(zhí)行程序,而只是對(duì)程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。

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

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

{intk,r=0;

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

【】=r;

}

28.有以下程序

intsub(intn){retnrn(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若運(yùn)行時(shí)輸入:1234<回車>,程序的輸出結(jié)果是______。

29.以下程序的輸出結(jié)果是()。#definePR(ar)printf("ar=%d”,ar)main(){intj,a[]={1,8,3,7,6,13,17,15},*p=a+5;for(j=3;j;j--)switch(j){case1:case2:PR(*p++);break;case3:PR(*(--p));}}

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

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

printf("%d,",z<y?x++:y++);

printf("%d,%d",x,y);

}

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

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wb");

fwtite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

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

}

32.在關(guān)系運(yùn)算中,【】運(yùn)算是對(duì)兩個(gè)具有公共屬性的關(guān)系所進(jìn)行的運(yùn)算。

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

#include<stdio.h>

main()

{staticchara[]="language",b[]="program";

char*ptr1=a,*ptr2=b;

intk;

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

if(*(ptr1+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

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

main()

{imti,sum;

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

sum+=i;

printf("%d",sum);

}

35.結(jié)構(gòu)化分析方法是面向______進(jìn)行分析的方法。

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

main()

{intx=10,y=20,t=0;

if(x==y)t=x;x=Y;Y=t;

printf(“%d,%d\n”,x,y);

}

37.語句:x++;++x;x=1+x;執(zhí)行后都使變量x中的值增1,請(qǐng)寫出一條同一功能的賦值語句______。

38.以下程序的運(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);}

39.單元測(cè)試又稱模塊測(cè)試,一般采用【】測(cè)試。

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

main()

{

chara[]="Language",b[]="Programe";

char,p1,*p2;

intk;

p1=a,p2=b;

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

if*(p1+k)==*(p2+k))printf("%c",*(p1+k));

}

三、1.選擇題(20題)41.有關(guān)return語句說法不正確的是()。

A.系統(tǒng)默認(rèn)的返回值類型為整型,故當(dāng)函數(shù)的返回值為int型時(shí),在函數(shù)定義時(shí),返回值的類型說明可以省略

B.當(dāng)函數(shù)有返回值時(shí),凡是允許表達(dá)式出現(xiàn)的地方,都可以調(diào)用該函數(shù)

C.當(dāng)函數(shù)沒有返回值時(shí),函數(shù)的返回值類型可以說明為void型,它表示“無類型”或“空類型”

D.函數(shù)的返回值類型必須與return語句中的表達(dá)式值的類型一致,但C語言也允許不同;這時(shí),系統(tǒng)以函數(shù)定義時(shí)的返回值類型說明為準(zhǔn),并自動(dòng)地將return語句中表達(dá)式的值轉(zhuǎn)換為函數(shù)的返回值類型

42.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的()。

A.存儲(chǔ)問題B.共享問題C.安全問題D.保護(hù)問題

43.下列說法錯(cuò)誤的是()。

A.下列結(jié)構(gòu)體定義時(shí),占據(jù)了5個(gè)字節(jié)的空間structstudent{intnum;intage;charsex;}

B.結(jié)構(gòu)體的成員名可以與程序中的變量名相同

C.對(duì)結(jié)構(gòu)體中的成員可以單獨(dú)使用,它的作用相當(dāng)于普通變量

D.結(jié)構(gòu)體可以嵌套定義

44.以下程序運(yùn)行后的輸出結(jié)果是______。main(){inta,b,c;a=10;b=20;c=(a%b<1)||(a/b>1);printf(“%d%d%d\n",a,b,c);}

A.10200B.20100C.10100D.20200

45.以下能正確定義一維數(shù)組的選項(xiàng)是______。

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";

46.結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是______。

A.程序的規(guī)模B.程序的易讀性C.程序的執(zhí)行效率D.程序的可移植性

47.數(shù)據(jù)的獨(dú)立性是指______。

A.數(shù)據(jù)庫的數(shù)據(jù)相互獨(dú)立

B.DBMS和DB相互獨(dú)立

C.用戶應(yīng)用程序與數(shù)據(jù)庫的數(shù)據(jù)相互獨(dú)立

D.用戶應(yīng)用程序與DBMS相互獨(dú)立

48.有以下程序main(){chara1='M',a2='m';printf("%c\n",(a1,a2));}以下敘述中正確的是()。

A.程序輸出大寫字母MB.程序輸出小寫字母mC.格式說明符不足,程序出錯(cuò)D.程序運(yùn)行時(shí)產(chǎn)生出錯(cuò)信息

49.若以下選項(xiàng)中的變量已正確定義,則正確的賦值語句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

50.串的長度是______。A.A.串中不同字符的個(gè)數(shù)

B.串中不同字母的個(gè)數(shù)

C.串中所含字符的個(gè)數(shù)且字符個(gè)數(shù)大于零

D.串中所含字符的個(gè)數(shù)

51.若有函數(shù)內(nèi)部說明:inta[3][4];則數(shù)組a中各元素

A.可在程序的運(yùn)行階段得到初值0

B.可在程序的編譯階段得到初值0

C.不能得到確定的初值

D.可在程序的編譯或運(yùn)行階段得到初值0

52.若程序執(zhí)行時(shí)的輸入數(shù)據(jù)是"2473",則下述程序的輸出結(jié)果是

#include<stdio.h>

voidmain()

{intcs;

while((cs=getchar())!=;'\n')

{switch(cs-'2')

{case0

case1:putchar(cs+4);

case2:putchar(cs+4);

break;

case3:putchar(cs+3);default:putchar(cs+2);}}}

A.668977B.668966C.6677877D.6688766

53.以下選項(xiàng)中,能定義s為合法的結(jié)構(gòu)體變量的是()。

A.typedefstructabc{doublea;charb[10];}s;

B.struct{doublea;charb[10];}s;

C.structABC{doublea;charb[10];}ABCs;

D.typedefABC{doublea;charb[10];}ABCs;

54.下列定義不正確的有______。

A.#definePI3.141592

B.#defineS345;

C.intmax(x,y);intx,y;{}

D.intmax(int,int);

55.有以下程序:#include<stdio.h>main(){intk=4,n=0;for(;n<k;){n++;if(n%3!=0)continue;k--;}printf("%d,%d\n",k,n);}程序運(yùn)行后的輸出結(jié)果是()。

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

56.一個(gè)存儲(chǔ)結(jié)點(diǎn)存放一個(gè)______。

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

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

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

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

C.輸出語句中格式描述符非法

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

58.下面程序main(){intx=100,a=10,b=20,ok1=5,ok2=0;if(a<b)if(b!=15)if(!ok1)x=1;elseif(ok2)x=10;x=1;printf("%d\n",x);}的輸出是______。

A.-1B.0C.1D.不確定的值

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

60.下列語句中,錯(cuò)誤的是(x,y,a,b假設(shè)已經(jīng)定義好)

A.while(x=y)5;

B.dox++while(x==10);

C.while(0);

D.d02;while(a==b);

四、選擇題(20題)61.

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

#include<stdio.h>

voidfun(int*S,int*p)

{staticintt=3:

*p=s[t];

t--;

}

voidmain

{inta[]={2,3,4,5),k;

intx;

for(k=0,k<4,k++)

{fun(a,&x);

printf("%d,",x);

}

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

63.下列語句中,顯示沒有下畫線的超鏈接的語句是()。

A.a{text—decoration:none}

B.a{text—decoration:nounderline}

C.a{underline:none}

D.a{decoration:nounderline}

64.

65.

66.

當(dāng)輸入為"hello?"時(shí),下面程序的執(zhí)行結(jié)果是()。

#include<stdio.h>

main

{charc;

c=getchar;

while(c!=?)

{putehar(e);break;

}

}

A.RvfsuB.hC.?D.hello

67.(29)用樹形結(jié)構(gòu)來表示實(shí)體之間聯(lián)系的模型稱為()

A.關(guān)系模型

B.層次模型

C.網(wǎng)狀模型

D.數(shù)據(jù)模型

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

A.1B.7C.9D.13

69.在位運(yùn)算中,操作數(shù)左移一位,其結(jié)果相當(dāng)于A.A.操作數(shù)乘以2

B.操作數(shù)除以2

C.操作數(shù)除以4

D.操作數(shù)乘以4

70.

71.在C語言中,引用數(shù)組元素時(shí),其數(shù)組下標(biāo)的數(shù)據(jù)類型允許是()。

A.整型表達(dá)式B.整型常量C.整型常量或整型表達(dá)式D.任何類型的表達(dá)式

72.若有以下說明和定義,以下敘述中錯(cuò)誤的是(

)。uniondt{

int

a;char

b;double

c;}data;A.兩個(gè)共用體變量之間可以相互賦值B.變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等C.程序段:data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000D.共用體在初始化時(shí)只能用第一個(gè)成員的類型進(jìn)行初始化

73.數(shù)據(jù)庫系統(tǒng)的核心是()。

A.數(shù)據(jù)庫B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫管理員D.數(shù)據(jù)庫應(yīng)用系統(tǒng)

74.

75.

76.

77.若變量已正確定義并賦值,下面符合C語言要求的表達(dá)式是

A.a(chǎn):=b+1B.a(chǎn)=b=c+2C.int18.5%3D.a(chǎn)=a+7=c+b

78.在一個(gè)C語言源程序文件中所定義的全局變量,其作用域?yàn)?)。

A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

79.若有定義:則以下不能正確表示該數(shù)組元素的表達(dá)式是()。

80.

五、程序改錯(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)。

試題程序:

#include<stdio.h>

#defineM20

voidproc(inta[],intn)

{

inti,j,t,P;

//****found****

for(j=0;j<n-1;j++);

{

p=j;

for(i=j;i<n;i++)

if(a[[i]<a[p])

p=i;

t=a[p];

a[p]=aEj3;

//****found****

a[p]=t;

}

}

voidmain

{

intarr[M]={11,32,-5,2,14},i,m=5;

printf("排序前的數(shù)據(jù):");

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

printf("%d",arr[i]);

printf("\n");

proc(arr,m);

printf("排序后的順序:");

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

printf("%d",arr[i]);

printf("\n");

}

六、程序設(shè)計(jì)題(1題)82.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)proc,它的功能是:將字符串中的前導(dǎo)*號(hào)全部刪除,中間和后面的*號(hào)不刪除。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是a*bc*def*g****。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號(hào)中填入所編寫的若干語句。試題程序:#include<stdio.h=:{>#include<conio.h>woidproc(char*str){}voidmaincharstr[81];printf("Enterastring:\n");gets(str);proc(str):printf("Thestringafterdeleted:\n");puts(str);}

參考答案

1.D“max=MIN;”語句應(yīng)放在for循環(huán)之前,否則每次循環(huán)時(shí)都重新賦值,值沒有變化。

2.A解析:C函數(shù)的參數(shù)傳遞方式采用按值傳遞,不能通過調(diào)用函數(shù)改變形參指針本身的值,只能改變指針?biāo)缸兞康闹?。調(diào)用point函數(shù)時(shí),將實(shí)參指針p的值(b數(shù)組的首地址)傳給了形參指針P,P+=3運(yùn)算使形參指針指向字符d,但并不能改變main函數(shù)中p的值,所以本題正確答案應(yīng)該是選項(xiàng)A)。

3.A此題考查a--和--a之間的區(qū)別,當(dāng)while(a--)為真循環(huán)執(zhí)行,a--是執(zhí)行再減1,所以答案選擇A。

4.AA選項(xiàng)中逗號(hào)是一個(gè)操作符。

5.C即輸出x[0][2]x[l][1]x[2][0]分別為357。

6.D

7.A

8.A

9.D解析:putchar(c1)輸出1,putchar(c2)輸出2,printf(“%c%c\\n”,c5,c6)輸出45。

10.D

11.C

12.B解析:通過賦值語句“s=x+3”,使指針變量s指向數(shù)組元素x[3],輸出語句中的spl等價(jià)于*(s+2),即x[5]值為0。所以,B選項(xiàng)為所選。

13.A宏替換是在編譯階段前的預(yù)處理階段,對(duì)程序中的宏完成文本替換,因此宏替換不占用運(yùn)行時(shí)間,選項(xiàng)A正確;預(yù)處理命令行無須在源文件的開頭,它可以出現(xiàn)在程序的任何一行的開始部位,其作用一直持續(xù)到源文件的末尾,選項(xiàng)B錯(cuò)誤;在源文件的一行上至多只能有一條預(yù)處理命令,選項(xiàng)C錯(cuò)誤;宏名通常使用大寫字母表示,這并不是語法規(guī)定,只是一種習(xí)慣,選項(xiàng)D錯(cuò)誤。本題答案為A選項(xiàng)。

14.B

15.A

16.B

17.A解析:函數(shù)getchar()的作用是從終端(或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個(gè)字符,且只能接受一個(gè)字符(回車符也是一個(gè)字符)。故本題中變量c1被賦予字符a,c2被賦予回車符。

18.A

19.C\r\n軟件工程是試圖用工程、科學(xué)和數(shù)學(xué)的原理與方法研制、維護(hù)計(jì)算機(jī)軟件的有關(guān)技術(shù)及管理方法。軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)工程中需要應(yīng)用工程化的原則。軟件工程用來解決以下問題:軟件需求的增長得不到滿足、軟件開發(fā)成本和進(jìn)度無法控制、軟件質(zhì)量難以保證、軟件不可維護(hù)或維護(hù)程度低、軟件得成本不斷提高、軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。軟件項(xiàng)目的管理、軟件產(chǎn)品的生產(chǎn)率、軟件開發(fā)中的技術(shù)都是軟件工程需要解決的部分問題。因此選項(xiàng)C正確。

20.Af函數(shù)功能使第二個(gè)指針指向的元素增1,第一個(gè)指針指向的元素不變,所以答案選擇A)。

21.本程序的功能是求a的b次方本程序的功能是求a的b次方

22.b=i+1b=i+1解析:本題考查了for循環(huán)語句的執(zhí)行過程。i+=2是修正表達(dá)式,執(zhí)行一次循環(huán)體后i的值就增加2,i的初始值為0,每次加2之后和累加至a,所以a的值就是1~10之間的偶數(shù)之后;b的值是1~11之間的奇數(shù)和,但在輸出b值時(shí)c去掉多加的11,即為1~10之間的奇數(shù)之和。

23.aa解析:'z'的ASCII碼值為122,經(jīng)過c-25運(yùn)算后,得97,以字符形式輸出是a。

24.efghefgh解析:本題定義了一個(gè)字符型指針變量p并通過賦初值讓它指向了一個(gè)字符串,定義了另一個(gè)字符型指針變量r和一個(gè)長整型指針變量q。首先通過語句“q=(long*)p;”把P的地址值強(qiáng)制轉(zhuǎn)換為長整型地址值并賦值給q,然后執(zhí)行“q++;”,地址值增加了4,執(zhí)行語句“r=(char*)q”,把長整型指針變量q的值再強(qiáng)制轉(zhuǎn)換成字符型地址值并賦給r,r的值應(yīng)為字符串中字符“e”的地址,最后輸出r指向的字符串,是“efgh”。

25.數(shù)據(jù)模型數(shù)據(jù)模型

26.靜態(tài)分析靜態(tài)分析解析:程序測(cè)試分為靜態(tài)分析和動(dòng)態(tài)測(cè)試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對(duì)程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。

27.r+b[k]*x

28.1010解析:本題程序中定義了一個(gè)函數(shù)sub(),用來計(jì)算一個(gè)整數(shù)整除10的商和余數(shù)的和。在主函數(shù)中,首先用scanf()函數(shù)讀入一個(gè)十進(jìn)制整數(shù)1234,然后對(duì)1234三次嵌套調(diào)用函數(shù)svb()。首先看最里層的調(diào)用,應(yīng)該返回的值是123+4=127;然后中間一層調(diào)用應(yīng)該返回的是12+7=19;所以最外層調(diào)用返回1+9=10。故最后輸出10。

29.ar=6ar=6ar=13ar=6ar=6ar=13解析:通過*p=a+5將指針P指向a[5],第1次循環(huán),i=3時(shí),switch(3),執(zhí)行case3,*(-p)-a[4]=6,所以輸出ar=6;第2次循環(huán),j=2時(shí),switch(2),執(zhí)行case2,(*p++)是先引用a[4]的值6,輸出ar=6,再將指針P移位指向a[5];第3次循環(huán),j=1時(shí),switch(1),執(zhí)行case1,case1后沒有break語句,接著執(zhí)行case2,(*p++)是先引用a[5]的值13,輸出ar=13,再將指針P移位指向a[6]。

30.22132,2,1,3解析:本題考查++,--運(yùn)算符和條件運(yùn)算符的使用。

“表達(dá)式1?表達(dá)式2:表達(dá)式3”的功能是:表達(dá)式1的值若非0,則計(jì)算表達(dá)式2的值,且表達(dá)式2的值為最終結(jié)果;若表達(dá)式1的值為0,則計(jì)算表達(dá)式3的值,且為最終結(jié)果。

本題中,x=1,y=2時(shí),x<y成立,輸出y的值2;y=2,z=3時(shí),z<y不成立,執(zhí)行y++,輸出2后y值增1,所以最后一個(gè)輸出x的值不變?yōu)?,y的值為增加后的3。

31.12300123001,2,3,0,0,1,2,3,0,0,解析:本題考查文件讀寫函數(shù)fread和fwrite的用法。fwrite函數(shù)將數(shù)組a的前5個(gè)元素輸出到文件fp中兩次,共10個(gè)字節(jié),再調(diào)用fread函數(shù)從文件fp中讀取這10個(gè)字節(jié)的數(shù)據(jù)到數(shù)組a中,此時(shí)數(shù)組a的內(nèi)容就變?yōu)閧1,2,3,0,0,1,2,3,0,0},最后的輸出結(jié)果為'1,2,3,0,0,1,2,3,0,0,'。

32.自然連接自然連接解析:在關(guān)系運(yùn)算中,自然連接運(yùn)算是對(duì)兩個(gè)具有公共屬性的關(guān)系所進(jìn)行的運(yùn)算。

33.gaga解析:考查了用字符指針處理字符串的方法。用字符指針處理字符串,首先要使指針指向這個(gè)字符串,即題中的ptr1=a和ptr2=b,然后就是通過指針的移動(dòng)可以引用到字符串中的每一個(gè)字符。題中的*(ptr1+k)是使指針ptr1向后移動(dòng)k個(gè)位置,然后取出指向的字符。

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

35.數(shù)據(jù)流數(shù)據(jù)流解析:結(jié)構(gòu)化分析方法的實(shí)質(zhì)是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。

36.20020,0解析:在主函數(shù)中首先定義了三個(gè)整型變量x、y、t,并分別給它們賦初值為10,20,0,接著執(zhí)行if語句,在if后面括號(hào)內(nèi)的條件表達(dá)式中,條件“x==y”即“10==20”不成立,則不執(zhí)行其后的語句“t=x”,然后退出if語句,順序執(zhí)行語句x=Y;Y=t;。執(zhí)行完這兩條語句后x的值變?yōu)?0,y的值變?yōu)?,所以最后輸出x,y的值為20和0。

37.x+=1x+=1解析:本題考查“++”,“--”運(yùn)算符?!?+”、“--”只能作用于變量,不能用于表達(dá)式或常量;前綴形式是在使用變量之前先將其值增1或減1,后綴形式是先使用變量原來的值,使用完后再使其增1或減1。

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

39.白盒法白盒法

40.gaegae解析:本題定義了兩個(gè)字符串?dāng)?shù)組a[],b[],字符型指針變量p1和p2,且分別指向字符串?dāng)?shù)組a和b,抽打for循環(huán),當(dāng)if(*(p1+k)==*(p2+k))條件為真,執(zhí)行輸出*(p1+k)對(duì)應(yīng)的字符。即當(dāng)k=0時(shí),*(p1+k)對(duì)應(yīng)的字符串?dāng)?shù)組a中的字符L,*(p2+k)對(duì)應(yīng)的字符串?dāng)?shù)組b中字符P,因此if(*(p1+k)==*(p2+k))條件為假,不執(zhí)行printf語句,依此類推,將字符串?dāng)?shù)組a和b中對(duì)應(yīng)位置上的字符——比較,如果對(duì)應(yīng)位置上的字符相同,則輸出該字符。

41.D函數(shù)的返回值類型一般與return語句中的表達(dá)式值的類型一致,但C語言也允許不同;這時(shí),系統(tǒng)以函數(shù)定義時(shí)的返回值類型說明為準(zhǔn),并自動(dòng)地將return語句中表達(dá)式的值轉(zhuǎn)換為函數(shù)的返回值類型。

42.B解析:數(shù)據(jù)庫產(chǎn)生的背景就是計(jì)算機(jī)的應(yīng)用范圍越來越廣泛,數(shù)據(jù)量急劇增加,對(duì)數(shù)據(jù)共享的要求越來越高。共享的含義是多個(gè)用戶、多種語言、多個(gè)應(yīng)用程序相互覆蓋的使用一些公用的數(shù)據(jù)集合。在這樣的背景下,為了滿足多用戶、多應(yīng)用共,享數(shù)據(jù)的要求,就出現(xiàn)了數(shù)據(jù)庫技術(shù),以便對(duì)數(shù)據(jù)庫進(jìn)行管理。因此,數(shù)據(jù)庫技術(shù)的根本目標(biāo)就是解決數(shù)據(jù)的共享問題。故選項(xiàng)B正確。

43.A解析:本題主要考查定義結(jié)構(gòu)體的幾個(gè)特點(diǎn):①結(jié)構(gòu)的定義明確了結(jié)構(gòu)的組成形式,定義了一種C語言中沒有而用戶需要的新的數(shù)據(jù)類型。與其他的數(shù)據(jù)類型不同,在程序編譯的時(shí)候結(jié)構(gòu)的定義并不會(huì)使系統(tǒng)為該結(jié)構(gòu)分配內(nèi)存空間,只有在說明結(jié)構(gòu)變量時(shí)才分配內(nèi)存空間;②結(jié)構(gòu)體的成員名可以與程序中的變量名相同;⑧結(jié)構(gòu)體中的成員可以單獨(dú)使用,它的作用相當(dāng)于普通變量;④結(jié)構(gòu)體可以嵌套定義。

44.A解析:a%b=1<1不成立,根據(jù)“||”的性質(zhì),不需要看后面的表達(dá)式,就可以得出c=0。

45.B解析:選項(xiàng)A)定義的是長度為5的數(shù)組元素,但初值有6個(gè)元素,所以錯(cuò)誤;選項(xiàng)C)不符合數(shù)組定義形式,數(shù)組名后應(yīng)加上“[];選項(xiàng)D)的類型說明符錯(cuò)誤,應(yīng)改為char;選項(xiàng)B)中的0,1,2,3,4,5分別表示對(duì)應(yīng)字符的ASCII碼,所以正確。

46.B解析:采用結(jié)構(gòu)化編程方法的好處主要在于:一是便于控制、降低程序的復(fù)雜性,因此便于編寫程序。二是程序清晰易讀,可理解性好。因此,結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是程序的易讀性,而不是程序的規(guī)模、程序的執(zhí)行效率和程序的可移植性。

47.C解析:修改數(shù)據(jù)庫的物理結(jié)構(gòu)或邏輯結(jié)構(gòu)時(shí),通過兩級(jí)映像,可以使得應(yīng)用程序不必修改,保證數(shù)據(jù)的獨(dú)立性。數(shù)據(jù)的獨(dú)立性包括物理獨(dú)立性和邏輯獨(dú)立性。

48.B解析:(a1,a2)是一個(gè)逗號(hào)表達(dá)式,它的值為a2的值即m,以字符格式輸出表達(dá)式的值即輸出小寫字母m。

49.C解析:賦值的一般形式為:變量名:表達(dá)式;,賦值的方向?yàn)橛捎蚁蜃螅磳ⅲ河覀?cè)表達(dá)式的值賦給:左側(cè)的變量,執(zhí)行步驟是先計(jì)算再賦值。選項(xiàng)A中運(yùn)算符%的運(yùn)算對(duì)象必須為整數(shù),而選項(xiàng)A中26.8不為整數(shù),故選項(xiàng)A不正確;選項(xiàng)B將一個(gè)變量賦值給一個(gè)常量,這在C語言中是不允許的,故選項(xiàng)B不正確;選項(xiàng)D中也是將一個(gè)常量3賦值給一個(gè)常量,故選項(xiàng)D不正確;所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。

50.D解析:串的長度指的是串中字符的個(gè)數(shù),且其字符個(gè)數(shù)可以為零。選項(xiàng)D正確。

51.C本題主要考查數(shù)組的定義及初始化。在對(duì)數(shù)組進(jìn)行定義和初始化時(shí),需要注意以下事項(xiàng)。

(1)數(shù)組的內(nèi)存空間在編譯時(shí)確定,定義數(shù)組時(shí)的n值只能使用常量,不能使用變量。

(2)定義數(shù)組時(shí)可以不標(biāo)明數(shù)組元素的個(gè)數(shù),而是通過賦初值的方式確定,編譯系統(tǒng)將自動(dòng)計(jì)算花括號(hào)內(nèi)的數(shù)據(jù)數(shù)量作為數(shù)組的元素個(gè)數(shù)。

(3)數(shù)組初始化時(shí),當(dāng)初值的個(gè)數(shù)小于整型常量n時(shí),編譯系統(tǒng)會(huì)自動(dòng)補(bǔ)0。一旦給定初值數(shù)超過n,編譯系統(tǒng)將報(bào)錯(cuò)。

(4)初始化數(shù)組的元素類型,必須與定義數(shù)組時(shí)的類型一致。

(5)數(shù)組名記錄了數(shù)組在內(nèi)存中的首地址,其值不能更改。

(6)除字符數(shù)組外,不能直接用數(shù)組名對(duì)數(shù)組進(jìn)行整體輸入或輸出。

本題中定義了一個(gè)3行4列的數(shù)組,但沒有對(duì)其進(jìn)行賦初值操作,可能我們會(huì)想在系統(tǒng)編譯時(shí)會(huì)自動(dòng)補(bǔ)0,這只是在初值個(gè)數(shù)小于數(shù)組定義大小的情況下的操作,如果沒有進(jìn)行賦初值操作,數(shù)組中的元素值是不能被確定的。因此,本題答案選C。

52.A解析:本題主要考查switch語句的使用方法。switch語句的執(zhí)行過程為:進(jìn)入switch結(jié)構(gòu)后,對(duì)條件表達(dá)式進(jìn)行運(yùn)算,然后從上至下去找與條件表達(dá)式值相匹配的case,以此作為入口,執(zhí)行switch結(jié)構(gòu)中后面的各語句,直到遇到break語句,則跳出switch語句,如果各case都不匹配時(shí),則執(zhí)行default后面的語句。

53.B解析:定義一個(gè)結(jié)構(gòu)體類型的變量,可采用三種方法:

①先定義結(jié)構(gòu)體類型,再定義變量名。

②在定義類型的同時(shí)定義變量。

③直接定義結(jié)構(gòu)體類型變量,即不出現(xiàn)結(jié)構(gòu)體名。

選項(xiàng)B)符合第三種定義方法。

54.C解析:定義函數(shù)時(shí),函數(shù)頭后不能加分號(hào)。

55.C解析:本題考查循環(huán)和continue語句,continue語句的功能是結(jié)束本次循環(huán)。n從0開始循環(huán),判斷n%3!=0是否成立,如果成立,結(jié)束本次循環(huán),繼續(xù)下一次for循環(huán);否則執(zhí)行k--,并繼續(xù)下一次for循環(huán),直至循環(huán)結(jié)束。在程序中,當(dāng)n取1,2時(shí),不執(zhí)行k--,當(dāng)n取3時(shí),執(zhí)行k--,k變?yōu)?,循環(huán)結(jié)束,輸出k,n的值分別為3,3。

56.B

57.D解析:在C語言程序中,可以用一個(gè)符號(hào)名來代表一個(gè)常量,稱為符號(hào)常量。這個(gè)符號(hào)名必須在程序中進(jìn)行特別的“指定”,并符合標(biāo)識(shí)符的命令規(guī)則。在本題中圓周率π是一個(gè)符號(hào)常量,但在程序中并沒有指定其值,所以編譯器找不到其值就會(huì)報(bào)錯(cuò)。所以選項(xiàng)D)正確。

58.A解析:第一個(gè)判斷值為真,過渡到下一個(gè)判斷,第二個(gè)判斷為真,過度到第三個(gè)判斷......如此循環(huán),在打印輸出語句的前一行,程序給變量x賦了值,為-1,所以,無論前期如伺變化,最后的x值依然為-1。

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

60.B解析:do和while之間只能是一條可以執(zhí)行的語句。分號(hào)是語句的一部分。d…while執(zhí)行多條語句時(shí),應(yīng)用“{}”括起來,組成復(fù)合語句。

61.B

62.A依據(jù)fun函數(shù),可知其要實(shí)現(xiàn)的功能是將S中第(t+1)個(gè)元素以前的元素逆置賦給數(shù)組P。由于fun中函數(shù)定義了靜態(tài)變量t=3,因此,main函數(shù)中調(diào)用函數(shù)fun(a,&x)時(shí),就是要將數(shù)組a中前4個(gè)元素逆置賦給數(shù)x,最后輸出x數(shù)組。

63.A

64.C

65.C

66.A

\n本題考查getchar函數(shù)與putchar函數(shù),通過9etchar函數(shù)讀入字符,并通過putchar函數(shù)將字符逐個(gè)輸出,當(dāng)用戶輸入“?”時(shí)停止輸出,且c是一個(gè)字符變量只占一個(gè)字節(jié)。

\n

67.B

68.C1題中用動(dòng)態(tài)存儲(chǔ)分配函數(shù)mMloc分配了一個(gè)int型數(shù)據(jù)長度大1小的內(nèi)存,然后指針p指向了這段內(nèi)存,函數(shù)f中對(duì)P所指1向的數(shù)據(jù)進(jìn)行了賦值,P[1][1]為二維數(shù)組第二行第二列的元素,對(duì)應(yīng)于實(shí)參a的元素9,所以輸出結(jié)果為9。

69.A左移運(yùn)算符“<<”是雙目運(yùn)算符,其功能是把“<<”左邊的運(yùn)算數(shù)的各二進(jìn)位全部左移若干位,由“<<”右邊的數(shù)指定移動(dòng)的位數(shù),高位丟棄,低位補(bǔ)0。例如,a<<4是把a(bǔ)的各二進(jìn)位向左移動(dòng)4位。如a=00000011(十進(jìn)制3),左移4位后為00110000(十進(jìn)制48)。

70.D

71.C解析:在C語言中,引用數(shù)組元素時(shí),其數(shù)組下標(biāo)的數(shù)據(jù)類型可以是整型常量,也可以是整型表達(dá)式。

72.C浮點(diǎn)型占8個(gè)字節(jié),整型占4個(gè)字節(jié),當(dāng)把整型數(shù)據(jù)用浮點(diǎn)型格式輸出時(shí),結(jié)果為0.000000

73.B\n數(shù)據(jù)庫管理系統(tǒng)是一種軟件系統(tǒng),負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等,是數(shù)據(jù)庫系統(tǒng)的核心。

\n

74.A

75.D

76.A

77.B本題考查C語言表達(dá)式的語法。A選項(xiàng)中“:=”不是C語言中的運(yùn)算符。C選項(xiàng)中int是定義一個(gè)整型變量,后面不能夠跟算術(shù)表達(dá)式。D選項(xiàng)錯(cuò)誤地使用了賦值運(yùn)算符“=”,賦值運(yùn)算符只能將一個(gè)數(shù)據(jù)賦給一個(gè)變量,而不能夠?qū)Ρ磉_(dá)式進(jìn)行賦值。題目中a=a+7或a=c+d都是正確的表達(dá)式,a+7=c+d是錯(cuò)誤的。

78.D

\n全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個(gè)源文件結(jié)束止。當(dāng)全局變量定義在后,引用它的函數(shù)在前時(shí),應(yīng)該在引用它的函數(shù)中用extern對(duì)此全局變量進(jìn)行說明,以便通知編譯程序該變量是一個(gè)已在外部定義了的全局變量,這時(shí)全局變量的作用域從extern說明處起,延伸到該函數(shù)末尾。

\n

79.A本題考查的是通過指針引用二維數(shù)組元素。通過一維數(shù)組名或指向一維數(shù)組元素的指針來引用數(shù)組元素有兩種寫法:a[i]和*(a+i),它們是等價(jià)的。這是一種運(yùn)算符之間的等價(jià)轉(zhuǎn)換,就好像a一(b—c)等價(jià)于a-b+c一樣。知道了這種轉(zhuǎn)換,我們可以將之?dāng)U展到二維數(shù)組甚至任意維數(shù)組上來。因?yàn)榭谶\(yùn)算符的結(jié)合性是從左至右的,所以w[i珩]等價(jià)于(w[i][j],此時(shí)可以先將任意一個(gè)口運(yùn)算符轉(zhuǎn)換為指針形式為(·(w+i))[j]或*(w[i]+j),或者同時(shí)轉(zhuǎn)換為*(*(W+i)+j)。上述幾種形式都完全等價(jià)于w[il[j]。

80.C

81.(1)錯(cuò)誤:for(j=0;j<n-1;j++);

\n正確:for(j=0;j<n-1j++)

\n(2)錯(cuò)誤:a[p]=t;

\n正確:a[j]=t;

\n【解析】for循環(huán)結(jié)束的標(biāo)志是for后的一個(gè)語句,如果for后面直接跟一個(gè)分號(hào),說明是一個(gè)空循環(huán)不執(zhí)行任何功能,因此“for(j=0;j<n-1;j++);”后面的分號(hào)應(yīng)該去掉;當(dāng)a[i]<a[p]時(shí)兩元素互換,因此“a[p]=t;”應(yīng)改為“a[j]=t”。

\n82.\n\tvoidproc(char*str)\n\n\n\t{\n\n\n\tchar*p=str:\n\n\n\twhile(*p==*)p++;//通過P的移動(dòng)來達(dá)\n\n\n\t到使P指向第一個(gè)不是*號(hào)的字符\n\n\n\tfor(;*p!=\0

;p++,str++)//把從第一個(gè)\n\n\n\t不是*號(hào)的字符放到a中‘\n\n\n\t*str=*P:\n\n\n\t*str=\0

;//最后用\0作為字符串結(jié)束標(biāo)志\n\n\n\t}\n\n\n\t【解析】題目中要求將字符串中的前導(dǎo)*號(hào)全部刪除首先將指針p移動(dòng)到第一個(gè)不是*的字符,將指針P之后的字符放入原來的字符串中,并為新的字符串添加結(jié)束符。\n2021-2022年湖南省常德市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.以下函數(shù)findmax擬實(shí)現(xiàn)在數(shù)組中查找最大值并作為函數(shù)值返回,但程序中有錯(cuò)導(dǎo)致不能實(shí)現(xiàn)預(yù)定功能。#defineMIN-2147483647intfindmax(intx[],intn){inti,max;for(i=0;i<n;i++){max=MIN;if(max<x[i])max=x[i];)returnmax;}造成錯(cuò)誤的原因是()。A.定義語句“inti,max;”中max未賦初值

B.賦值語句“max=MIN;”中,不應(yīng)給max賦MIN值

C.語句“if(max<x[i])max=x[i];”中判斷條件設(shè)置錯(cuò)誤

D.賦值語句“max-MIN;”放錯(cuò)了位置

2.有以下程序:#include<stdio.h>point(char*p){p+=3;}main()charb[4]={'a','b','c','d'},*p=b;point(p);printf("%c\n",*p);

A.aB.bC.cD.d

3.有以下程序:#include<stdio.h>main(){inta=7;while(a--);print[("%d\n",a);}程序運(yùn)行后的輸出結(jié)果是()。A.-1B.0C.1D.7

4.以下選項(xiàng)中不能用做C程序合法常量的是()。

A.1,234B.‘\123’C.123D.“\x7G”

5.有以下程序:

A.1,5,9,B.1,4,7,C.3,5,7,D.3,6,9,

6.

7.

8.鏈表不具備的特點(diǎn)是()。

A.可隨機(jī)訪問任一結(jié)點(diǎn)B.插入刪除不需要移動(dòng)元素C.不必事先估計(jì)存儲(chǔ)空間D.所需空間與其長度成正比

9.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序運(yùn)行后,若從鍵盤輸入(從第1列開始)

123<回車>

45678<回車>

則輸出結(jié)果是A.A.1267B.1256C.1278D.1245

10.第

2

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

#include"stdio.h"

main()

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

intcount=0,i=0;

while(k[i])

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

i++;}

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

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

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

11.對(duì)線性表進(jìn)行折半查找時(shí),必須要求線性表()。

A.順序方式存儲(chǔ)B.鏈?zhǔn)椒绞酱鎯?chǔ)C.以順序方式存儲(chǔ),且結(jié)點(diǎn)按關(guān)鍵字有序排列D.以鏈?zhǔn)椒绞酱鎯?chǔ),且結(jié)點(diǎn)按關(guān)鍵字有序排列

12.有以下程序:main(){intx[8]={8,7,6,5,O,0},*s;s=x+3;printf("%d\n",s[2]);}執(zhí)行后輸出結(jié)果是()。

A.隨機(jī)值B.0C.5D.6

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

A.宏替換不占用程序的運(yùn)行時(shí)間

B.預(yù)處理命令行必須位于源文件的開頭

C.在源文件的一行上可以有多條預(yù)處理命令

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

14.使用二分查找算法在一個(gè)有序序列中查找一個(gè)元素的時(shí)間復(fù)雜度為()

A.O(N)B.O(logN)C.O(N*N)D.O(N*logN)

15.運(yùn)算符________的優(yōu)先級(jí)最高。

A.[]B.+=C.?:D.++

16.若一棵二叉樹具有10個(gè)度為2的結(jié)點(diǎn),5個(gè)度為1的結(jié)點(diǎn),則度為0的結(jié)點(diǎn)的個(gè)數(shù)是()。

A.9B.11C.15D.不能確定

17.有以下程序:#include<stdio,h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當(dāng)運(yùn)行時(shí)輸入:a<回車>后,以下敘述正確的是()。

A.變量c1被賦予字符a,c2被賦予回車符

B.程序?qū)⒌却脩糨斎氲诙€(gè)字符

C.變量c1被賦予字符a,c2中仍是原有字符2

D.變量c1被賦予字符a,c2中將無確定值

18.設(shè)數(shù)據(jù)結(jié)構(gòu)A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},則數(shù)據(jù)結(jié)構(gòu)A是()。

A.線性結(jié)構(gòu)B.樹形結(jié)構(gòu)C.圖狀結(jié)構(gòu)D.集合

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

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

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

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

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

20.有以下程序:

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

A.1,3

B.2,3

C.1,4

D.1,2

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

doublesub(doublex,inty)

{intn;doublez;

for(n=1,z=x;n<y;n++)z=z*x;

returnz;}

main()

{doublea=2.0,b=4.0,c;

c=sub(a,b);printf("%f",c);}

22.下面程序的功能是:計(jì)算1~10之間的奇數(shù)之和與偶數(shù)之和,請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta,b,c,i;

a=c=0;

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

{a+=i;

【】;

c+=b;}

printf("偶數(shù)之和=%d\n",a);

printf("奇數(shù)之和=%d\n",c-11);}

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

main()

{charc=′z′;

printf("%c",c-25);}

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

main()

{char*p-"abcdefgh",*r;

long*q;

q=(long*)p;

q++;

r=[char*)q;

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

}

25.【】是數(shù)據(jù)庫設(shè)計(jì)的核心。

26.程序測(cè)試分為靜態(tài)分析和動(dòng)態(tài)測(cè)試。其中【】是指不執(zhí)行程序,而只是對(duì)程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。

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

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

{intk,r=0;

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

【】=r;

}

28.有以下程序

intsub(intn){retnrn(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若運(yùn)行時(shí)輸入:1234<回車>,程序的輸出結(jié)果是______。

29.以下程序的輸出結(jié)果是()。#definePR(ar)printf("ar=%d”,ar)main(){intj,a[]={1,8,3,7,6,13,17,15},*p=a+5;for(j=3;j;j--)switch(j){case1:case2:PR(*p++);break;case3:PR(*(--p));}}

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

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

printf("%d,",z<y?x++:y++);

printf("%d,%d",x,y);

}

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

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wb");

fwtite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

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

}

32.在關(guān)系運(yùn)算中,【】運(yùn)算是對(duì)兩個(gè)具有公共屬性的關(guān)系所進(jìn)行的運(yùn)算。

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

#include<stdio.h>

main()

{staticchara[]="language",b[]="program";

char*ptr1=a,*ptr2=b;

intk;

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

if(*(ptr1+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

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

main()

{imti,sum;

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

sum+=i;

printf("%d",sum);

}

35.結(jié)構(gòu)化分析方法是面向______進(jìn)行分析的方法。

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

main()

{intx=10,y=20,t=0;

if(x==y)t=x;x=Y;Y=t;

printf(“%d,%d\n”,x,y);

}

37.語句:x++;++x;x=1+x;執(zhí)行后都使變量x中的值增1,請(qǐng)寫出一條同一功能的賦值語句______。

38.以下程序的運(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);}

39.單元測(cè)試又稱模塊測(cè)試,一般采用【】測(cè)試。

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

main()

{

chara[]="Language",b[]="Programe";

char,p1,*p2;

intk;

p1=a,p2=b;

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

if*(p1+k)==*(p2+k))printf("%c",*(p1+k));

}

三、1.選擇題(20題)41.有關(guān)return語句說法不正確的是()。

A.系統(tǒng)默認(rèn)的返回值類型為整型,故當(dāng)函數(shù)的返回值為int型時(shí),在函數(shù)定義時(shí),返回值的類型說明可以省略

B.當(dāng)函數(shù)有返回值時(shí),凡是允許表達(dá)式出現(xiàn)的地方,都可以調(diào)用該函數(shù)

C.當(dāng)函數(shù)沒有返回值時(shí),函數(shù)的返回值類型可以說明為void型,它表示“無類型”或“空類型”

D.函數(shù)的返回值類型必須與return語句中的表達(dá)式值的類型一致,但C語言也允許不同;這時(shí),系統(tǒng)以函數(shù)定義時(shí)的返回值類型說明為準(zhǔn),并自動(dòng)地將return語句中表達(dá)式的值轉(zhuǎn)換為函數(shù)的返回值類型

42.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的()。

A.存儲(chǔ)問題B.共享問題C.安全問題D.保護(hù)問題

43.下列說法錯(cuò)誤的是()。

A.下列結(jié)構(gòu)體定義時(shí),占據(jù)了5個(gè)字節(jié)的空間structstudent{intnum;intage;charsex;}

B.結(jié)構(gòu)體的成員名可以與程序中的變量名相同

C.對(duì)結(jié)構(gòu)體中的成員可以單獨(dú)使用,它的作用相當(dāng)于普通變量

D.結(jié)構(gòu)體可以嵌套定義

44.以下程序運(yùn)行后的輸出結(jié)果是______。main(){inta,b,c;a=10;b=20;c=(a%b<1)||(a/b>1);printf(“%d%d%d\n",a,b,c);}

A.10200B.20100C.10100D.20200

45.以下能正確定義一維數(shù)組的選項(xiàng)是______。

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";

46.結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是______。

A.程序的規(guī)模B.程序的易讀性C.程序的執(zhí)行效率D.程序的可移植性

47.數(shù)據(jù)的獨(dú)立性是指______。

A.數(shù)據(jù)庫的數(shù)據(jù)相互獨(dú)立

B.DBMS和DB相互獨(dú)立

C.用戶應(yīng)用程序與數(shù)據(jù)庫的數(shù)據(jù)相互獨(dú)立

D.用戶應(yīng)用程序與DBMS相互獨(dú)立

48.有以下程序main(){chara1='M',a2='m';printf("%c\n",(a1,a2));}以下敘述中正確的是()。

A.程序輸出大寫字母MB.程序輸出小寫字母mC.格式說明符不足,程序出錯(cuò)D.程序運(yùn)行時(shí)產(chǎn)生出錯(cuò)信息

49.若以下選項(xiàng)中的變量已正確定義,則正確的賦值語句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

50.串的長度是______。A.A.串中不同字符的個(gè)數(shù)

B.串中不同字母的個(gè)數(shù)

C.串中所含字符的個(gè)數(shù)且字符個(gè)數(shù)大于零

D.串中所含字符的個(gè)數(shù)

51.若有函數(shù)內(nèi)部說明:inta[3][4];則數(shù)組a中各元素

A.可在程序的運(yùn)行階段得到初值0

B.可在程序的編譯階段得到初值0

C.不能得到確定的初值

D.可在程序的編譯或運(yùn)行階段得到初值0

52.若程序執(zhí)行時(shí)的輸入數(shù)據(jù)是"2473",則下述程序的輸出結(jié)果是

#include<stdio.h>

voidmain()

{intcs;

while((cs=getchar())!=;'\n')

{switch(cs-'2')

{case0

case1:putchar(cs+4);

case2:putchar(cs+4);

break;

case3:putchar(cs+3);default:putchar(cs+2);}}}

A.668977B.668966C.6677877D.6688766

53.以下選項(xiàng)中,能定義s為合法的結(jié)構(gòu)體變量的是()。

A.typedefstructabc{doublea;charb[10];}s;

B.struct{doublea;charb[10];}s;

C.structABC{doublea;charb[10];}ABCs;

D.typedefABC{doublea;charb[10];}ABCs;

54.下列定義不正確的有______。

A.#definePI3.141592

B.#defineS345;

C.intmax(x,y);intx,y;{}

D.intmax(int,int);

55.有以下程序:#include<stdio.h>main(){intk=4,n=0;for(;n<k;){n++;if(n%3!=0)continue;k--;}printf("%d,%d\n",k,n);}程序運(yùn)行后的輸出結(jié)果是()。

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

56.一個(gè)存儲(chǔ)結(jié)點(diǎn)存放一個(gè)______。

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

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

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

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

C.輸出語句中格式描述符非法

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

58.下面程序main(){intx=100,a=10,b=20,ok1=5,ok2=0;if(a<b)if(b!=15)if(!ok1)x=1;elseif(ok2)x=10;x=1;printf("%d\n",x);}的輸出是______。

A.-1B.0C.1D.不確定的值

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

60.下列語句中,錯(cuò)誤的是(x,y,a,b假設(shè)已經(jīng)定義好)

A.while(x=y)5;

B.dox++while(x==10);

C.while(0);

D.d02;while(a==b);

四、選擇題(20題)61.

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

#include<stdio.h>

voidfun(int*S,int*p)

{staticintt=3:

*p=s[t];

t--;

}

voidmain

{inta[]={2,3,4,5),k;

intx;

for(k=0,k<4,k++)

{fun(a,&x);

printf("%d,",x);

}

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

63.下列語句中,顯示沒有下畫線的超鏈接的語句是()。

A.a{text—decoration:none}

B.a{text—decoration:nounderline}

C.a{underline:none}

D.a{decoration:nounderline}

64.

65.

66.

當(dāng)輸入為"hello?"時(shí),下面程序的執(zhí)行結(jié)果是()。

#include<stdio.h>

main

{charc;

c=getchar;

while(c!=?)

{putehar(e);break;

}

}

A.RvfsuB.hC.?D.hello

67.(29)用樹形結(jié)構(gòu)來表示實(shí)體之間聯(lián)系的模型稱為()

A.關(guān)系模型

B.層次模型

C.網(wǎng)狀模型

D.數(shù)據(jù)模型

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

A.1B.7C.9D.13

69.在位運(yùn)算中,操作數(shù)左移一位,其結(jié)果相當(dāng)于A.A.操作數(shù)乘以2

B.操作數(shù)除以2

C.操作數(shù)除以4

D.操作數(shù)乘以4

70.

71.在C語言中,引用數(shù)組元素時(shí),其數(shù)組下標(biāo)的數(shù)據(jù)類型允許是()。

A.整型表達(dá)式B.整型常量C.整型常量或整型表達(dá)式D.任何類型的表達(dá)式

72.若有以下說明和定義,以下敘述中錯(cuò)誤的是(

)。uniondt{

int

a;char

b;double

c;}data;A.兩個(gè)共用體變量之間可以相互賦值B.變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等C.程序段:data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000D.共用體在初始化時(shí)只能用第一個(gè)成員的類型進(jìn)行初始化

73.數(shù)據(jù)庫系統(tǒng)的核心是()。

A.數(shù)據(jù)庫B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫管理員D.數(shù)據(jù)庫應(yīng)用系統(tǒng)

74.

75.

76.

77.若變量已正確定義并賦值,下面符合C語言要求的表達(dá)式是

A.a(chǎn):=b+1B.a(chǎn)=b=c+2C.int18.5%3D.a(chǎn)=a+7=c+b

78.在一個(gè)C語言源程序文件中所定義的全局變量,其作用域?yàn)?)。

A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

79.若有定義:則以下不能正確表示該數(shù)組元素的表達(dá)式是()。

80.

五、程序改錯(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)。

試題程序:

#include<stdio.h>

#defineM20

voidproc(inta[],intn)

{

inti,j,t,P;

//****found****

for(j=0;j<n-1;j++);

{

p=j;

for(i=j;i<n;i++)

if(a[[i]<a

溫馨提示

  • 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)論