2022年甘肅省白銀市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第1頁
2022年甘肅省白銀市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第2頁
2022年甘肅省白銀市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第3頁
2022年甘肅省白銀市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第4頁
2022年甘肅省白銀市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩59頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022年甘肅省白銀市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.在黑盒測試方法中,設(shè)計(jì)測試用例的主要根據(jù)是A.程序外部功能B.程序內(nèi)部邏輯C.程序數(shù)據(jù)結(jié)構(gòu)D.程序流程圖

2.以下程序的輸出結(jié)果是()。A.1010B.99C.910D.109

3.一個(gè)C語言程序總是從()開始執(zhí)行。

A.書寫順序的第一函數(shù)B.書寫順序的第一條執(zhí)行語句C.主函數(shù)main()D.不確定

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

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

5.下列關(guān)于棧的描述中錯(cuò)誤的是()。A.棧是先進(jìn)后出的線性表B.棧只能順序存儲(chǔ)C.棧具有記憶作用D.對(duì)棧的插入與刪除操作中,不需要改變棧底指針

6.若已包括頭文件且已有定義charsl[18],s2={"ABCDE")和inti,現(xiàn)要將字符串”ABCDE”賦給sl,下列語句錯(cuò)誤的是()。

A.strcpy(s1,s2)

B.strcpy(s1,"ABCDE");

C.sl="ABCDE";

D.for(i=0;i<6;i++)sl[i]=s2[i]

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

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

8.以下程序的主函數(shù)中調(diào)用了在其面前定義的fun函數(shù)#include<stdio.h>...main(){doublea[15],k;k=fun(a);...}則以下選項(xiàng)中錯(cuò)誤的fun函數(shù)首部是()。、A.doublefun(doublea[l5])

B.doublefun(double*a)

C.doublefun(doublea[])

D.doublefun(doublea)

9.下列關(guān)系表達(dá)式中,結(jié)果為“假”的是()。A.(3+4)>6B.(3!=4)>2C.3<=4||D.(3<4)=1

10.若有定義:“inta[2][3];”,則對(duì)a數(shù)組的第i行第j列元素的正確引用為()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

11.

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

13.在循環(huán)雙鏈表的p所指的結(jié)點(diǎn)之前插入s所指結(jié)點(diǎn)的操作是()。A.p->prior->prior

B.p->prior->prior

C.s->prior->next=s

D.s->prior->prior=s

14.以下能夠正確描述“k是大于0的偶數(shù)”的表達(dá)式是()。

A.(k>0)&&(k%2!=1)

B.(k>0)&&(k%2=0)

C.(k>0)||!(k%2)

D.(k>0)||(k%2==0)

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

A.“charc1,*c2,*c3[10];”是合法的變量定義語句

B.數(shù)組說明符的方括號(hào)中不能使用表達(dá)式

C.數(shù)組元素下標(biāo)可以是非整數(shù)

D.若有定義“chararray[4];”,則語句“printf(“%c”,array[“3”]);”是合法的

16.下列敘述中正確的是:()A.C語言程序總是從第一個(gè)定義的函數(shù)開始執(zhí)行

B.C語言程序中,函數(shù)類型必須進(jìn)行顯式聲明

C.C語言程序中,return語句必須放在函數(shù)的最后

D.C語言程序中,return語句中表達(dá)式的類型應(yīng)該與函數(shù)的類型一致

17.下列敘述中錯(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á)式

18.以下對(duì)軟件特點(diǎn)描述錯(cuò)誤的是()。

A.軟件的使用存在老化問題B.軟件的復(fù)雜性高C.軟件是一種邏輯實(shí)體,具有抽象性D.軟件的運(yùn)行對(duì)計(jì)算機(jī)系統(tǒng)具有依賴性

19.以下程序的輸出結(jié)果是()。unionmyun{struct{intx,y,z;)u;intk:}a;main{a.u.x=4;a.u.y=5;a.u.z=6;k=0;printf(%d\n",a.u.x);}A.4B.5C.6D.0

20.設(shè)有inta=15,b=240;,則表達(dá)式(a&b)&b||b的值為______。

A.0B.1C.真D.假

二、2.填空題(20題)21.當(dāng)運(yùn)行以下程序時(shí),輸入abcd,程序的輸出結(jié)果是:()。

insert(charstr[])

{inti;

i=strlen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

scanf("%s",str);insert(str);

}

22.若有下列定義和語句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結(jié)果為______。

23.以下程序的輸出是【】。

main()

{

charstr1[]="Howdoyoudo",*p1=str1;

strcpy(str1+strlen(str1)/2,"esshe");

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

}

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

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

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

}

25.軟件是程序、數(shù)據(jù)和【】的集合。

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

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

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

printf("\n");

}

27.常用的黑箱測試有等價(jià)分類法、【】、因果圖法和錯(cuò)誤推測法4種。

28.有以下程序段,且變量已正確定義和賦值

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

printf("s=%f\n\n",s);

請(qǐng)?zhí)羁?,使下面程序段的功能與之完全相同

S=1.0;k=1;

while([8]){s=s+1.0/(k*(k+1));[9];}

printf("s=%f\n\n",s);

29.以下程序的輸出結(jié)果是#include<stdio.h>structstiintx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[0],60,&it[0],60,&dt[0],};main(){p=aa;printf("%d\n",++(p->x));}

30.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個(gè)字節(jié)的動(dòng)態(tài)存儲(chǔ)空間,請(qǐng)?zhí)羁?。st=(char*)【】;

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

struetss

{intinfo;struetss*link;}x,y,z;

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

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

32.若有定義語句:inta=5;,則表達(dá)式:a++的值是【】。

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

#defineS(x)4*X*x+1

main()

{inti=6,j=8;

printf("%d\n",S(i+i));

}

34.數(shù)據(jù)庫系統(tǒng)中實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。

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

intn='c';

switch(n++)

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

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

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

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

}

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

#include<stdio.h>

main()

{inta=1234;

floatb=123.456;

doublec=12345.54321;

printf("\n%2d,%2.1f,%2.11f",a,b,C);

}

37.軟件測試的方法有動(dòng)態(tài)測試、靜態(tài)測試和【】13種。

38.若有如下程序:

voidsub()

{staticintx=6;

x/=2;printf("%d",x);}

main()

{intm;

for(m=0;m<=2;m++)sub();}

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

39.以下程序從輸入的10個(gè)字符串中找出最長的那個(gè)串,請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

#include<string.h>

#defineN10

main()

{charstr[N][81],*sp;

inti;

for(i=0;i<N;i++)gets(str[i]);

sp=str[0];

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

if(strlen(sp)<strlen(str[i]))

【】;

printf("輸出最長的那個(gè)串:\n%s\n",sp);

printf("輸出最長的那個(gè)串的長度:%d\n",strlen(sp));}

