




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2022-2023年山東省濱州市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.數(shù)據(jù)庫設(shè)計包括兩個方面的設(shè)計內(nèi)容,它們是()。
A.概念設(shè)計和邏輯設(shè)計B.模式設(shè)計和內(nèi)模式設(shè)計C.內(nèi)模式設(shè)計和物理設(shè)計D.結(jié)構(gòu)特性設(shè)計和行為特性設(shè)計
2.廣義表((a),a)的表頭是()。
A.aB.(a)C.((a))D.()
3.已有定義:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字堪的表達式是()。
A.isupper(c)B.A<=c<=ZC.A<=c&&c<=ZD.c<=(z-32)&&(a-32)<=c
4.以下敘述中正確的是()。
A.C語言編譯系統(tǒng)對標識符的長度沒有規(guī)定
B.C語言標識符的規(guī)定長度因系統(tǒng)而異
C.C語言規(guī)定標識符長度最多允許16個字符,超長報錯
D.C語言規(guī)定以下劃線開頭的標識符長度必須大于1
5.下列選項中不是字符常量的是()。
A.'\v'B.'\x2a'C.'a'D."\0"
6.若有說明語句:charc='\72'則變量c()。
A.包含1個字符B.包含2個字符C.包含3個字符D.說明不合法,c的值不確定
7.在銀行業(yè)務(wù)中,實體客戶和實體銀行之間的聯(lián)系是()。
A.—對一B.—對多C.多對一D.多對多
8.有以下程序: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
9.線性表是具有n個()的有限序列。
A.字符B.數(shù)據(jù)元素C.數(shù)據(jù)項D.表元素
10.
11.以下程序的輸出結(jié)果是()。main(){charst[20]="hell0\O\t\\\”;printf("%d%d\n",strlen(st),sizeof(st));}A.99B.520C.1320D.2020
12.
13.x>0&&x<=10的相反表達式為()。
A.x<=0||x>10B.x<=0&&x>10C.x<=0||x<=10D.x>0&&x>10
14.以下敘述正確的是()。
A.表達式“sizeof(FILE*)==sizeof(int*)”的值為真
B.文件指針的值是一個整數(shù),它的值一定小于文件字節(jié)數(shù)
C.文件指針的值是所指文件的當(dāng)前讀取位置
D.使用fscanf函數(shù)可以向任意類型的文件中寫入任意數(shù)量的字符
15.
16.對于只在表的首、尾兩端進行插入操作的線性表,宜采用的存儲結(jié)構(gòu)為()。
A.順序表B.用頭指針表示的循環(huán)單鏈表C.用尾指針表示的循環(huán)單鏈表D.單鏈表
17.一個序列中有10000個元素,若只想得到其中前10個最小元素,最好采用_______方法
A.快速排序B.堆排序C.插入排序D.二路歸并排序
18.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},b[6];fp=fopen(“d.dat”,“w+b”);fwrite(a,sizeof(int),6,fp);for(i=0;i<6;i++)fwrite(&a[2],sizeof(int),1,fp);rewind(fp);fseek(fp,sizeof(int)*2,SEEK_CUR);fread(b,sizeof(int),6,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,b[i]);}程序運行后的輸出結(jié)果是()。
A.3,4,5,6,3,3,B.1,2,3,4,5,6,C.3,4,5,6,1,2,D.3,4,5,6,1,1,
19.判斷一個循環(huán)隊列cq(最多元素為m)為滿的條件是()。
A.cq->rear-cq-front=m;
B.(cq->rear+1)%m=cq->front;
C.cq->front=cq->rear;
D.cq->rear=m-1;
20.下列敘述中正確的是()。
A.一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)
B.邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)
C.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存諸結(jié)構(gòu)不影響數(shù)據(jù)處理的效率
D.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存諸結(jié)構(gòu)影響數(shù)據(jù)處理的效率
二、2.填空題(20題)21.在面向?qū)ο蠓椒ㄖ?,允許作用于某個對象上的操作稱為【】。
22.下面程序的運行結(jié)果是______。
#include<stdio.h>
main()
{inty,a;
y=2,a=1;
while(y--!=-1)
{do{a*=y;a++;}while(y--);}
printf("%d,%d",a,y);}
23.下面程序執(zhí)行后輸出的結(jié)果是【】。
intm=13;
intfun(intx,inty)
{intm=3;
return(x*y-m);
}
main()
{inta=7,b=5;
printf("%d\n",fun(a,b)/m);
}
24.要求使下列程序輸出5個整數(shù),請?zhí)羁铡?/p>
for(i=0;i<=______;printf("%d\n",i+=2));
25.下列程序的循環(huán)次數(shù)是______。
x=2;
do
{x=x*x;}
while(!x);
26.在一棵二叉樹上第6層的結(jié)點個數(shù)最多是【】。
27.以下程序中,函數(shù)SumColumMin的功能是:求出M行N列二維數(shù)組每列元素中的最小值,并計算它們的和值,和值通過形參傳回主函數(shù)輸出。請?zhí)羁眨?/p>
#include<stdio.h>
#defineM2
#defineN4
voidSumColumMin(inta[M][N],int*sum)
{inti,j,k,s=0;
for(i=0;i<N;i++)
k=O;
for(j=1;j<M;j++)
if(a[k][i]>a[j][i])k=j;
s+:【】;
}
【】=s;
}
main()
{intx[M][N]={3,2,5,1,4,1,8,3},s;
SumColumMin(【】);
printf("%d\n",s);
}
28.下面程序的輸出是()。
main()
{intarr[8],i,k=0;
for(i=0;i<8;i++)
arr[i]=i;
for(i=1;i<5;i++)
k+=arr[i]+i;
printf("%d\n",k);
}
29.下面程序的功能是輸出數(shù)組s中最大元素的下標,請?zhí)羁铡?/p>
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【】
printf("%d\n",k);}
30.有以下程序:
#include<stclio.h>
main()
{charc;
while((c=getchar())!='?')putchar(--c);
}
程序運行時,如果從鍵盤輸入:Y?N?<回車>,則輸出結(jié)果為【】。
31.在面向?qū)ο蠓椒ㄖ?,【】描述的是具有相似屬性與操作的一組對象。
32.設(shè)有以下定義和語句,sizeof(a)的值是【】,sizeof(b)的值是【】。
struct{intday;Charmonth;intyear;}a,*b;
b=&a;
33.長度為n的順序存儲線性表中,當(dāng)在任何位置上插入一個元素概率都相等時,插入一個元素所需移動元素的平均個數(shù)為【】。
34.以下程序給指針p分配三個double型動態(tài)內(nèi)存單元,請?zhí)羁铡?/p>
#include<stdio.h>
#include<stdlib.h>
main()
{double*p;
p=(double*)malloc(【】);
p[0]=1.5;p[1]=2.5;P[2]=3.5;
printf("%f%f%f\n",p[0],p[1],p[2]);
}
35.若有以下程序
main()
{chara;
a='H'-'A'+'0';
printf("%c\n",A);
}
執(zhí)行后輸出結(jié)果是【】。
36.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進行測試。
37.下列語句能循環(huán)______次。
ints=12;
while(s);
--s;
38.以下程序運行后的輸出結(jié)果是______。
main()
{
inta[4]]4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0.j=0,s=0;
while(i++<4}
if(i==2||i==4)continue;
j=0;
do
{
s+=a[i][j]:
j++;
}while(j<4);
}
printf("%d\n",s);
}
voidfun(intx,inty)
}
39.若變量a,b已定義為int類型并分別賦值21和55,要求用printf函數(shù)以a=21,b=55的形式輸出,請寫出完整的輸出語句行:【】。
40.下面函數(shù)用來求出兩個整數(shù)之和,并通過形參傳回兩數(shù)相加之和值。請?zhí)羁铡?/p>
intadd(intx,inty,【】,)
{【】=x+y;}
三、1.選擇題(20題)41.有以下程序:fun(intx){intp;if(x==0‖x=1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7);}執(zhí)行后的輸出結(jié)果是()。
A.7B.3C.2D.0
42.有以下程序:voidchange(intk[]){k[0]=k[5];)main(){intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;while(n<=4)(change(&x[n]);n++;}for(n=0;n<5;n++)printf("%d",x[n]);printf("\n");}程序運行后的輸出結(jié)果是()。
A.678910B.13579C.12345D.62345
43.下列選項中正確的語句組是()。
A.chars[8];s={"Beijing"};
B.char*s;s={"Beijing"};
C.chars[8];s="Beijing";
D.char*s;s="Beijing";
44.C語言規(guī)定如果調(diào)用fputc函數(shù)輸出成功,則返回值是()。
A.1B.輸出的字符C.0D.真
45.下列敘述中,正確的一條是______。
A.語句int*pt中的*pt是指針變量名
B.運算符*和&都是取變量地址的運算符
C.已知指針變量p指向變量a,則&a和*p值相同,都是變量a的值
D.語句“int*p=a;”等價于“int*p;p=&a[0];”
46.在順序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找關(guān)鍵碼值11,所需的關(guān)鍵碼比較次數(shù)為______。
A.2B.3C.4D.5
47.下列程序的輸出結(jié)果是_____。intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%\d\n",r);}
A.12B.13C.14D.15
48.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性的是()。
A.線性表B.隊列C.樹D.棧
49.有以下程序:#include<stdio.h>main(){inta[3][2]={0},(*ptr)[2],i,j;for(i=0;i<2;i++){ptr=a+i;scanf("%d",ptr);ptr++;}for(i=0;i<3;i++)}for(j=0;j<2;j++)prinff("%2d",a[i][j]);prinff("\n");}}若運行時輸入:123<回車>,則輸出結(jié)果是()。
A.產(chǎn)生錯誤信息B.102000C.123000D.102030
50.下列程序的輸出結(jié)果是()。
#include<stdio.h>
main()
{iuta=2,b=3,p;
p=f(a,B)
printf("%d",p);
}
intf(a,b)
{intc;
if(a>B)c=1;
e1Seif(a==B)c=0;
else(3=-1;
return(C);
}
A.-1B.0C.1D.2
51.對于長度為n的線性表,在最壞情況下,下列各排序法所對應(yīng)的比較次數(shù)中正確的是()。
A.冒泡排序為n/2B.冒泡排序為nC.快速排序為nD.快速排序為n(n-1)/2
52.有如下程序:#include<stdio.h>main(){FILE*fp1;fp1=fopen("f1.txt","w");fprintf(fp1,"abc");fclose(fp1);}若文本文件f1.txt中原有內(nèi)容為good,則運行以上程序后文件f1.txt中的內(nèi)容為()。
A.goodabcB.abcdC.abcD.abcgood
53.在下列選項中,不正確的表達式是()
A.a>b>cB.c--,++b,a+=1C.a=c+b>n-m=kD.p++
54.設(shè)有以下說明語句:structex{intx;floaty;charz;}example;則下面敘述中不正確的是()。
A.struct是結(jié)構(gòu)體類型的關(guān)鍵字
B.example是結(jié)構(gòu)體類型名
C.x,y,z都是結(jié)構(gòu)體成員名
D.structex是結(jié)構(gòu)體類型名
55.有以下程序
fun(intx)
{intp;
if(x==1)return(3);
p=x-fun(x-2);
returnp;
}
main()
{printf("%d\n",fun(7));}
執(zhí)行后的輸出結(jié)果是
A.7B.3C.2D.0
56.下列敘述中正確的是()
A.指令由操作數(shù)和操作碼兩部分組成
B.常用參數(shù)xxMB表示計算機的速度
C.計算機的一個字長總是等于兩個字節(jié)
D.計算機語言是完成某一任務(wù)的指令集
57.下列合法的整型常量的表示是
A.98B.oXdeC.32767D.0xDG
58.以下scanf函數(shù)調(diào)用語句中對結(jié)構(gòu)體變量成員的引用不正確的是
structpupil
{charname[20];
intage
intsex;
}pup[5],*p;
p=pup;
A.scanf("%s",pup[0].name);
B.scanf("%d",&pup[0].age);
C.scanf("%dT",&(p->sex));
D.scanf("%d",p->age);
59.若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)A.getc()B.gets()C.getchar()D.scanf()
60.以下程序中函數(shù)sort的功能足對a所指數(shù)組中的數(shù)據(jù)進行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+l,j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)print("%d,",aa[i]);printf('\n");}程序運行后輸出的結(jié)果是
A.1,2,3,4,5,6,7,8,9,10
B.10,9,8,7,6,5,4,3,2,1,
C.1,2,3,8,7,6,5,4,9,10
D.1,2,10,9,8,7,6,5,4,3,
四、選擇題(20題)61.
62.
63.下列敘述中正確的是()。
A.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句
B.eotinue語句的作用是結(jié)束整個循環(huán)的執(zhí)行
C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同
D.從多層循環(huán)嵌套中退出時,只能使用got0語句
64.下面描述中錯誤的是()。
A.系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細設(shè)計
B.軟件設(shè)計是將軟件需求轉(zhuǎn)換為軟件表示的過程
C.數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設(shè)計是軟件設(shè)計的任務(wù)之一
D.PAD圖是軟件詳細設(shè)計的表示工具
65.
有以下程序
#include<stdio.h>
structtt
(intx;structtt*y;)*P;
structtta[4]={20,a+1,15,a+2,30,a+3,17,a};
main
{inti;
p=a;
for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}
}
程序的運行結(jié)果是()。
A.20,30,B.30,17,C.15,30,D.20,15,
66.
67.
68.
69.若有定義:doublea=22;inti=0,k=18;,則不符合c語言規(guī)定的賦值語句是()。
A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;
70.
71.有以下程序,其輸出結(jié)果是()。
voidmain()
{
floarx=1;
inty;
x++;
y=x+1;
printf("x=%d,y=%f",x,y);
}
A.x=2,y=3
B.x=2,y=3.0
C.x=2.0,y=3
D.x=0,y=0.000000
72.
73.檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。
A.確認測試B.集成測試C.驗證測試D.驗收測試
74.
75.(2)以下數(shù)據(jù)結(jié)構(gòu)中不屬于線性數(shù)據(jù)結(jié)構(gòu)的是()
A.隊列
B.線性表
C.二叉樹
D.棧
76.一名教師可講授多門課程,一門課程可由多名教師講授。則實體教師和課程間的聯(lián)系是()。
A.1:l聯(lián)系B.1:m聯(lián)系C.m:l聯(lián)系D.m:n聯(lián)系
77.
78.要求通過while循環(huán)不斷讀入字符,當(dāng)讀人字母N時結(jié)束循環(huán),若變量已正確定義,下列正確的程序段是()。A.B.C.D.A.A.AB.BC.CD.D
79.若有定義“intb[8],*p=b;”,則p+6表示()。
A.數(shù)組元素b[6]的值B.數(shù)組元素b[6]的地址C.數(shù)組元素b[7]的地址D.數(shù)組元素b[0]的值加上6
80.下列SQL語句中,用于修改表結(jié)構(gòu)的命令式是A.A.Alter
B.Create
C.Update
D.Insert
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:對M名學(xué)生的學(xué)習(xí)成績,按從高到低的順序找出前m(m≤10)名學(xué)生來,并將這些學(xué)生數(shù)據(jù)存放在一個動態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首地址作為函數(shù)值返回。
請修改程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.某學(xué)生的記錄由學(xué)號、8門課程成績和平均分組成,學(xué)號和8門課程的成績已在主函數(shù)中給出,請編寫函數(shù),其功能是:求出該學(xué)生的平均分,并放入記錄的ave成員中。
例如,學(xué)生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN8
typedefstruct
{
charnum[10];
doubles[N];
doubleave;
}STREC;
voldfun(STREC*a)
{
}
voidmain
STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};
inti;
fun(&s);
printf("The%ssstudentdata:\n",s.num);
for(i=0;i<N;i++)
printf("%4.1fkn",s.s[i]);
printf("\nknave=%7.3fkn",s.aVe);
printf("\n");
}
參考答案
1.A解析:模式設(shè)計和內(nèi)模式設(shè)計是概念設(shè)計的兩種方法。物理設(shè)計是根據(jù)特定的計算機系統(tǒng),對數(shù)據(jù)的存儲結(jié)構(gòu)和存取方法進行設(shè)計,從而實現(xiàn)從邏輯結(jié)構(gòu)到物理結(jié)構(gòu)的轉(zhuǎn)換。從系統(tǒng)開發(fā)的角度來看,結(jié)構(gòu)特性設(shè)計和行為特性-設(shè)計是數(shù)據(jù)庫應(yīng)用系統(tǒng)所具有的兩個特性。結(jié)構(gòu)特性的設(shè)計,設(shè)計各級數(shù)據(jù)庫模式(靜態(tài)特性):行為特性的設(shè)計,改變實體及其特性,決定數(shù)據(jù)庫系統(tǒng)的功能(動態(tài)特性)。
2.B
3.B選項B先計算關(guān)系表達式“A<=c”的值是0還是l,再比較該值與字符z之間的大小關(guān)系,不能實現(xiàn)題目所要求的功能。
4.B對于標識符的長度(即一個標識符允許的字符個數(shù)),C語言編譯系統(tǒng)是有規(guī)定的,即標識符的前若干個字符有效,超過的字符將不被識別。不同的C語言編譯系統(tǒng)所規(guī)定的標識符有效長度是不同的。故本題答案為B選項。
5.Dc語言規(guī)定,一個字符常量代表ASCII碼字符集里的一個字符,在群序中用單引號括起來,以便區(qū)分。'\v'表示的是豎向跳格:'kx2a'表示的是兩位十六迸制數(shù);'a'表示的是字符a對應(yīng)的ASCII碼值。"\0"用雙引號故不正確。
6.A解析:C語言的字符型常量中,允許用一種特殊形式的字符常量,就是以一個“\\”開頭的字符。其中,“\\ddd”表示用ASCII碼(八進制數(shù))表示一個字符,本題中的charc='\\72'H口表示占一個字符的變量c的ASCII碼值。
7.D一個客戶可以在多家銀行辦理業(yè)務(wù),一家銀行也有多個客戶辦理業(yè)務(wù),因此,實體客戶和實體銀行之間的聯(lián)系是多對多。本題選擇D選項。
8.As是一個公用體,d的值分別與ch中的兩個元素的值相同,d的高位放在chFl]中、低位放在chl-0]中,因此輸出的結(jié)果為21,43。
9.B
10.A
11.B從題目中可知,\O、\t、\\分別為一個字符,而sizeof是求字節(jié)個數(shù)的函數(shù),其中包括\O占的字節(jié),strlen函數(shù)是求數(shù)組長度的函數(shù);其以\0結(jié)束,因此strlen的值為5,sizeof的值為20。
12.B
13.A
14.A“sizeof(FILE*)=4”,因為“file*”為指針,指針變量占用字節(jié)數(shù)為4,所以“sizeof(int*)=4”,選項A正確。文件指針的值是地址,是一個十六進制數(shù),它的值不一定小于文件字節(jié)數(shù),因此選項B錯誤。文件指針是所指文件的當(dāng)前讀取位置,而不是文件指針的值,因此選項C錯誤。“intfscanf(FILE*Stream,constchar*format,[argument...]);”,fScanf函數(shù)可以向任意類型的文件寫入任意數(shù)量的數(shù)據(jù)(不能超過系統(tǒng)的緩沖區(qū)),寫文件先寫入緩沖區(qū),最后一起寫入文件,因此選項D錯誤。故本題答案為A選項。
15.D
16.C
17.B
18.A程序首先以讀二進制文件的方式打開文件d.dat;然后使用fwrite函數(shù)將數(shù)組a中6個元素寫入d.dat中。并調(diào)用for循環(huán)將a[2]元素(值為3)6次寫入d.dat文件中;接著使用rewind函數(shù)將文件指針fp移動到文件頭;再使用fseek函數(shù)將fp從當(dāng)前位置向后移動2個整數(shù)位置;最后使用fread函數(shù)從fp指向的位置向后讀取6個整數(shù)。由此可知這6個整數(shù)分別是:3,4,5,6,3,3。故本題答案為A選項。
19.B
20.D數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式,一種數(shù)據(jù)結(jié)構(gòu)可以根據(jù)需要采用不同的存儲結(jié)構(gòu),用的存儲結(jié)構(gòu)有順序和鏈式結(jié)構(gòu)。用不同的存儲結(jié)構(gòu),其處理的效率是不同的。
21.方法方法解析:在面向?qū)ο蠓椒ㄖ?,方法是指允許作用于某個對象上的各種操作。
22.
23.22解析:本題變量m既是外部變量(值是13),又是fun函數(shù)的局部變量(值為3)。函數(shù)fun(x*y-m)的值為7*5-3=32,在main函數(shù)中,fun(a,b)/m中的m應(yīng)取外部變量的值13,因此輸出2。
24.88解析:本題考查基本的for循環(huán)條件,i+=2表示i每次遞增2,從0開始,輸出5個整數(shù)則需要的條件是i<=8。
25.11解析:do…while語句的功能是:首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達式的值,若為真,則重復(fù)執(zhí)行循環(huán)體語句,否則退出循環(huán);do…while語句的特點是先執(zhí)行后判斷,因此循環(huán)體至少執(zhí)行1次.本程序中x=2不符合循環(huán)條件,所以只循環(huán)1次。
26.3232解析:根據(jù)二叉樹的性質(zhì),在二叉樹的第k層上,最多有2的k-1次方個結(jié)點。所以,第6層的結(jié)點數(shù)最多為32。
27.a[k][i]*sumx&sa[k][i]\r\n*sum\r\nx,&s解析:程序段for(j=1;j<M;j++)if(a[k][i]>a[j][i]))k=j;是找出第i列的最小值,第一處應(yīng)該是每列最小值累加,所以填a[k][i];和值要通過形參傳回主函數(shù),第二處應(yīng)該填*sum;根據(jù)形參可以確定第三處應(yīng)該填x,&s。
28.20
29.k=p;k=p;解析:為要尋找數(shù)組中的最大元素的下標,需先預(yù)設(shè)1個臨時最大元素的下標,并順序逐一考查數(shù)組的元素,當(dāng)發(fā)現(xiàn)當(dāng)前元素比臨時最大元素更大時,就用當(dāng)前元素的下標更新臨時最大元素下標。直至考查了數(shù)組的全部元素后,這臨時最大元素下標就是數(shù)組的最大元素下標。通常預(yù)設(shè)的最大元素下標是數(shù)組的首元素下標,考查是從首元素開始順序向后繼元素考查。程序中,存儲臨時最大元素下標的變量是k,變量p控制順序考查的循環(huán)控制變量。當(dāng)發(fā)現(xiàn)當(dāng)前元素s[p]比臨時最大元素s[k)更大時,應(yīng)該用p更新k。所以在空框處應(yīng)填入代碼“k=p;”。
30.XX解析:主函數(shù)中首先定義了一個字符型變量c,接著執(zhí)行下面while語句,在while循環(huán)中,首先從鍵盤上讀入一個字符Y并給賦給字符變量c,賦值表達式的值不為'?',執(zhí)行輸出語句,輸出字符X。接著判斷while中的循環(huán)條件,讀入一個字符'?'并賦值給c,賦值表達式的值為'?'循環(huán)條件不再滿足,退出循環(huán)。
31.類類解析:在面向?qū)ο蠓椒ㄖ校惷枋龅氖蔷哂邢嗨茖傩耘c操作的一組對象。
32.52
33.n/2性表的任何位置插入一個元素的概率相等,即概率為p=1/(n+1),則插入一個元素時所需移動元素的平均次數(shù)為E=1/(n+1)(n-i+1)=n/2。
34.3*sizeof(double)或243*sizeof(double)或24解析:觀察程序可知,本題要求用malloc函數(shù)分配三個double型的動態(tài)內(nèi)存單元。
35.77解析:字符型數(shù)據(jù)可作為整型參加算術(shù)運算,其值為其對應(yīng)的ASCII碼。'H'-'A',的結(jié)果是7,加'0'后是'7'的ASCII碼,所以輸出的是字符'7'。
36.結(jié)構(gòu)結(jié)構(gòu)解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結(jié)構(gòu)進行測試。
37.無限無限解析:分析程序“while(s)”語句后面有一個“;”不能執(zhí)行后面的語句,只是執(zhí)行空語句,所以s=12保持不變,因此,沒有條件限制的能循環(huán)無限次(即死循環(huán))。
38.9292解析:本主函數(shù)中首先定義了一個4行4列的二維數(shù)組,然后執(zhí)行一個while循環(huán),該循環(huán)中又嵌套了一個do-while循環(huán)。現(xiàn)看while循環(huán),該循環(huán)通過i++的值來判斷是否結(jié)束循環(huán)當(dāng)i++的值為4的時候結(jié)束循環(huán),當(dāng)i=0時,執(zhí)行while的循環(huán)體,顯然if語句條件不滿足不執(zhí)行,接著讓j=4,然后執(zhí)行do-while循環(huán)體,我們不難看出do-while循環(huán)的功能是將笫i+1行的所有元素加起來,所以這時s的值為s=a[1][0]+a[1][1]+a[1][2]+a[1][3]26,當(dāng)i=1時,i+1=2,if后面括號里的表達式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán);當(dāng)i=2時,i加1變?yōu)?,把笫3+1行的所有元素的加到s上,此時s=s+a[2][0]+a[2][1]a[2][2]+a[2][3]=92,當(dāng)i=3時,3+1=4,if后面括號里的表達式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán),當(dāng)i=3時,if后面括號里的表達式的值為真執(zhí)行后面的confulue語句,結(jié)束該次循環(huán)當(dāng)i=4時while循環(huán)結(jié)束,所以最后輸出的s的值為92。
39.printf("a=%db=%d"ab);printf('a=%d,b=%d',a,b);解析:根據(jù)printf函數(shù)的格式可知輸出語句應(yīng)該為:printf('a=%d,b=%d',a,b);
40.int*p*p或p[0]int*p\r\n*p或p[0]
41.C解析:本題的fun()函數(shù)在x等于0或1時返回3,而在其余情況下返回x-fun(x-2),所以本題的遞歸算法可以這樣來表示:在主函數(shù)中輸出的結(jié)果是fun(7),而fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-(5-0)=7-5=2。故本題應(yīng)該選擇C。
42.A解析:本題主要考查數(shù)組元素的地址作為實參,當(dāng)n=0時,把x[0]的地址傳遞給被調(diào)函數(shù)change(),即把形參k和實參x指向同一個存儲單元,執(zhí)行被調(diào)函數(shù)后k[0]=6,即x[0]=6;當(dāng)n=1時,執(zhí)行被調(diào)函數(shù)后x[1]=7,以此類推,最后得到x數(shù)組的值為6,7,8,9,10。
43.D解析:字符數(shù)組初始化可以有兩種方式:方式一,按單個字符的方式賦初值。方式二,把一個字符串作為初值賦給字符數(shù)組。選項A定義的字符數(shù)組長度為8,由于最后還要加一個“、0”做結(jié)束標志,所以賦給他的字符串長度應(yīng)小于等于7;在給字符數(shù)組賦初值的時候,應(yīng)該用花括號“{”和“}“將字符串括起來。將字符型指針變量指向字符串也有兩種方法,一是在定義指針變量時就給其賦初值,比如:char*p=“student”;二是給指針變量賦值,比如:p=“student”;(p已經(jīng)被定義為字符型指針變量;)。
44.B解析:調(diào)用fputc函數(shù)輸出成功,則返回值是輸出的字符。
45.D
46.C解析:二分法查找是一種線性查找方法,其基本方法是:首先要用要查找的關(guān)鍵碼與線性表中間位置結(jié)點的關(guān)鍵碼值進行比較,這個中間結(jié)點把線性表分為兩個子表,比較相等則查找完畢,不等則根據(jù)查找結(jié)果確定下一步的查找應(yīng)該在哪一個子表中進行,如此下去,直到找到滿足條件的結(jié)點:或者確定表中沒有這樣的結(jié)點。用二分法查找關(guān)鍵碼值11的順序如下所示,其中[]內(nèi)為本次栓索的子表,()內(nèi)為該子表的中間結(jié)果。從圖中可以看出,經(jīng)四次查找后,確定表中沒有這樣的結(jié)點。因此本題正確答案為選項C(4)。
第一次:[3,6,8,10,12,(15),16,18,21,25,30]
第二次:[3,6,(8),10,12],15,16,18,21,25,30
第三次:[3,6,8,[(10),(12)],15,16,18,21,25,30]
第四次:[3,6,8,10,[(12)],(15),16,18,21,25,30]查找失敗。
47.D
48.C解析:線性結(jié)構(gòu),是指數(shù)據(jù)元素只有一個直接前件元素和直接后件元素。線性表是線性結(jié)構(gòu)。棧和隊列是指對插入和刪除操作有特殊要求的線性表,樹是非線性結(jié)構(gòu)。
49.B解析:程序中a[3)[2]={0}將數(shù)組元素全部初始化為0,指針變量ptr指向包含2個元素的一維數(shù)組。在第一個for語句的循環(huán)體中ptr=a+i;語句用于將指針變量ptr指向第i行的數(shù)組元素,通過兩次循環(huán),分別給二維數(shù)組a的第。行的第1個元素和第1行的第1個元素賦了值1和2,即a[0][0]=1,a[1][0]=2。
50.A解析:本題考查ifelse語句。在intf(a,B)中:第一個if語句,先判斷條件,發(fā)現(xiàn)a>b條件不成立,則執(zhí)行與其配對的else語句:第二個if語句,先判斷條件,發(fā)現(xiàn)a==b條件不成立,則執(zhí)行與其配對的else語句,c=-1。
51.DD?!窘馕觥勘绢}主要考查對排序算法的理解。冒泡排序法首先將第一個記錄的關(guān)鍵字與第二個記錄的關(guān)鍵字進行比較,若逆序則交換,然后比較第二個與第三個,以此類推,直至第n-1個與第n個記錄的關(guān)鍵字進行比較。第一趟冒泡排序使最大的關(guān)鍵字元素放到最后。以此類推,進行第2~n次冒泡排序。如果在排序過程中不存在逆序,則排序結(jié)束。在最壞情況下,冒泡排序中,若初始序列為“逆序”序列,則需要比較n(D-1)/2次??焖倥判蚴菍γ芭菖判虻囊环N改進。它的基本思想是:通過一趟排序?qū)⒋庞涗浄指畛瑟毩⒌膬刹糠郑渲幸徊糠钟涗浀年P(guān)鍵字比另一部分記錄的關(guān)鍵字小,然后分別對這兩部分記錄繼續(xù)進行排序,最終達到整個記錄有序。對于快速排序,當(dāng)初始記錄序列按關(guān)鍵字有序或基本有序時,快速排序退化為冒泡排序,最壞情況下比較次數(shù)為n(n-1)/2。
52.C解析:主函數(shù)中定義了一個文件指針fp1,然后通過fopen()函數(shù),以寫的方式打開文件f1.txt,并讓指針fp1指向它,接著調(diào)用fprimf()函數(shù)將abc寫到文件fp1所指的文件里,由于印1指向文件f1.txt的開始位置,因此abc將把文件f1.txt里原來的內(nèi)容good覆蓋掉,故文件f1.txt里最后的內(nèi)容為abc,所以,4個選項中選項C符合題意。
53.C
54.B解析:本題中,structex是結(jié)構(gòu)體類型名,example是結(jié)構(gòu)體變量名。
55.C解析:因為fun(intx)是一個遞歸函數(shù),所以主函數(shù)中fun(7)經(jīng)過三次遞歸調(diào)用,其過程可以描述為'fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2',所以最后的輸出結(jié)果為2。
56.A
57.C解析:整型常量可以用+進制、八進制和+六進制形式來表示。+進制基本常量用一串連續(xù)的數(shù)字來表示,八進制數(shù)用數(shù)字0開頭,+六進制數(shù)用數(shù)字0和字母x或X開頭,各個進制都需用各自合法的字符數(shù)字表示。選項A)中9是不合法的。選項B)+六進制數(shù)字應(yīng)該用數(shù)字零和字母X(或x)開頭,選項D)中G不合法。
58.D解析:考查結(jié)構(gòu)體成員變量的引用方法。可用結(jié)構(gòu)體變量名.數(shù)據(jù)成員名或者結(jié)構(gòu)體指針->數(shù)據(jù)成員名兩種方法來引用。結(jié)構(gòu)體類型的變量、數(shù)組和指針變量的定義。
59.Bscanf(\u3000)語句中用“空格”間隔不同的字符串,空格將被全部忽略掉,所以用scanf(\u3000)函數(shù)不能輸入空格;getehar(\u3000)函數(shù)用于輸入字符,其調(diào)用形式為:ch=getelaar(\u3000),getehar(\u3000)函數(shù)從終端讀入一個字符作為函數(shù)值,把讀入的字符賦給變量ch。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶敲入Enter鍵時,讀入才開始執(zhí)行。gets(\u3000)函數(shù)的凋用形式為:gets(str_adr),其中stradr是存放輸入字符串的起始地址,可以是字符數(shù)組名、字符數(shù)組元素的地址或字符指針變量。9ets函數(shù)用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止。getc(\u3000)函數(shù)的調(diào)用形式為:ch=getc(pf)其中pf是文件指針。函數(shù)的功能是從pf指定的文件中讀入一個字符,并把它作為函數(shù)值返回。
60.C解析:本題考查的知識點是數(shù)組名作為函數(shù)的參數(shù)以及函數(shù)與排序算法結(jié)合在一起的綜合應(yīng)用.本題中首先定義一個長度為10的一個整型數(shù)組,并初始化為“1,2,3,4,5,6,7,8,9,10”,然后調(diào)用排序函數(shù)sort(),通過分析不難看出,sort()數(shù)是對具有n個元素的a數(shù)組進行從大到小排序.由于函數(shù)的第一個參數(shù)是數(shù)組名,其對應(yīng)的實參可以是函數(shù)名或地址。本題在調(diào)用該函數(shù)時,實參是&aa[3)的地址,即把aa[3]的地址傳給?行參數(shù)蛆名a,函數(shù)也就是對aa[3]開始的5個元素進行從大到小的排序,aa[0]。aa[1],aa[2]、aa[8]、aa[9]并沒有變化.Sort()執(zhí)行完畢后,接著執(zhí)行后面的for語句輸出數(shù)組aa中各個元素的值,由于函數(shù)sort()只是對aa[3]開始的5個元素進行從大到小的排序,aa[0]、aa[1]、aa[2]、aa[8]、aa[9]并沒有變化,所以輸出為“1,2,3,8,7,6,5,4,9,10”。所以4個選項中C正確。
61.B
62.D
63.A本題考查循環(huán)跳出的知識點:①break語句可以出現(xiàn)在switch循環(huán)體內(nèi)及語句體內(nèi),它的作用是跳出循環(huán)體,不能用于其他的語句;②continue語句的作用是結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,而接著判定循環(huán)條件是否成立,確定下一次循環(huán)是否繼續(xù)執(zhí)行,執(zhí)行contiune語句不會使整介循環(huán)終止;③循環(huán)體內(nèi)使用break語句會使循環(huán)提前終止;④從多層循環(huán)嵌套中退出時,可以使用90t0語句或者break語句。
64.A詳細設(shè)計的任務(wù)是為軟件結(jié)構(gòu)圖中而非總體結(jié)構(gòu)圖中的每一個模塊確定實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細節(jié),所以A錯誤。
65.D
\n程序的結(jié)構(gòu)體數(shù)組a的元素形成了一個單向的循環(huán)鏈表,每個元素的指針成員都指向下一個元素的地址。
\n
66.B
67.C
68.B
69.B取模運算符“%”,二元運算符,具有左結(jié)合性,參與運算的量均為整型。選項B中的a變量是doable實型,所以8不符合規(guī)定。
70.D
71.Dfloat是4個字節(jié),int是兩個字節(jié)。當(dāng)用int取float的值時,只取前兩個字節(jié)
72.D
73.A本題主要考查軟件測試的基本知識。軟件測試的步驟可分為單元測試(模塊測試)、集成測試、確認測試和系統(tǒng)測試。
(1)單元測試是針對每個模塊進行的測試,它可從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計測試用例,多個模塊可以平行、對立地測試。單元測試主要用于發(fā)現(xiàn)詳細設(shè)計和編程時犯下的錯誤。單元測試多采用白盒測試,輔之以黑盒測試。
(2)集成測試是在單元測試的基礎(chǔ)上,根據(jù)模塊結(jié)構(gòu)圖將各個模塊連接起來,必須精心計劃,應(yīng)提交集成測試計劃、集成測試規(guī)格說明和集成測試分析報告。主要目標是發(fā)現(xiàn)與接口有關(guān)的問題。集成測試可以發(fā)現(xiàn)概要設(shè)計時犯的錯誤。
(3)確認測試用于驗證軟件的功能和性能及其他特性是否與用戶的要求一致。確認測試主要用于發(fā)現(xiàn)需求分析時犯下的錯誤,一般使用黑盒法測試,以表明軟件符合需求說明書的要求,應(yīng)該仔細設(shè)計測試用例和測試過程。確認測試必須有用戶參加,或以用戶為主,用戶應(yīng)參與設(shè)計測試用例,通常情況下,主要使用生產(chǎn)中的實際數(shù)據(jù)進行測試,測試數(shù)據(jù)通過用戶接口輸入。
(4)系統(tǒng)測試是將已經(jīng)通過確認測試的軟件,作為整個計算機系統(tǒng)的元素與計算機硬件、外設(shè)和網(wǎng)絡(luò)等其他因素結(jié)合在一起,進行一系列的組裝測試和確認測試。系統(tǒng)測試的目的是通過與系統(tǒng)的需求定義做比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合的地方。系統(tǒng)測試可以發(fā)現(xiàn)問題定義時犯下的錯誤。
74.C
75.C所謂的線性結(jié)構(gòu)是指:如果一個非空的數(shù)據(jù)結(jié)構(gòu)滿足下列兩個條件,即1)有且只有一個根結(jié)點;2)每一個結(jié)點最多有一個前驅(qū),也最多有一個后繼。同時滿足兩個條件的有隊列、線性表和棧,而二叉樹的結(jié)點可能存在兩個后繼,所以不是線性結(jié)構(gòu)。
76.D因為一名教師可講授多門課程,而一門課程又能由多名教師講授,所以教師和課程之間是多對多的關(guān)系,可以表示為m:n,選擇D)。
77.D
78.Awhile循環(huán)的執(zhí)行過程如下:①計算while后面圓括號中表達式的值。當(dāng)值為非0時,執(zhí)行步驟②。當(dāng)值為0時,執(zhí)行步驟④。②執(zhí)行循環(huán)體一次。③轉(zhuǎn)去執(zhí)行步驟①④退出循環(huán)。在選項A中,表達式(ch=get-char())!="N"表示輸入的字符不等于N,如果這個條件表達式成立,則執(zhí)行循環(huán)體,打印輸出輸入的字符。如果這個條件表達式不成立,即輸入的字符等于N,則退出循環(huán)。所以選項A為正確答案。
79.B指針中存放的是變量的地址,指針也可以進行增減運算,這時指針移動的最小單位是一個存儲單元,而不是一個字節(jié)。所以題中“P+6”指的是將指針向后移動了6個存儲單元,即指向uE63,存放的是b[6]的地址。
80.A本題主要考查SQL中一些基本的命令。SQL常用的語句包括:Select、Insert、Update、Delete、Create、Alter和Drop等。
在SQL語言中使用率最高的是Select,這個命令的作用是從表中查找出滿足條件的記錄。
Insert命令的作用是對數(shù)據(jù)表進行插入操作。
Update命令的作用是對數(shù)據(jù)表進行更新操作。
Delete命令的作用是對數(shù)據(jù)表中的數(shù)據(jù)進行刪除操作。
Create命令的作用是創(chuàng)建數(shù)據(jù)表。
Alter命令的作用是修改表的結(jié)構(gòu)。
Drop命令的作用是用來刪除表,它與Delete的區(qū)別是進行Drop操作后,數(shù)據(jù)表不存在了,而進行Delete操作后,數(shù)據(jù)表還在,只是數(shù)據(jù)被刪除了。
81.
【解析】因為t是指向一個動態(tài)存儲空間,因此其是指針,而不是其中的內(nèi)容,故把“*t=calloc(m,sizeof(STU))”改為“t=(structss*)calloc(m,sizeof(STU));”,而題目要求把學(xué)生的全部內(nèi)容互換,因此即整個結(jié)構(gòu)體,故把“t[k].num=b[j].hum;”改為“t[k]=b[j];”。
82.voidfun(STREC*a)
\n{
\ninti;
\na->ave=0.0;
\nfor(i=0;i<N;i++)
\na->ave=a->ave+a->s[i];
\n/*求各門課程成績的總和*/
\na->ave=a->ave/N;/*求平均分*/
\n}
\n【解析】本題考查的是指向結(jié)構(gòu)體類型的指針變量做參數(shù)和結(jié)構(gòu)體類型成員的運算。fun函數(shù)中求出平均成績,要帶回主函數(shù)則必須定義一個指針類型的形參STREC*a,同時引用成員使用指向運算符,a->ave和a->s[i]。
\n2022-2023年山東省濱州市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.數(shù)據(jù)庫設(shè)計包括兩個方面的設(shè)計內(nèi)容,它們是()。
A.概念設(shè)計和邏輯設(shè)計B.模式設(shè)計和內(nèi)模式設(shè)計C.內(nèi)模式設(shè)計和物理設(shè)計D.結(jié)構(gòu)特性設(shè)計和行為特性設(shè)計
2.廣義表((a),a)的表頭是()。
A.aB.(a)C.((a))D.()
3.已有定義:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字堪的表達式是()。
A.isupper(c)B.A<=c<=ZC.A<=c&&c<=ZD.c<=(z-32)&&(a-32)<=c
4.以下敘述中正確的是()。
A.C語言編譯系統(tǒng)對標識符的長度沒有規(guī)定
B.C語言標識符的規(guī)定長度因系統(tǒng)而異
C.C語言規(guī)定標識符長度最多允許16個字符,超長報錯
D.C語言規(guī)定以下劃線開頭的標識符長度必須大于1
5.下列選項中不是字符常量的是()。
A.'\v'B.'\x2a'C.'a'D."\0"
6.若有說明語句:charc='\72'則變量c()。
A.包含1個字符B.包含2個字符C.包含3個字符D.說明不合法,c的值不確定
7.在銀行業(yè)務(wù)中,實體客戶和實體銀行之間的聯(lián)系是()。
A.—對一B.—對多C.多對一D.多對多
8.有以下程序: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
9.線性表是具有n個()的有限序列。
A.字符B.數(shù)據(jù)元素C.數(shù)據(jù)項D.表元素
10.
11.以下程序的輸出結(jié)果是()。main(){charst[20]="hell0\O\t\\\”;printf("%d%d\n",strlen(st),sizeof(st));}A.99B.520C.1320D.2020
12.
13.x>0&&x<=10的相反表達式為()。
A.x<=0||x>10B.x<=0&&x>10C.x<=0||x<=10D.x>0&&x>10
14.以下敘述正確的是()。
A.表達式“sizeof(FILE*)==sizeof(int*)”的值為真
B.文件指針的值是一個整數(shù),它的值一定小于文件字節(jié)數(shù)
C.文件指針的值是所指文件的當(dāng)前讀取位置
D.使用fscanf函數(shù)可以向任意類型的文件中寫入任意數(shù)量的字符
15.
16.對于只在表的首、尾兩端進行插入操作的線性表,宜采用的存儲結(jié)構(gòu)為()。
A.順序表B.用頭指針表示的循環(huán)單鏈表C.用尾指針表示的循環(huán)單鏈表D.單鏈表
17.一個序列中有10000個元素,若只想得到其中前10個最小元素,最好采用_______方法
A.快速排序B.堆排序C.插入排序D.二路歸并排序
18.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},b[6];fp=fopen(“d.dat”,“w+b”);fwrite(a,sizeof(int),6,fp);for(i=0;i<6;i++)fwrite(&a[2],sizeof(int),1,fp);rewind(fp);fseek(fp,sizeof(int)*2,SEEK_CUR);fread(b,sizeof(int),6,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,b[i]);}程序運行后的輸出結(jié)果是()。
A.3,4,5,6,3,3,B.1,2,3,4,5,6,C.3,4,5,6,1,2,D.3,4,5,6,1,1,
19.判斷一個循環(huán)隊列cq(最多元素為m)為滿的條件是()。
A.cq->rear-cq-front=m;
B.(cq->rear+1)%m=cq->front;
C.cq->front=cq->rear;
D.cq->rear=m-1;
20.下列敘述中正確的是()。
A.一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)
B.邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)
C.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存諸結(jié)構(gòu)不影響數(shù)據(jù)處理的效率
D.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存諸結(jié)構(gòu)影響數(shù)據(jù)處理的效率
二、2.填空題(20題)21.在面向?qū)ο蠓椒ㄖ?,允許作用于某個對象上的操作稱為【】。
22.下面程序的運行結(jié)果是______。
#include<stdio.h>
main()
{inty,a;
y=2,a=1;
while(y--!=-1)
{do{a*=y;a++;}while(y--);}
printf("%d,%d",a,y);}
23.下面程序執(zhí)行后輸出的結(jié)果是【】。
intm=13;
intfun(intx,inty)
{intm=3;
return(x*y-m);
}
main()
{inta=7,b=5;
printf("%d\n",fun(a,b)/m);
}
24.要求使下列程序輸出5個整數(shù),請?zhí)羁铡?/p>
for(i=0;i<=______;printf("%d\n",i+=2));
25.下列程序的循環(huán)次數(shù)是______。
x=2;
do
{x=x*x;}
while(!x);
26.在一棵二叉樹上第6層的結(jié)點個數(shù)最多是【】。
27.以下程序中,函數(shù)SumColumMin的功能是:求出M行N列二維數(shù)組每列元素中的最小值,并計算它們的和值,和值通過形參傳回主函數(shù)輸出。請?zhí)羁眨?/p>
#include<stdio.h>
#defineM2
#defineN4
voidSumColumMin(inta[M][N],int*sum)
{inti,j,k,s=0;
for(i=0;i<N;i++)
k=O;
for(j=1;j<M;j++)
if(a[k][i]>a[j][i])k=j;
s+:【】;
}
【】=s;
}
main()
{intx[M][N]={3,2,5,1,4,1,8,3},s;
SumColumMin(【】);
printf("%d\n",s);
}
28.下面程序的輸出是()。
main()
{intarr[8],i,k=0;
for(i=0;i<8;i++)
arr[i]=i;
for(i=1;i<5;i++)
k+=arr[i]+i;
printf("%d\n",k);
}
29.下面程序的功能是輸出數(shù)組s中最大元素的下標,請?zhí)羁铡?/p>
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【】
printf("%d\n",k);}
30.有以下程序:
#include<stclio.h>
main()
{charc;
while((c=getchar())!='?')putchar(--c);
}
程序運行時,如果從鍵盤輸入:Y?N?<回車>,則輸出結(jié)果為【】。
31.在面向?qū)ο蠓椒ㄖ校尽棵枋龅氖蔷哂邢嗨茖傩耘c操作的一組對象。
32.設(shè)有以下定義和語句,sizeof(a)的值是【】,sizeof(b)的值是【】。
struct{intday;Charmonth;intyear;}a,*b;
b=&a;
33.長度為n的順序存儲線性表中,當(dāng)在任何位置上插入一個元素概率都相等時,插入一個元素所需移動元素的平均個數(shù)為【】。
34.以下程序給指針p分配三個double型動態(tài)內(nèi)存單元,請?zhí)羁铡?/p>
#include<stdio.h>
#include<stdlib.h>
main()
{double*p;
p=(double*)malloc(【】);
p[0]=1.5;p[1]=2.5;P[2]=3.5;
printf("%f%f%f\n",p[0],p[1],p[2]);
}
35.若有以下程序
main()
{chara;
a='H'-'A'+'0';
printf("%c\n",A);
}
執(zhí)行后輸出結(jié)果是【】。
36.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進行測試。
37.下列語句能循環(huán)______次。
ints=12;
while(s);
--s;
38.以下程序運行后的輸出結(jié)果是______。
main()
{
inta[4]]4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0.j=0,s=0;
while(i++<4}
if(i==2||i==4)continue;
j=0;
do
{
s+=a[i][j]:
j++;
}while(j<4);
}
printf("%d\n",s);
}
voidfun(intx,inty)
}
39.若變量a,b已定義為int類型并分別賦值21和55,要求用printf函數(shù)以a=21,b=55的形式輸出,請寫出完整的輸出語句行:【】。
40.下面函數(shù)用來求出兩個整數(shù)之和,并通過形參傳回兩數(shù)相加之和值。請?zhí)羁铡?/p>
intadd(intx,inty,【】,)
{【】=x+y;}
三、1.選擇題(20題)41.有以下程序:fun(intx){intp;if(x==0‖x=1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7);}執(zhí)行后的輸出結(jié)果是()。
A.7B.3C.2D.0
42.有以下程序:voidchange(intk[]){k[0]=k[5];)main(){intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;while(n<=4)(change(&x[n]);n++;}for(n=0;n<5;n++)printf("%d",x[n]);printf("\n");}程序運行后的輸出結(jié)果是()。
A.678910B.13579C.12345D.62345
43.下列選項中正確的語句組是()。
A.chars[8];s={"Beijing"};
B.char*s;s={"Beijing"};
C.chars[8];s="Beijing";
D.char*s;s="Beijing";
44.C語言規(guī)定如果調(diào)用fputc函數(shù)輸出成功,則返回值是()。
A.1B.輸出的字符C.0D.真
45.下列敘述中,正確的一條是______。
A.語句int*pt中的*pt是指針變量名
B.運算符*和&都是取變量地址的運算符
C.已知指針變量p指向變量a,則&a和*p值相同,都是變量a的值
D.語句“int*p=a;”等價于“int*p;p=&a[0];”
46.在順序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找關(guān)鍵碼值11,所需的關(guān)鍵碼比較次數(shù)為______。
A.2B.3C.4D.5
47.下列程序的輸出結(jié)果是_____。intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%\d\n",r);}
A.12B.13C.14D.15
48.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性的是()。
A.線性表B.隊列C.樹D.棧
49.有以下程序:#include<stdio.h>main(){inta[3][2]={0},(*ptr)[2],i,j;for(i=0;i<2;i++){ptr=a+i;scanf("%d",ptr);ptr++;}for(i=0;i<3;i++)}for(j=0;j<2;j++)prinff("%2d",a[i][j]);prinff("\n");}}若運行時輸入:123<回車>,則輸出結(jié)果是()。
A.產(chǎn)生錯誤信息B.102000C.123000D.102030
50.下列程序的輸出結(jié)果是()。
#include<stdio.h>
main()
{iuta=2,b=3,p;
p=f(a,B)
printf("%d",p);
}
intf(a,b)
{intc;
if(a>B)c=1;
e1Seif(a==B)c=0;
else(3=-1;
return(C);
}
A.-1B.0C.1D.2
51.對于長度為n的線性表,在最壞情況下,下列各排序法所對應(yīng)的比較次數(shù)中正確的是()。
A.冒泡排序為n/2B.冒泡排序為nC.快速排序為nD.快速排序為n(n-1)/2
52.有如下程序:#include<stdio.h>main(){FILE*fp1;fp1=fopen("f1.txt","w");fprintf(fp1,"abc");fclose(fp1);}若文本文件f1.txt中原有內(nèi)容為good,則運行以上程序后文件f1.txt中的內(nèi)容為()。
A.goodabcB.abcdC.abcD.abcgood
53.在下列選項中,不正確的表達式是()
A.a>b>cB.c--,++b,a+=1C.a=c+b>n-m=kD.p++
54.設(shè)有以下說明語句:structex{intx;floaty;charz;}example;則下面敘述中不正確的是()。
A.struct是結(jié)構(gòu)體類型的關(guān)鍵字
B.example是結(jié)構(gòu)體類型名
C.x,y,z都是結(jié)構(gòu)體成員名
D.structex是結(jié)構(gòu)體類型名
55.有以下程序
fun(intx)
{intp;
if(x==1)return(3);
p=x-fun(x-2);
returnp;
}
main()
{printf("%d\n",fun(7));}
執(zhí)行后的輸出結(jié)果是
A.7B.3C.2D.0
56.下列敘述中正確的是()
A.指令由操作數(shù)和操作碼兩部分組成
B.常用參數(shù)xxMB表示計算機的速度
C.計算機的一個字長總是等于兩個字節(jié)
D.計算機語言是完成某一任務(wù)的指令集
57.下列合法的整型常量的表示是
A.98B.oXdeC.32767D.0xDG
58.以下scanf函數(shù)調(diào)用語句中對結(jié)構(gòu)體變量成員的引用不正確的是
structpupil
{charname[20];
intage
intsex;
}pup[5],*p;
p=pup;
A.scanf("%s",pup[0].name);
B.scanf("%d",&pup[0].age);
C.scanf("%dT",&(p->sex));
D.scanf("%d",p->age);
59.若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)A.getc()B.gets()C.getchar()D.scanf()
60.以下程序中函數(shù)sort的功能足對a所指數(shù)組中的數(shù)據(jù)進行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+l,j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)print("%d,",aa[i]);printf('\n");}程序運行后輸出的結(jié)果是
A.1,2,3,4,5,6,7,8,9,10
B.10,9,8,7,6,5,4,3,2,1,
C.1,2,3,8,7,6,5,4,9,10
D.1,2,10,9,8,7,6,5,4,3,
四、選擇題(20題)61.
62.
63.下列敘述中正確的是()。
A.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句
B.eotinue語句的作用是結(jié)束整個循環(huán)的執(zhí)行
C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同
D.從多層循環(huán)嵌套中退出時,只能使用got0語句
64.下面描述中錯誤的是()。
A.系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細設(shè)計
B.軟件設(shè)計是將軟件需求轉(zhuǎn)換為軟件表示的過程
C.數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設(shè)計是軟件設(shè)計的任務(wù)之一
D.PAD圖是軟件詳細設(shè)計的表示工具
65.
有以下程序
#include<stdio.h>
structtt
(intx;structtt*y;)*P;
structtta[4]={20,a+1,15,a+2,30,a+3,17,a};
main
{inti;
p=a;
for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}
}
程序的運行結(jié)果是()。
A.20,30,B.30,17,C.15,30,D.20,15,
66.
67.
68.
69.若有定義:doublea=22;inti=0,k=18;,則不符合c語言規(guī)定的賦值語句是()。
A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;
70.
71.有以下程序,其輸出結(jié)果是()。
voidmain()
{
floarx=1;
inty;
x++;
y=x+1;
printf("x=%d,y=%f",x,y);
}
A.x=2,y=3
B.x=2,y=3.0
C.x=2.0,y=3
D.x=0,y=0.000000
72.
73.檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。
A.確認測試B.集成測試C.驗證測試D.驗收測試
74.
75.(2)以下數(shù)據(jù)結(jié)構(gòu)中不屬于線性數(shù)據(jù)結(jié)構(gòu)的是()
A.隊列
B.線性表
C.二叉樹
D.棧
76.一名教師可講授多門課程,一門課程可由多名教師講授。則實體教師和課程間的聯(lián)系是()。
A.1:l聯(lián)系B.1:m聯(lián)系C.m:l聯(lián)系D.m:n聯(lián)系
77.
78.要求通過while循環(huán)不斷讀入字符,當(dāng)讀人字母N時結(jié)束循環(huán),若變量已正確定義,下列正確的程序段是()。A.B.C.D.A.A.AB.BC.CD.D
79.若有定義“intb[8],*p=b;”,則p+6表示()。
A.數(shù)組元素b[6]的值B.數(shù)組元素b[6]的地址C.數(shù)組元素b[7]的地址D.數(shù)組元素b[0]的值加上6
80.下列SQL語句中,用于修改表結(jié)構(gòu)的命令式是A.A.Alter
B.Create
C.Update
D.Insert
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:對M名學(xué)生的學(xué)習(xí)成績,按從高到低的順序找出前m(m≤10)名學(xué)生來,并將這些學(xué)生數(shù)據(jù)存放在一個動態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首地址作為函數(shù)值返回。
請修改程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.某學(xué)生的記錄由學(xué)號、8門課程成績和平均分組成,學(xué)號和8門課程的成績已在主函數(shù)中給出,請編寫函數(shù),其功能是:求出該學(xué)生的平均分,并放入記錄的ave成員中。
例如,學(xué)生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN8
typedefstruct
{
charnum[10];
double
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 通訊行業(yè)會計的工作計劃
- 建立互助養(yǎng)老服務(wù)網(wǎng)絡(luò)的計劃
- 水務(wù)產(chǎn)業(yè)發(fā)展戰(zhàn)略計劃
- 促進學(xué)校與家長的緊密合作的學(xué)期工作計劃
- 2025年合成橡膠型膠粘劑項目建議書
- 強化供需監(jiān)測機制保障市場秩序
- 2025年人造崗石樹脂項目建議書
- 2025年硅粉系列合作協(xié)議書
- 國有土地使用權(quán)租賃合同
- 第二季度部門工作計劃表
- 2024河南省鄭州市公安局輔警招聘2024人歷年高頻難、易錯點500題模擬試題附帶答案詳解
- 投資居間協(xié)議合同模板
- 多重耐藥菌的預(yù)防及護理課件
- 抽水蓄能電站課件
- GB/T 25052-2024連續(xù)熱浸鍍層鋼板和鋼帶尺寸、外形、重量及允許偏差
- 河北科大項目實施計劃書
- 消防設(shè)施操作和維護保養(yǎng)規(guī)程
- -精益與智能工廠三年規(guī)劃
- 2024年高素質(zhì)農(nóng)民職業(yè)技能大賽(農(nóng)業(yè)經(jīng)理人)賽項考試題庫-下(多選、判斷題)
- 中小學(xué)校園安全教育主題班會課件:筑牢安全紅線、守護校園平安
- 高空作業(yè)考試題(帶答案)
評論
0/150
提交評論