版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生產(chǎn)車間消防演練
- 氣象學(xué)教師勞動(dòng)合同樣本
- 無人駕駛技術(shù)董事聘用合同
- 本溪市供熱環(huán)保政策實(shí)施
- 經(jīng)濟(jì)適用房交易附加協(xié)議
- 畜牧業(yè)會(huì)計(jì)聘用合同樣本
- 停車場綠化工程合同
- 商務(wù)樓宇電梯安全運(yùn)行規(guī)范
- 采礦技術(shù)人員培訓(xùn)課件
- 校園文明禮貌教育活動(dòng)
- 蘇科版八年級(jí)數(shù)學(xué)上冊講練專題復(fù)習(xí)實(shí)數(shù)章末重難點(diǎn)題型(原卷版+解析)
- CJT 437-2013 垃圾填埋場用土工濾網(wǎng)
- 主觀驗(yàn)光概述-綜合驗(yàn)光儀結(jié)構(gòu)(驗(yàn)光技術(shù)課件)
- 專題一第3課三、《SmartArt圖形工具的使用》教學(xué)設(shè)計(jì) 2023-2024學(xué)年青島版(2018)初中信息技術(shù)七年級(jí)下冊
- 海南經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院人才培養(yǎng)工作評(píng)估分項(xiàng)自評(píng)報(bào)告
- 物聯(lián)網(wǎng)技術(shù)應(yīng)用專業(yè)-物聯(lián)網(wǎng)技術(shù)課程標(biāo)準(zhǔn)
- 小學(xué)道德與法治行動(dòng)研究報(bào)告
- 2024年工業(yè)和信息化部應(yīng)急通信保障中心招聘公開引進(jìn)高層次人才和急需緊缺人才筆試參考題庫(共500題)答案詳解版
- 工程部項(xiàng)目培訓(xùn)
- 迷你臨床演練評(píng)量MiniCEX于英
- 2024版《隱患排查標(biāo)準(zhǔn)手冊》(附檢查依據(jù))
評(píng)論
0/150
提交評(píng)論