40.fseek函數(shù)的正確調(diào)用形式是【】。

三、1.選擇題(20題)41.下列二維數(shù)組初始化語句中,正確且與語句floata[][3]={0,3,8,0,9};等價(jià)的是

A.floata[2][]={{0,3,8},{0,9}};

B.floata[][3]={0,3,8,0,9,0};

C.floata[][3]={{0,3},{8,0},{9,0}};

D.floata[2][]={{0,3,8},{0,9,0}};

42.設(shè)a=5,bc6,c=7,d=8,m=2,n=2,執(zhí)行(m=a>b)&&(n=c>b)后n的值為______。

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

43.在嵌套使用if語句時(shí),C語言規(guī)定else總是A.和之前與其具有相同縮進(jìn)位置的if配對(duì)

B.和之前與其最近的if配對(duì)

C.和之前與其最近的且不帶else的if配對(duì)

D.和之前的第一個(gè)if配對(duì)

44.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%d\n",fib(3));}該程序的輸出結(jié)果是

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

45.若已定義: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]

46.定義結(jié)構(gòu)體數(shù)組:

structstu

{intnum;

charname[20];

}x[5]={1,"LI",2,"ZHAO",3,"WANG",4,"ZHANG",5,"LIU"};

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

printf("%d%c",x[i].num,x[i].name[2];

以上程序段的輸出結(jié)果為()。

A.2A3N4A5UB.112A3H41C.1A2N3A4UD.2H3A4H51

47.下列敘述中正確的是______。

A.C語言編譯時(shí)不檢查語法

B.C語言的子程序有過程和函數(shù)兩種

C.C語言的函數(shù)可以嵌套定義

D.C語言中,根據(jù)函數(shù)能否被其他源文件調(diào)用,被區(qū)分為內(nèi)部函數(shù)和外部函數(shù)

48.下列程序的輸出結(jié)果是()。point(char*pt);main(){charb[4]={'a','c','s','f},*pt=b;pt=point(pt);printf("%c\n",*pt);}point(char*p){p+=3;returnp;}

A.sB.cC.fD.a

49.下列程序的運(yùn)行結(jié)果為()。#defineMAX(x,y)(x)>(y)?(x):(y)main(){inta=2,b=3,c=1,d=3,t;printf("%d\n",(MAX(a+b,c+d))*100);}

A.500B.5C.4D.400

50.已定義下列函數(shù):intfun(int*p){return*p;)fun函數(shù)返回值是()。

A.不確定的值B.一個(gè)整數(shù)C.形參p中存放的值D.形參p的地址值

51.有以下程序,程序運(yùn)行后的輸出結(jié)果是______。intf(intb[][4]){inti,j,s=0;for(j=0;j<4;i++){i=j;if(i>2)i=3-j;s+=b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4},{0,2,4,6,},{3,6,9,12},{3,2,1,0}};printf("%d\n",f(A));}

A.22B.11C.18D.16

52.請(qǐng)選出正確的程序段

A.int*p;scanf("%d",p);…

B.int*s,k;*s=100;…

C.int*s,k;char*p,c;s=&k;p=&c;*p='a';…

D.int*s,k;char*p,e;s=&k;p=&c;s=p;*s=1;…

53.在16位IBM-PC機(jī)上使用C語言,若有如下定義structdata{inti;charch;doublef;}b;則結(jié)構(gòu)變量b占用內(nèi)存的字節(jié)數(shù)是

A.1B.2C.7D.11

54.堆排序是一種()排序。

A.插入B.選擇C.交換D.歸并

55.下述程序段的輸出結(jié)果是()intx=10;inty=x++;printf("%d,%d",(x++,y),y++);

A.11,10B.11,11C.10,10D.10,11

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

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

B.c程序可以由多個(gè)程序文件組成

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

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

57.以下變量x、y、z均為double類型且已正確賦值,不能正確表示數(shù)學(xué)式x/y×z的C語言表達(dá)式是()

A.x/y*z)B.x*(1/(y*z))C.x/y*1/z)D.x/y/z

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

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

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

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

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

59.設(shè)p1和p2是指向同一個(gè)int型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語句是______。

A.k=*p1+*p2;B.p2=k;C.p1=p2;D.k=*p1*(*p2);

60.執(zhí)行以下程序后i的值為()。main(){intx,i;for(i=l,x=1;i<=36;i++){if(x>=20)break;if(x%5==1){x+=5;continue;}x-=5;)printf("%d",i);}

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

四、選擇題(20題)61.下列選項(xiàng)中,能夠滿足“只要字符串sl等于字符串s2,則執(zhí)行sT”要求的是()。程序執(zhí)行后的輸出結(jié)果是()。

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

62.若有以下程序:inta=1,b=2:a=a^b:b=b^a:則執(zhí)行以上語句后a和b的值分別是()。

A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1

63.有以下程序程序執(zhí)行后的輸出結(jié)果是()。

A.y=-IB.y=oC.y=lD.while構(gòu)成無限循環(huán).

64.

65.以下語句的執(zhí)行結(jié)果是()。

intm=0,s=1;

do{

s+=m++;

}while(m<6);

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

A.17B.16C.15D.18

66.若二維數(shù)組a有m列,則在a[i][j]前的元素個(gè)數(shù)為()。

A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1

67.

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

A.程序的規(guī)模B.程序的效率C.程序設(shè)計(jì)語言的先進(jìn)性D.程序易讀性

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

70.算法的空間復(fù)雜度是指()。

A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲(chǔ)空間D.執(zhí)行算法需要的內(nèi)存空間

71.以下數(shù)據(jù)結(jié)構(gòu)中不屬于線性數(shù)據(jù)結(jié)構(gòu)的是______。

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

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

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

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

73.下面不屬于需求分析階段任務(wù)的是()。

A.確定軟件系統(tǒng)的功能需求B.確定軟件系統(tǒng)的性能需求C.需求規(guī)格說明書評(píng)審D.制定軟件集成測試計(jì)劃

74.

75.

有以下程序:

main

{union

{charch[2];

intd;

}s;

d=0x4321;

printf("%x,%x\n",S.ch[0],S.ch[l]);

}

在16位編譯系統(tǒng)上,程序執(zhí)行后的輸出結(jié)果是()

A.21,43B.43,21C.43,00D.21,00

76.有以下程序:

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

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

77.有以下程序:

#include<stdio.h>

main

{inty=10;

while(y--);

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

}

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

A.y=0B.y=-1C.y=lD.while構(gòu)成無限循環(huán)

78.

有以下程序.

#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)行后,若從鍵盤輸入(從第l列開始)

123<回車>

45678<回車>

則輸出結(jié)果是()。

A.1267B.1256C.1278D.1245

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

A.

B.

C.

D.

80.有下列二叉樹.對(duì)此二叉樹前序遍歷的結(jié)果為()。

A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXY7D.ABDYECFXZ

五、程序改錯(cuò)題(1題)81.寫出下列程序的運(yùn)行結(jié)果。

fun(inta,intb)

{if(a>b)return(a);

Elsereturn(b);}

main

{intx=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);printf(“%d\n”,r);}

六、程序設(shè)計(jì)題(1題)82.三個(gè)整數(shù)a、b、c,由鍵盤輸入,輸出其中最大的一個(gè)數(shù)。

參考答案

1.A【答案】:A

【知識(shí)點(diǎn)】:黑盒測試

【解析】:黑盒測試也稱功能測試或數(shù)據(jù)驅(qū)動(dòng)測試,它完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特征,只著眼于程序的外部結(jié)構(gòu),主要用來檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用。故選A。

2.D

3.C

4.B解析:在main函數(shù)中定義了一個(gè)structabc類型的數(shù)組,同時(shí)分別利用{1,2,3}及{4,5,6}對(duì)數(shù)組中兩個(gè)元素進(jìn)行初始化。在該結(jié)構(gòu)體,依次對(duì)其中的a,b,c三個(gè)變量進(jìn)行初始化。故s[0].a=1,s[1].b=5,所以本題輸出為6。

5.B棧是限定只能在表的一端進(jìn)行插入和刪除操作的線性表,入棧和出棧都是在棧頂進(jìn)行,它們的操作特點(diǎn)是先進(jìn)后出,因此具有記憶作用。??梢圆捎庙樞虼鎯?chǔ),也可以采用鏈?zhǔn)酱鎯?chǔ)。

6.C數(shù)組名sl是代表sl數(shù)組首地址的地址常量,因?yàn)椤?”左邊不能出現(xiàn)常量,所以s1="ABCDE"的方法是錯(cuò)誤的。

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

8.A由題可知fun的參數(shù)為變量,而a[15]為常量,所以答案為A。

9.B在一個(gè)表達(dá)式中,括號(hào)的優(yōu)先級(jí)高,先計(jì)算3!=4,為真即是l,1>2為假。

10.A解析:本題考查如何通過地址來引用數(shù)組元素。通過地址來引用數(shù)組元素的方法有下列5種:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

11.A

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

13.D

14.A判斷k大于0的表達(dá)式為“k>0”,判斷k是偶數(shù)的表達(dá)式為“k%2==0”或“k%2!=1”。兩個(gè)表達(dá)式必須都成立才能確定k是大于0的偶數(shù),則對(duì)應(yīng)的表達(dá)式為“(k>0)&&(k%2==0)”或“(k>0)&&(k%2!=1)”。故本題答案為A選項(xiàng)。

15.AC語言規(guī)定定義數(shù)組時(shí),數(shù)組的長度必須是整型常量,數(shù)組說明符的方括號(hào)中表達(dá)式只要是常量即合法,因此選項(xiàng)B錯(cuò)誤。C語言規(guī)定,數(shù)組元素下標(biāo)必須是非負(fù)整數(shù),因此選項(xiàng)C錯(cuò)誤。選項(xiàng)D中,“chararray[4]”數(shù)組的長度為4,“army[“3”]”中“3”是常量字符串,與C語言規(guī)定數(shù)組的下標(biāo)必須是非負(fù)整數(shù)不符。故本題答案為A選項(xiàng)。

16.DC程序程序總是從main函數(shù)開始執(zhí)行。C程序中如果沒有對(duì)函數(shù)類型進(jìn)行說明,則該函數(shù)默認(rèn)為int類型。return語句可以放在函數(shù)任意位置,但是return之后的語句不會(huì)被執(zhí)行。

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

18.A軟件具有以下特點(diǎn)。①軟件是一種邏輯實(shí)體,具有抽象性。②軟件沒有明顯的制作過程。③軟件在使用期間不存在磨損、老化問題。④對(duì)硬件和環(huán)境具有依賴性。⑤軟件復(fù)雜性高,成本高。⑥軟件開發(fā)涉及諸多的社會(huì)因素。本題答案為A選項(xiàng)。

19.D因?yàn)閍是結(jié)構(gòu)體變量,最后一次輸入的值為結(jié)構(gòu)體中的值,即a中的任何一個(gè)值都為0。

20.B

21.a*b*c*d*a*b*c*d*解析:字符處理函數(shù)strlen()測試字符串常量的長度,不包括‘\\0’在內(nèi)。因此,函數(shù)insert()實(shí)現(xiàn)了將字符數(shù)組中每個(gè)非‘\\0’的字符后插入字符‘*’的功能。故輸出結(jié)果是a*b*c*d*。

22.44解析:strcpy(s1,s2)函數(shù)的作用是將字符串s2中的內(nèi)容拷貝到字符串s1中的內(nèi)容覆蓋。strlen()函數(shù)是求字符串的長度。本題實(shí)際上是要求s2字符串的長度,即是4。

23.HowdoessheHowdoesshe解析:strcpy(str1,s1);字符串拷貝函數(shù),作用是將字符串s1拷貝到字符數(shù)組strl中去。strlen(str):測試字符串str的長度,函數(shù)的值為字符串中實(shí)際長度,不包括\'\\0\'在內(nèi)。本題中strlen(str1)的值為13,則strcpy(strl+strlen(strl)/2,'esshe');相當(dāng)于strcpy(strl+6,'esshe');,因此可得答案為Howdoesshe

24.282,8解析:do…while語句的功能是:首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達(dá)式的值,若為真,則重復(fù)執(zhí)行循環(huán)體語句,否則退出循環(huán)。這里程序初始時(shí)a=1,b=10,經(jīng)過操作b-=a;a++后b=9,a=2,判斷條件b--<O不成立,退出循環(huán),但b的值被減1,因此結(jié)果為:a=2,b=8。

25.文檔文檔解析:計(jì)算機(jī)軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。

26.246

27.邊值分析法邊值分析法解析:本題考查了黑箱測試的方法。黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測試用例。常用的黑箱測試有等價(jià)分類法、邊值分析法、因果圖法和錯(cuò)誤推測法。

28.本題要求將一個(gè)for循環(huán)改成while循環(huán)。首先要保證循環(huán)條件相同,在for循環(huán)中,每次執(zhí)行循環(huán)之后,循環(huán)控制變量k都會(huì)加1,而while循環(huán)則沒有,故需在循環(huán)體中增加改變k數(shù)值的語句“k++”。\r\n\r\n

29.C

30.malloc(11)malloc函數(shù)的格式是void*(或char*)malloc(size),size表示應(yīng)分配的存儲(chǔ)區(qū),此題要分配11字節(jié)的單元,把11代入即可。

31.x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;解析:鏈表中結(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)z的地址賦給x的指針域就可以了,即讓結(jié)點(diǎn)x的指針域指向結(jié)點(diǎn)z。而結(jié)點(diǎn)z的地址保存在結(jié)點(diǎn)y的指針域中,因此只需把結(jié)點(diǎn)y的指針域賦值給結(jié)點(diǎn)x的指針域即可。

32.55解析:a++的含義是在使用a值以后,使a值加1,所以a++的值為5。

33.8181解析:,解此類題一定要注意宏替換與函數(shù)調(diào)用的區(qū)別。宏替換是字面上的,在編譯期間就完成了,它只是將實(shí)參字符串替換蚌宏中形參出現(xiàn)的位置,得到的新串來替換掉宏調(diào)用.。而函數(shù)是將實(shí)參先計(jì)算好,然后將值賦給形參,再執(zhí)行函數(shù)體,整個(gè)過程在程序運(yùn)行時(shí)發(fā)生。所以本題的宏調(diào)用s(1+1)將被替換成表達(dá)式4*i+j*i+j+1等于4*6+8*6+8+1=24+48+8+1=81。所以本題輸出81。

34.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的管理機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等。

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

36.1234123.512345.51234,123.5,12345.5解析:在primf()函數(shù)的格式控制符中:'%2d'表示輸出一個(gè)有符號(hào)整數(shù),如果輸出長度小于2,則左端補(bǔ)以空格,否則按實(shí)際長度輸出。所以本題中的a按原樣輸出為1234:'%2.1尸表示輸出一個(gè)單精度實(shí)數(shù),只輸出小數(shù)點(diǎn)后1位,后面若有小數(shù)則四舍五入,如果輸出長度小于2,則左端補(bǔ)以空格,否則按實(shí)際長度輸出。所以本題中的b四舍五入到小數(shù)點(diǎn)后1位再輸出為123.5;'%2.11f'除了表示輸出一個(gè)雙精度實(shí)數(shù)外,其余參數(shù)和'%2.1f'一樣。所以本題中的c四舍五入到小數(shù)點(diǎn)后1位再輸出為12345.5。故輸出結(jié)果是:1234,123.5,12345.5。

37.正確性測試正確性測試

38.310

39.sp=str[i]sp=str[i]解析:二維字符數(shù)組即數(shù)組的每個(gè)元素又是一個(gè)字符串,即字符串?dāng)?shù)組。題中二維數(shù)組的第一行的首地址賦給字符指針sp,使sp指向了二維字符數(shù)組的一個(gè)字符串。求字符串長度函數(shù)strlen比較當(dāng)前字符串與數(shù)組的下一個(gè)元素的字符串的長度,如果當(dāng)前字符串的長度小于下一個(gè)元素的,則指針sp又指向了下一個(gè)元素,直到比較到數(shù)組的最后一個(gè)元素,得到的sp指針?biāo)赶虻淖址礊殚L度最長的字符串。

40.fseek(文件指針位移量起始點(diǎn))fseek(文件指針,位移量,起始點(diǎn))解析:本題考查函數(shù)fseek的用法。fseek函數(shù)的調(diào)用形式為:

fseek(文件指針,位移量,起始點(diǎn))

“起始點(diǎn)”用0,1或2代替,其中,0代表“文件開始”;1為“當(dāng)前位置”;2為“文件末尾”?!拔灰屏俊敝敢浴捌鹗键c(diǎn)”為基點(diǎn),向前移動(dòng)的字節(jié)數(shù)。ANSIC和大多數(shù)C版本要求位移量是long型數(shù)據(jù),這樣當(dāng)文件的長度大于64k時(shí)不致出現(xiàn)問題。ANSIC標(biāo)準(zhǔn)規(guī)定在數(shù)字的末尾加一個(gè)字母L,就表示long型。

41.B解析:在選項(xiàng)B)中,因?yàn)閿?shù)組的第一維的數(shù)目不明確,所以理解會(huì)有歧義,可以理解為1行3列,或者2行3列等。所以選項(xiàng)B)錯(cuò)誤。注意:數(shù)組中元素的引用。

42.B解析:m=a>b的值為邏輯值0,n=c>b不被執(zhí)行,n的值仍為2。

43.C解析:C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合,與書寫格式無關(guān)。所以選項(xiàng)C)為正確答案。

44.B解析:本題考查函數(shù)的遞歸調(diào)用。fib(3)=fib(2)+fib(1),而fib(2)的返回值為2,fib(1)的返回值也為2,故輸出的fib(3)的值為4。

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

46.A解析:本題主要考查結(jié)構(gòu)體數(shù)組的使用。x[i].num為結(jié)構(gòu)體x[i]中的num成員,x[i].name[2]是結(jié)構(gòu)體x[i]中name成員的第3個(gè)元素。程序執(zhí)行循環(huán)過程時(shí):第1次循環(huán),i=1,輸出x[1].num,x[1].name[2]的值,即2A;第2次循環(huán),i=2,輸出x[2].num,x[2].name[2]的值,即3N;第3次循環(huán),i=3,輸出x[3].num,x[3].name[2]的值,即4A;第4次循環(huán),i=4,輸出x[4].num,x[4].name[2]的值,即5U。

47.D解析:選項(xiàng)A的錯(cuò)誤在于編譯過程中是險(xiǎn)查語法的,若發(fā)現(xiàn)源程序有語法錯(cuò)誤,則系統(tǒng)會(huì)提示出錯(cuò)信息;選項(xiàng)B的錯(cuò)誤在于C語言中,子程序的作用是由函數(shù)來完成的,無過程的概念;選項(xiàng)C的錯(cuò)誤在于函數(shù)不可以嵌套定義,但可以嵌套調(diào)用。

48.C解析:本題考查函數(shù)調(diào)用時(shí)的參數(shù)傳遞。函數(shù)point的參數(shù)為字符指針,當(dāng)執(zhí)行函數(shù)point時(shí),剛開始指針p指向“a”,經(jīng)過+3操作后,指針p指向“f”,所以最后的輸出結(jié)果是f。

49.A解析:本題考查帶參數(shù)的宏的定義及相關(guān)運(yùn)算:(x)>(y)?(x):(y)是x>y時(shí)輸出x,否則輸出y,調(diào)用(MAX(a+b,c+d))*100時(shí),(a+b=5)>(c+d=4),所以輸出a+b=5,所以x=5*100。

50.B解析:由函數(shù)intfun(int*p){return*p;}的定義可知,返回值為整型指針變量p所指向的數(shù)據(jù)。

51.D解析:本題通過函數(shù)調(diào)用對(duì)數(shù)組a[0][0]、a[1][1]、a[2][2]、a[0][3]進(jìn)行求和,然后用return語句返回s的值。

52.C解析:本題的選項(xiàng)A)和B)犯了同樣的錯(cuò)誤,即指針變量在定義后并沒有指向具體的變量。也就是說,指針變量中沒有確定的地址值,它的值是不可預(yù)見的,所指的單元也是不可預(yù)見的,因此不能進(jìn)行賦值操作。另外,在選項(xiàng)D)中,s是血型指針變量,p是char型指針變量,所指向的內(nèi)存單元所占用的字節(jié)數(shù)是不同的,因而不能將字符指針變量p的值賦給整型指針變量s。

53.D解析:結(jié)構(gòu)體變量所占用內(nèi)存的字節(jié)數(shù)是其所有成員所占用內(nèi)存字節(jié)數(shù)之和。本題中整型變量i所占用的內(nèi)存是2字節(jié),字符型變量ch所占用的內(nèi)存是1字節(jié),雙精度型變量f所占用的內(nèi)存是8字節(jié),三者相加即可。

54.B解析:堆排序是一種選擇排序。選擇排序有直接選擇排序和堆排序兩種。

55.A

56.A答案A

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

57.A

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

59.B

60.C解析:第1次循環(huán)執(zhí)行情況如下:

i=1,x=1,判斷i<=36為真執(zhí)行循環(huán)體。

x=1,判斷x>=20為假。

判斷x%5==1為真,執(zhí)行x+=5;x值為6,執(zhí)行continue;跳過本次循環(huán)余下的語句,即不執(zhí)行X-=5:。

執(zhí)行i++,i=2。

第2次循環(huán)執(zhí)行情況如下:

i=2,判斷i<=36為真執(zhí)行循環(huán)體。

x=6,判斷x>=20為假。

判斷x%5==1為真,執(zhí)行x+=5:x值為11,執(zhí)行continue;跳過本次循環(huán)余下的語句,即不執(zhí)行X-=5;。

執(zhí)行i++,i=3。

第3次循環(huán)執(zhí)行情況如下:

i=3,判斷i<=36為真執(zhí)行循環(huán)體。

x=11,判斷x>=20為假。

判斷x%5==1為真,執(zhí)行x+=5;x值為16,執(zhí)行continue;跳過本次循環(huán)余下的語句,即不執(zhí)行X-=5:。

執(zhí)行i++,i=4。

第4次循環(huán)執(zhí)行情況如下:

i=4,判斷i<=36為真執(zhí)行循環(huán)體。

x=16,判斷x>=20為假。

判斷x%5==l為真,執(zhí)行x+=5;x值為21,執(zhí)行continue;跳過本次循環(huán)余下的語句,即不執(zhí)行X-=5;。

執(zhí)行i++,i=5。

第5次循環(huán)執(zhí)行情況如下:

i=5,判斷i<=36為真執(zhí)行循環(huán)體。

x=21,判斷x>=20為真。

執(zhí)行break;,跳出循環(huán)體,即結(jié)束循環(huán)。最后i=5,選項(xiàng)C正確。

61.A比較兩個(gè)字符串的大小可以用strCmp函數(shù),選項(xiàng)A)正確。

62.B本題考查按位異或的用法。按位異或運(yùn)算的規(guī)則是:兩個(gè)運(yùn)算數(shù)的相應(yīng)二進(jìn)制位相同,則結(jié)果為0,相異則結(jié)果為1。b=2的二進(jìn)制為00000010,a=1的二進(jìn)制為00000001,a=a^b=00000011,轉(zhuǎn)化為十進(jìn)制后為3,b=b^a=00000010-00000011=00000001,即1。

63.A當(dāng)y為。時(shí),表達(dá)式y(tǒng)一才為假,循環(huán)結(jié)束,最終y的值為一l,所以答案選擇A)。

64.A

65.B

66.B解析:二維數(shù)組的元素可以看成是按矩陣形式存放的,總是先存放第一行的元素,再存放第二行的元素。數(shù)組第一維的下標(biāo)是i,說明它前面還有i行,有i*m個(gè)元素,數(shù)組第二維的下標(biāo)是j,說明它前面還有j列,有j個(gè)元素,所以共有i*m+j個(gè)元素。

67.C

68.D結(jié)構(gòu)化程序設(shè)計(jì)由迪杰斯特拉(E.W.dijkstra)在1969年提出,他主張“清晰第一,效率第二”,以模塊化設(shè)計(jì)為中心,將待開發(fā)的軟件系統(tǒng)劃分為若干個(gè)相互獨(dú)立的模塊,這樣使完成每一個(gè)模塊的工作變得單純而明確,為設(shè)計(jì)一些較大的軟件打下了良好的基礎(chǔ)。

由于模塊相互獨(dú)立,因此,在設(shè)計(jì)其中一個(gè)模塊時(shí),不會(huì)受到其他模塊的牽連,因而可將原來較為復(fù)雜的問題化簡為一系列簡單模塊的設(shè)計(jì)。模塊的獨(dú)立性還為擴(kuò)充已有的系統(tǒng)、建立新系統(tǒng)帶來了不少的方便,因?yàn)榭梢猿浞掷矛F(xiàn)有的模塊作為積木式的擴(kuò)展。

結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是采用“自頂向下,逐步求精”的程序設(shè)計(jì)方法和“單入口單出口”的控制結(jié)構(gòu)。自頂向下、逐步求精的程序設(shè)計(jì)方法從問題本身開始,經(jīng)過逐步細(xì)化,將解決問題的步驟分解為由基本程序結(jié)構(gòu)模塊組成的結(jié)構(gòu)化程序框圖;“單入口單出口”的思想認(rèn)為一個(gè)復(fù)雜的程序,如果它僅是由順序、選擇和循環(huán)三種基本程序結(jié)構(gòu)通過組合、嵌套構(gòu)成,那么這個(gè)新構(gòu)造的程序一定是一個(gè)單入口單出口的程序。據(jù)此就很容易編寫出結(jié)構(gòu)良好、易于調(diào)試的程序。

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

70.D解析:算法的復(fù)雜度主要包括算法的時(shí)間復(fù)雜度和算法的空間復(fù)雜度。所謂算法的時(shí)間復(fù)雜度是指執(zhí)行算法所需要的計(jì)算工作量;算法的空間復(fù)雜度一般是指執(zhí)行這個(gè)算法所需要的內(nèi)存空間。

71.C解析:線性表、棧和隊(duì)列所表達(dá)和處理的數(shù)據(jù)以線性結(jié)構(gòu)為組織形式。棧是一種特殊的線性表,它只能在固定的一端進(jìn)行插入和刪除操作,又稱后進(jìn)先出表(LastInFirstOut);隊(duì)列是插入在一端進(jìn)行,刪除在另一端進(jìn)行的線性表,又稱先進(jìn)先出表(FirstInFirstOut)。

72.D關(guān)系T中的元組是關(guān)系R中有面關(guān)系s中沒有的元組的集合,即從關(guān)系R中除去與關(guān)系s中相同元組后得到的關(guān)系T。所以做的是差運(yùn)算。

73.D在軟件開發(fā)的過程中,應(yīng)該盡早的制定測試計(jì)劃,其中在需求分析階段制定系統(tǒng)測試計(jì)劃

74.A

75.A

\ns是一個(gè)公用體,d的值分別與ch中的兩個(gè)元素的值相同,d的高位放在chFl]中、低位放在chl-0]中,因此輸出的結(jié)果為21,43。

76.D在ifelse語句中else總是與離它最近的f配對(duì)。本題目中x為l所以!X為0,所以執(zhí)行elseif語句中的內(nèi)容,判斷(x==O)是否成立,因?yàn)閤為1所以條件不成立,聽以elseif內(nèi)部的if…else語句不再執(zhí)行,所以Y的值還是初蛤值0。

77.B\ny--的作用是先取其值作為表達(dá)式的值,然后Y的值減1存入Y。當(dāng)y>0時(shí)循環(huán)繼續(xù),直到y(tǒng)=0時(shí)循環(huán)結(jié)束,然后Y值減l存入Y中,所以選B。

\n

78.D

\nscanf函數(shù)讀取的是char型數(shù)據(jù),所以回車時(shí)輸入的換行符也是有效字符。于是cl,c2,c3,c4的內(nèi)容分別是1,2,3,\n。

\n

79.B解析:選項(xiàng)A中定義的是5個(gè)數(shù)組元素,但賦值的時(shí)候賦的是6個(gè)元素,所以出錯(cuò);選項(xiàng)C不符合數(shù)組定義形式,數(shù)組名后應(yīng)加上“[]”;選項(xiàng)D的類型說明符錯(cuò)誤,如果用char定義就對(duì)了;選項(xiàng)B中的0,1,2,3,4,5分別表示對(duì)應(yīng)字符的\u3000ASCII碼,所以選項(xiàng)B是正確的。

80.D

\n所謂二叉樹的前序遍歷是指先訪問根結(jié)點(diǎn),訪問左子樹,最后訪問右子樹,本題中序?yàn)镈YBEAFCZX,后序?yàn)閅DEBFZXCA。

\n

81.82.\n\tmain

\n{inta,b,c;

\nprintf(“請(qǐng)輸入三個(gè)整數(shù):”);

\nscanf(“%d,%d,%d”,&a,&b,&c);

\nif(aif(belseprintf(“max=%d\\n”,b);

\nelseif(aelseprintf(“max=%d\\n”,a);}

\n2022年甘肅省白銀市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.在黑盒測試方法中,設(shè)計(jì)測試用例的主要根據(jù)是A.程序外部功能B.程序內(nèi)部邏輯C.程序數(shù)據(jù)結(jié)構(gòu)D.程序流程圖

2.以下程序的輸出結(jié)果是()。A.1010B.99C.910D.109

3.一個(gè)C語言程序總是從()開始執(zhí)行。

A.書寫順序的第一函數(shù)B.書寫順序的第一條執(zhí)行語句C.主函數(shù)main()D.不確定

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

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

5.下列關(guān)于棧的描述中錯(cuò)誤的是()。A.棧是先進(jìn)后出的線性表B.棧只能順序存儲(chǔ)C.棧具有記憶作用D.對(duì)棧的插入與刪除操作中,不需要改變棧底指針

6.若已包括頭文件且已有定義charsl[18],s2={"ABCDE")和inti,現(xiàn)要將字符串”ABCDE”賦給sl,下列語句錯(cuò)誤的是()。

A.strcpy(s1,s2)

B.strcpy(s1,"ABCDE");

C.sl="ABCDE";

D.for(i=0;i<6;i++)sl[i]=s2[i]

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

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

8.以下程序的主函數(shù)中調(diào)用了在其面前定義的fun函數(shù)#include<stdio.h>...main(){doublea[15],k;k=fun(a);...}則以下選項(xiàng)中錯(cuò)誤的fun函數(shù)首部是()。、A.doublefun(doublea[l5])

B.doublefun(double*a)

C.doublefun(doublea[])

D.doublefun(doublea)

9.下列關(guān)系表達(dá)式中,結(jié)果為“假”的是()。A.(3+4)>6B.(3!=4)>2C.3<=4||D.(3<4)=1

10.若有定義:“inta[2][3];”,則對(duì)a數(shù)組的第i行第j列元素的正確引用為()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

11.

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

13.在循環(huán)雙鏈表的p所指的結(jié)點(diǎn)之前插入s所指結(jié)點(diǎn)的操作是()。A.p->prior->prior

B.p->prior->prior

C.s->prior->next=s

D.s->prior->prior=s

14.以下能夠正確描述“k是大于0的偶數(shù)”的表達(dá)式是()。

A.(k>0)&&(k%2!=1)

B.(k>0)&&(k%2=0)

C.(k>0)||!(k%2)

D.(k>0)||(k%2==0)

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

A.“charc1,*c2,*c3[10];”是合法的變量定義語句

B.數(shù)組說明符的方括號(hào)中不能使用表達(dá)式

C.數(shù)組元素下標(biāo)可以是非整數(shù)

D.若有定義“chararray[4];”,則語句“printf(“%c”,array[“3”]);”是合法的

16.下列敘述中正確的是:()A.C語言程序總是從第一個(gè)定義的函數(shù)開始執(zhí)行

B.C語言程序中,函數(shù)類型必須進(jìn)行顯式聲明

C.C語言程序中,return語句必須放在函數(shù)的最后

D.C語言程序中,return語句中表達(dá)式的類型應(yīng)該與函數(shù)的類型一致

17.下列敘述中錯(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á)式

18.以下對(duì)軟件特點(diǎn)描述錯(cuò)誤的是()。

A.軟件的使用存在老化問題B.軟件的復(fù)雜性高C.軟件是一種邏輯實(shí)體,具有抽象性D.軟件的運(yùn)行對(duì)計(jì)算機(jī)系統(tǒng)具有依賴性

19.以下程序的輸出結(jié)果是()。unionmyun{struct{intx,y,z;)u;intk:}a;main{a.u.x=4;a.u.y=5;a.u.z=6;k=0;printf(%d\n",a.u.x);}A.4B.5C.6D.0

20.設(shè)有inta=15,b=240;,則表達(dá)式(a&b)&b||b的值為______。

A.0B.1C.真D.假

二、2.填空題(20題)21.當(dāng)運(yùn)行以下程序時(shí),輸入abcd,程序的輸出結(jié)果是:()。

insert(charstr[])

{inti;

i=strlen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

scanf("%s",str);insert(str);

}

22.若有下列定義和語句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結(jié)果為______。

23.以下程序的輸出是【】。

main()

{

charstr1[]="Howdoyoudo",*p1=str1;

strcpy(str1+strlen(str1)/2,"esshe");

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

}

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

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

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

}

25.軟件是程序、數(shù)據(jù)和【】的集合。

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

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

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

printf("\n");

}

27.常用的黑箱測試有等價(jià)分類法、【】、因果圖法和錯(cuò)誤推測法4種。

28.有以下程序段,且變量已正確定義和賦值

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

printf("s=%f\n\n",s);

請(qǐng)?zhí)羁?,使下面程序段的功能與之完全相同

S=1.0;k=1;

while([8]){s=s+1.0/(k*(k+1));[9];}

printf("s=%f\n\n",s);

29.以下程序的輸出結(jié)果是#include<stdio.h>structstiintx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[0],60,&it[0],60,&dt[0],};main(){p=aa;printf("%d\n",++(p->x));}

30.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個(gè)字節(jié)的動(dòng)態(tài)存儲(chǔ)空間,請(qǐng)?zhí)羁?。st=(char*)【】;

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

struetss

{intinfo;struetss*link;}x,y,z;

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

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

32.若有定義語句:inta=5;,則表達(dá)式:a++的值是【】。

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

#defineS(x)4*X*x+1

main()

{inti=6,j=8;

printf("%d\n",S(i+i));

}

34.數(shù)據(jù)庫系統(tǒng)中實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。

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

intn='c';

switch(n++)

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

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

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

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

}

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

#include<stdio.h>

main()

{inta=1234;

floatb=123.456;

doublec=12345.54321;

printf("\n%2d,%2.1f,%2.11f",a,b,C);

}

37.軟件測試的方法有動(dòng)態(tài)測試、靜態(tài)測試和【】13種。

38.若有如下程序:

voidsub()

{staticintx=6;

x/=2;printf("%d",x);}

main()

{intm;

for(m=0;m<=2;m++)sub();}

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

39.以下程序從輸入的10個(gè)字符串中找出最長的那個(gè)串,請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

#include<string.h>

#defineN10

main()

{charstr[N][81],*sp;

inti;

for(i=0;i<N;i++)gets(str[i]);

sp=str[0];

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

if(strlen(sp)<strlen(str[i]))

【】;

printf("輸出最長的那個(gè)串:\n%s\n",sp);

printf("輸出最長的那個(gè)串的長度:%d\n",strlen(sp));}

40.fseek函數(shù)的正確調(diào)用形式是【】。

三、1.選擇題(20題)41.下列二維數(shù)組初始化語句中,正確且與語句floata[][3]={0,3,8,0,9};等價(jià)的是

A.floata[2][]={{0,3,8},{0,9}};

B.floata[][3]={0,3,8,0,9,0};

C.floata[][3]={{0,3},{8,0},{9,0}};

D.floata[2][]={{0,3,8},{0,9,0}};

42.設(shè)a=5,bc6,c=7,d=8,m=2,n=2,執(zhí)行(m=a>b)&&(n=c>b)后n的值為______。

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

43.在嵌套使用if語句時(shí),C語言規(guī)定else總是A.和之前與其具有相同縮進(jìn)位置的if配對(duì)

B.和之前與其最近的if配對(duì)

C.和之前與其最近的且不帶else的if配對(duì)

D.和之前的第一個(gè)if配對(duì)

44.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%d\n",fib(3));}該程序的輸出結(jié)果是

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

45.若已定義: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]

46.定義結(jié)構(gòu)體數(shù)組:

structstu

{intnum;

charname[20];

}x[5]={1,"LI",2,"ZHAO",3,"WANG",4,"ZHANG",5,"LIU"};

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

printf("%d%c",x[i].num,x[i].name[2];

以上程序段的輸出結(jié)果為()。

A.2A3N4A5UB.112A3H41C.1A2N3A4UD.2H3A4H51

47.下列敘述中正確的是______。

A.C語言編譯時(shí)不檢查語法

B.C語言的子程序有過程和函數(shù)兩種

C.C語言的函數(shù)可以嵌套定義

D.C語言中,根據(jù)函數(shù)能否被其他源文件調(diào)用,被區(qū)分為內(nèi)部函數(shù)和外部函數(shù)

48.下列程序的輸出結(jié)果是()。point(char*pt);main(){charb[4]={'a','c','s','f},*pt=b;pt=point(pt);printf("%c\n",*pt);}point(char*p){p+=3;returnp;}

A.sB.cC.fD.a

49.下列程序的運(yùn)行結(jié)果為()。#defineMAX(x,y)(x)>(y)?(x):(y)main(){inta=2,b=3,c=1,d=3,t;printf("%d\n",(MAX(a+b,c+d))*100);}

A.500B.5C.4D.400

50.已定義下列函數(shù):intfun(int*p){return*p;)fun函數(shù)返回值是()。

A.不確定的值B.一個(gè)整數(shù)C.形參p中存放的值D.形參p的地址值

51.有以下程序,程序運(yùn)行后的輸出結(jié)果是______。intf(intb[][4]){inti,j,s=0;for(j=0;j<4;i++){i=j;if(i>2)i=3-j;s+=b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4},{0,2,4,6,},{3,6,9,12},{3,2,1,0}};printf("%d\n",f(A));}

A.22B.11C.18D.16

52.請(qǐng)選出正確的程序段

A.int*p;scanf("%d",p);…

B.int*s,k;*s=100;…

C.int*s,k;char*p,c;s=&k;p=&c;*p='a';…

D.int*s,k;char*p,e;s=&k;p=&c;s=p;*s=1;…

53.在16位IBM-PC機(jī)上使用C語言,若有如下定義structdata{inti;charch;doublef;}b;則結(jié)構(gòu)變量b占用內(nèi)存的字節(jié)數(shù)是

A.1B.2C.7D.11

54.堆排序是一種()排序。

A.插入B.選擇C.交換D.歸并

55.下述程序段的輸出結(jié)果是()intx=10;inty=x++;printf("%d,%d",(x++,y),y++);

A.11,10B.11,11C.10,10D.10,11

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

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

B.c程序可以由多個(gè)程序文件組成

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

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

57.以下變量x、y、z均為double類型且已正確賦值,不能正確表示數(shù)學(xué)式x/y×z的C語言表達(dá)式是()

A.x/y*z)B.x*(1/(y*z))C.x/y*1/z)D.x/y/z

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

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

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

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

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

59.設(shè)p1和p2是指向同一個(gè)int型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語句是______。

A.k=*p1+*p2;B.p2=k;C.p1=p2;D.k=*p1*(*p2);

60.執(zhí)行以下程序后i的值為()。main(){intx,i;for(i=l,x=1;i<=36;i++){if(x>=20)break;if(x%5==1){x+=5;continue;}x-=5;)printf("%d",i);}

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

四、選擇題(20題)61.下列選項(xiàng)中,能夠滿足“只要字符串sl等于字符串s2,則執(zhí)行sT”要求的是()。程序執(zhí)行后的輸出結(jié)果是()。

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

62.若有以下程序:inta=1,b=2:a=a^b:b=b^a:則執(zhí)行以上語句后a和b的值分別是()。

A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1

63.有以下程序程序執(zhí)行后的輸出結(jié)果是()。

A.y=-IB.y=oC.y=lD.while構(gòu)成無限循環(huán).

64.

65.以下語句的執(zhí)行結(jié)果是()。

intm=0,s=1;

do{

s+=m++;

}while(m<6);

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

A.17B.16C.15D.18

66.若二維數(shù)組a有m列,則在a[i][j]前的元素個(gè)數(shù)為()。

A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1

67.

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

A.程序的規(guī)模B.程序的效率C.程序設(shè)計(jì)語言的先進(jìn)性D.程序易讀性

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

70.算法的空間復(fù)雜度是指()。

A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲(chǔ)空間D.執(zhí)行算法需要的內(nèi)存空間

71.以下數(shù)據(jù)結(jié)構(gòu)中不屬于線性數(shù)據(jù)結(jié)構(gòu)的是______。

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

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

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

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

73.下面不屬于需求分析階段任務(wù)的是()。

A.確定軟件系統(tǒng)的功能需求B.確定軟件系統(tǒng)的性能需求C.需求規(guī)格說明書評(píng)審D.制定軟件集成測試計(jì)劃

74.

75.

有以下程序:

main

{union

{charch[2];

intd;

}s;

d=0x4321;

printf("%x,%x\n",S.ch[0],S.ch[l]);

}

在16位編譯系統(tǒng)上,程序執(zhí)行后的輸出結(jié)果是()

A.21,43B.43,21C.43,00D.21,00

76.有以下程序:

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

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

77.有以下程序:

#include<stdio.h>

main

{inty=10;

while(y--);

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

}

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

A.y=0B.y=-1C.y=lD.while構(gòu)成無限循環(huán)

78.

有以下程序.

#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)行后,若從鍵盤輸入(從第l列開始)

123<回車>

45678<回車>

則輸出結(jié)果是()。

A.1267B.1256C.1278D.1245

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

A.

B.

C.

D.

80.有下列二叉樹.對(duì)此二叉樹前序遍歷的結(jié)果為()。

A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXY7D.ABDYECFXZ

五、程序改錯(cuò)題(1題)81.寫出下列程序的運(yùn)行結(jié)果。

fun(inta,intb)

{if(a>b)return(a);

Elsereturn(b);}

main

{intx=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);printf(“%d\n”,r);}

六、程序設(shè)計(jì)題(1題)82.三個(gè)整數(shù)a、b、c,由鍵盤輸入,輸出其中最大的一個(gè)數(shù)。

參考答案

1.A【答案】:A

【知識(shí)點(diǎn)】:黑盒測試

【解析】:黑盒測試也稱功能測試或數(shù)據(jù)驅(qū)動(dòng)測試,它完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特征,只著眼于程序的外部結(jié)構(gòu),主要用來檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用。故選A。

2.D

3.C

4.B解析:在main函數(shù)中定義了一個(gè)structabc類型的數(shù)組,同時(shí)分別利用{1,2,3}及{4,5,6}對(duì)數(shù)組中兩個(gè)元素進(jìn)行初始化。在該結(jié)構(gòu)體,依次對(duì)其中的a,b,c三個(gè)變量進(jìn)行初始化。故s[0].a=1,s[1].b=5,所以本題輸出為6。

5.B棧是限定只能在表的一端進(jìn)行插入和刪除操作的線性表,入棧和出棧都是在棧頂進(jìn)行,它們的操作特點(diǎn)是先進(jìn)后出,因此具有記憶作用。棧可以采用順序存儲(chǔ),也可以采用鏈?zhǔn)酱鎯?chǔ)。

6.C數(shù)組名sl是代表sl數(shù)組首地址的地址常量,因?yàn)椤?”左邊不能出現(xiàn)常量,所以s1="ABCDE"的方法是錯(cuò)誤的。

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

8.A由題可知fun的參數(shù)為變量,而a[15]為常量,所以答案為A。

9.B在一個(gè)表達(dá)式中,括號(hào)的優(yōu)先級(jí)高,先計(jì)算3!=4,為真即是l,1>2為假。

10.A解析:本題考查如何通過地址來引用數(shù)組元素。通過地址來引用數(shù)組元素的方法有下列5種:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

11.A

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

13.D

14.A判斷k大于0的表達(dá)式為“k>0”,判斷k是偶數(shù)的表達(dá)式為“k%2==0”或“k%2!=1”。兩個(gè)表達(dá)式必須都成立才能確定k是大于0的偶數(shù),則對(duì)應(yīng)的表達(dá)式為“(k>0)&&(k%2==0)”或“(k>0)&&(k%2!=1)”。故本題答案為A選項(xiàng)。

15.AC語言規(guī)定定義數(shù)組時(shí),數(shù)組的長度必須是整型常量,數(shù)組說明符的方括號(hào)中表達(dá)式只要是常量即合法,因此選項(xiàng)B錯(cuò)誤。C語言規(guī)定,數(shù)組元素下標(biāo)必須是非負(fù)整數(shù),因此選項(xiàng)C錯(cuò)誤。選項(xiàng)D中,“chararray[4]”數(shù)組的長度為4,“army[“3”]”中“3”是常量字符串,與C語言規(guī)定數(shù)組的下標(biāo)必須是非負(fù)整數(shù)不符。故本題答案為A選項(xiàng)。

16.DC程序程序總是從main函數(shù)開始執(zhí)行。C程序中如果沒有對(duì)函數(shù)類型進(jìn)行說明,則該函數(shù)默認(rèn)為int類型。return語句可以放在函數(shù)任意位置,但是return之后的語句不會(huì)被執(zhí)行。

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

18.A軟件具有以下特點(diǎn)。①軟件是一種邏輯實(shí)體,具有抽象性。②軟件沒有明顯的制作過程。③軟件在使用期間不存在磨損、老化問題。④對(duì)硬件和環(huán)境具有依賴性。⑤軟件復(fù)雜性高,成本高。⑥軟件開發(fā)涉及諸多的社會(huì)因素。本題答案為A選項(xiàng)。

19.D因?yàn)閍是結(jié)構(gòu)體變量,最后一次輸入的值為結(jié)構(gòu)體中的值,即a中的任何一個(gè)值都為0。

20.B

21.a*b*c*d*a*b*c*d*解析:字符處理函數(shù)strlen()測試字符串常量的長度,不包括‘\\0’在內(nèi)。因此,函數(shù)insert()實(shí)現(xiàn)

溫馨提示

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