版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
2021年河南省三門峽市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.衡量顯示器的主要技術(shù)指標是()
A.波特率B.分辨率C.主頻D.顯示速度
2.以下敘述中正確的是()A.當對文件的讀(寫操作完成之后,必須將它關(guān)閉,否則可能導致數(shù)據(jù)丟失
B.打開一個已存在的文件并進行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋
C.在一個程序中當對文件進行了寫操作后,必須先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù)
D.語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)
3.以下程序的輸出結(jié)果是().A.A.2222B.2468C.222D.246
4.有以下程序:#includc<stdio.h>voidfun(int*p){printf("%d\n",p[5]);}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};fun(&a[3]);}程序運行后的輸出結(jié)果是()。A.5B.6C.8D.9
5.下面程序運行的結(jié)果是______。main(){intx,y,z;x=0;y=z=-1;x+=-z---y;printf("x=%d\n",x);}
A.x=4B.x=0C.x=2D.x=3
6.軟件詳細設計的主要任務是確定每個模塊的()。
A.算法和使用的數(shù)據(jù)結(jié)構(gòu)B.外部接口C.功能D.編程
7.對一個有A,B,C,D隨機組成的序列進行哈夫曼編碼,據(jù)統(tǒng)計,各個元素的概率分別為:P(A)=0.4,P(B)=0.35,P(C)=0.2,P(D)=0.05,請問該編碼的平均期望編碼長度為()bits。
A.1.45B.1.74C.1.85D.1.92
8.需求分析階段的任務是確定()
A.軟件開發(fā)方法B.軟件開發(fā)工具C.軟件開發(fā)費用D.軟件系統(tǒng)功能
9.下列程序的運行結(jié)果是()。#include<stdio.h>voidfun(int*S,int*p){staticintt=3:*p=s[t];t--;}voidmain{inta[]={2,3,4,5),k;intx;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}}A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5
10.程序運行中需要從鍵盤上輸入多于一個數(shù)據(jù)時,各數(shù)據(jù)之間應使用()符號作為分隔符。
A.空格或逗號B.逗號或回車C.逗號或分號D.空格或回車
11.
12.有以下程序main(){chars[]="Yes\n/No",*ps=s;puts(ps+4);*(ps+4)=0;puts(s);}程序運行后的輸出結(jié)果是(選項D中的第一行是空行)A.n/NoYes/NoB./NoYesYesC.n/No/NoD.Yes/No
13.若有下列定義,則對a數(shù)組元素地址的正確引用是()。inta[5],*p=a;
A.p+5B.*a+1C.&a+1D.&a[0]
14.下面程序的運行結(jié)果是()。
A.gaeB.gaC.LanguageD.有語法錯
15.設x,y,t均為int型變量,執(zhí)行語句:
x=y=3;
t=++x||++y;
完成后,y的值為A.A.不確定B.4C.3D.1
16.高度為h的滿二叉樹的結(jié)點數(shù)是________個。
A.log2h+1B.2h+1C.2h-1D.2h-1
17.
有以下程序:
main
{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,
12,},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{for(j=0;j<i;j++)printf("%4c",);
for(j=________;J<4;j++)printf("%4d",num
[i][j]);
printf("\n");}}
若要按以下形式輸出數(shù)組右上半三角
1234
678
1112
16
則在程序下劃線處應填入的是()。
A.i-1B.iC.i+1D.4一i
18.下列特征中不是面向?qū)ο蠓椒ǖ闹饕卣鞯氖?)。
A.多態(tài)性B.繼承C.封裝性D.模塊化
19.和順序棧相比,鏈棧有一個比較明顯的優(yōu)勢是()。
A.通常不會出現(xiàn)棧滿的情況B.通常不會出現(xiàn)??盏那闆rC.插入操作更容易實現(xiàn)D.刪除操作更容易實現(xiàn)
20.以下選項中與“if(a==l)a=b;elsea++;”語句功能不同的switch語句是()。
A.switch(a){casel:a=b;break;default:a++;}
B.switch(a==l){case0:a=b;break;casel:a++;}
C.switch(a){default:a++;break;casel:a=b;}
D.switch(a==l){casel:a=b;break;case0:a++;}
二、2.填空題(20題)21.以下程序的運行結(jié)果是【】。
#include<stdio.h>
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b++;break;
case3:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
22.表示“整數(shù)x的絕對值大于5”時值為“假”的C語言表達式是______。
23.設有下列宏定義:
#defineA2
#defineB(A+3)
則執(zhí)行賦值語句“k=B*20;”(k為int型變量)后,k的值是______。
24.以下程序的輸出結(jié)果是【】。
main()
{charc=′z′;
printf("%c",c-25);}
25.當循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進行入隊運算。這種情況稱為【】。
26.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。
27.以下程序的輸出結(jié)果是【】。
main()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}}
28.設函數(shù)findbig已定義為求3個數(shù)中的最大值,以下程序?qū)⒗煤瘮?shù)指針調(diào)用findbig函數(shù)。請?zhí)羁铡?/p>
main()
{intfindbig(int,int,int);
int(*f)(),x,y,z,big;
f=【】。
scanf("%d%d%d",&x,&y,&z);
big=(*f)(x,y,z);
printf("big=%d\n",big);
}
29.以下程序的功能是將字符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。
例如,輸入字符串:abc123edf456gh,執(zhí)行程序后輸出:123456。請?zhí)羁铡?/p>
#include<stdio.h>
#include<ctype.h>
main()
{chars[80],d[80];inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(【】){d[j]=s[i];j++;}
d[j]='\0';
puts(d);
}
30.若有如下程序:
main()
{intx=4,y=3,x=2,t;
t=x<y<z;
printf("%d\n",t);}
則程序運行后的輸出結(jié)果是【】。
31.設有下列的程序段:
charstr[]="Hello";
char*ptr;
ptr=-str;
執(zhí)行上面的程序段后,*(ptr+5)的值為______。
32.派生類對基類繼承控制訪問有三種。派生類可以定義其基類中不具備的【】。
33.以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值,請?zhí)羁铡?/p>
voidfun(int,int,int(*)[4],int*);
main()
{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(1=0;i<3;i++)printf("%4d",b[i]);
printf("\n");
}
voidfun(intm,intn,intar[][4],int*bar)
{inti,j,x;
for(i=0;i<m;i++)
{x=ar[i][0];
for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];
【】=x;
}
}
34.設一棵完全二叉樹共有700個結(jié)點,則在該二叉樹中有【】個葉子結(jié)點。
35.以下程序的輸出結(jié)果是______。
#defineMCRA(m)2*m
#defineMCRB(n,m)2*MCRA(n)+m
main()
{inti-2,j=3;
printf("%d\n",MCRB(j,MCRA(i)));
}
36.下列程序的輸出結(jié)果是【】。
voidfun(int*n)
{
while((*n)--);
printf("%d",++(*n));
}
main()
{inta=100;
fun(&a);
}
37.以下程序通過函數(shù)指針p調(diào)用函數(shù)fun,請在填空欄內(nèi)寫出定義變量p的語句。
voidfun(int*x,int*y)
{……}
main()
{inta=10,b=20;
【】:
p=fun;p(&a,&b);
……
}
38.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型的動態(tài)存儲單元______。
39.以下定義的結(jié)構(gòu)體類型擬包含兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義補充完整。
structnode
{intinfo;
【】link;};
40.函數(shù)調(diào)用語句:“fgets(buf,n,fp);”從中指向的文件中讀入n個字符放到buf字符數(shù)組中,函數(shù)返回值為______。
三、1.選擇題(20題)41.軟件設計中,有利于提高模塊獨立性的一個準則是______。A.低內(nèi)聚低耦合B.低內(nèi)聚高耦合C.高內(nèi)聚低耦合D.高內(nèi)聚高耦合
42.有以下程序:main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序運行后的輸出結(jié)果是______。
A.12353514B.12353513C.12343514D.12343513
43.下列敘述中正確的是()。
A.break語句只能用于switch語句體中
B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)
C.break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)
D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同
44.下面關(guān)于對象概念的描述中,錯誤的是
A.對象就是C語言中的結(jié)構(gòu)體變量
B.對象代表著正在創(chuàng)建的系統(tǒng)中的一個實體
C.對象是一個狀態(tài)和操作(或方法)的封裝體
D.對象之間的信息傳遞是通過消息進行的
45.有以下程序
main()
{inta[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=j+1;k<4;k++)
if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/
for(i=0;i<4;i++)printf("%d,",a[i][i]);
}
程序運行后的輸出結(jié)果是
A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,
46.有定義語句:intb;charc[10];,則正確的輸入語句是
A.scanf("%d%s",&b,&c);
B.scanf("%d%s",&b,c);
C.scanf("%d%s",b,c);
D.scanf("%d%s",b,&c);
47.希爾排序?qū)儆?)。A.A.交換排序B.歸并排序C.選擇排序D.插入排序
48.若變量已正確定義并賦值,以下符合C++語言語法的表達式是()。
A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b
49.下列對隊列的敘述正確的是A.隊列屬于非線性表B.隊列按“先進后出”原則組織數(shù)據(jù)C.隊列在隊尾刪除數(shù)據(jù)D.隊列按“先進先出”原則組織數(shù)據(jù)
50.以下敘述不正確的是
A.一個C源程序可由一個或多個函數(shù)組成
B.一個C源程序必須包含一個main函數(shù)
C.C程序的基本組成單位是函數(shù)
D.在C程序中,注釋說明只能位于一條語句的后面
51.用C言編寫的代碼程序()。
A.可立即執(zhí)行B.是個源程序C.經(jīng)過編譯即可執(zhí)行D.經(jīng)過編譯解釋即可執(zhí)行
52.有以下程序:#include<stdio.h>main(){inty=9;for(;y>0;y--)f(y%3==0)printf("%d",--y);}程序的運行結(jié)果是()。
A.741B.963C.852D.875421
53.以下選項中,非法的字符常量是______。
A.'\t'B.'\17'C.\nD.'\xaa'
54.以下敘述中正確的是
A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作
B.用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要有輸入
C.用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出
D.用C程序?qū)崿F(xiàn)的算法可以既沒有輸入出沒有輸出
55.以下程序的輸出結(jié)果是()。mam(){charcf[3][5]={"AAAA","BBB","CC");printf("\"%s\"n",cf[1]);}
A.AAAAB.BBBC.BBBCCD.CC
56.對關(guān)系S和只進行集合運算,結(jié)果中既包含S中的所有元組也包含只中的所有元組,這樣的集合運算稱為()。
A.并運算B.交運算C.差運算D.積運算
57.以下程序的輸出結(jié)果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}
A.19B.17C.15D.12
58.在下列幾種排序方法中,要求內(nèi)存量最大的是______。
A.插入排序B.選擇排序C.快速排序D.歸并排序
59.下列關(guān)于棧的描述中錯誤的是______。
A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入和刪除操作中,不需要改變棧底指針
60.下列說法錯誤的是()。
A.下列結(jié)構(gòu)體定義時,占據(jù)了5個字節(jié)的空間structstudent{intnum;intage;charsex;}
B.結(jié)構(gòu)體的成員名可以與程序中的變量名相同
C.對結(jié)構(gòu)體中的成員可以單獨使用,它的作用相當于普通變量
D.結(jié)構(gòu)體可以嵌套定義
四、選擇題(20題)61.
62.如果在C程序中要用到庫函數(shù)中的字符串比較函數(shù)strcmp(),那么在程序前面應該添加的頭文件是()。
A.stdio.hB.string,hC.a(chǎn)lloc.hD.math.H
63.
64.對于一個正常運行的C程序,以下敘述中正確的是()。
A.程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束
B.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束.
C.程序的執(zhí)行總是從main函數(shù)開始、
D.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束
65.
66.
有下列程序:
main
{intx=5;
do
{printf("%d",X-=4);)
while(!(--x));
}
程序的輸出結(jié)果是()。
A.1B.20C.1-4D.死循環(huán)
67.關(guān)系數(shù)據(jù)庫管理系統(tǒng)所管理的關(guān)系是()。A.若干個二維表B.一個DBF文件C.一個DBC文件D.若干個DBC文件
68.
69.兩個或兩個以上模塊之間聯(lián)系的緊密程度稱為()。
A.耦合性B.內(nèi)聚性C.復雜性D.數(shù)據(jù)傳輸特性
70.程序中若有如下說明和定義語句
charfun(char*);
main()
{
char*s="one",a[5]={0},(*f1)()=fun,ch;
……
}
以下選項中對函數(shù)fun的正確調(diào)用語句是
A.(*f1)(A);B.*f1(*s);C.fun(&A);D.ch=*f1(s);
71.
72.若有“doublea;”,則正確的輸入語句是()。A.A.scanf("%1f",a);
B.scanf("%f",&a);
C.scanf("%1f",&a);
D.scanf("1e",&a);
73.
74.
75.設有以下定義uniondata{intd1;floatd2;)demo;則下面敘述中錯誤的是()。A.變量demo與成員d2所占的內(nèi)存字節(jié)數(shù)相同
B.變量demo中各成員的地址相同
C.變量demo和各成員的地址相同
D.若給demo.d1賦99后,demo.d2中的值是99.0
76.設有數(shù)組定義:chararray[]="Chinese";則數(shù)組array所占的空間為
A.6個字節(jié)B.7個字節(jié)C.8個字節(jié)D.9個字節(jié)
77.
78.有以下程序程序執(zhí)行后的輸出結(jié)果是()。
A.y=-IB.y=oC.y=lD.while構(gòu)成無限循環(huán).
79.若有以下程序
#include<stdio.h>
main()
{inti;
inta[]={1,3,5,7,9}
int*p=a;
for(i=0;i<4;i++)
a[i]=*p;
printf("%d,%d\n",a[2],a[4]);
}
上面程序的輸出結(jié)果是
A.3,9B.5,9
C.1,9D.1,1
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:通過某種方式實現(xiàn)兩個變量值的交換,規(guī)定不允許增加語句和表達式。例如變量num1中的值原為2,num2中的值原為1,程序運行后,num1中的值為l,num2中的值為2。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設計題(1題)82.請編寫函數(shù)proc(),其功能是:將所有大于1小于整數(shù)m的非素數(shù)存入XX所指數(shù)組中,非素數(shù)的個數(shù)通過k傳回。例如,輸入20,則應輸出4689101214151618。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.B
2.AB)選項中打開一個已存在的文件并進行了寫操作后,原有文件中的全部數(shù)據(jù)不一定被覆蓋,也可以對源文件進行追加操作等。C)選項中在一個程序中當對文件進行了寫操作后,不用先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù),可以用fseek()函數(shù)進行重新定位即可。D)選項中,C語言中的文件可以進行隨機讀寫。
3.D
4.B由題可知,fun(&a[3])是將&a[3]作為參數(shù),而fun(int*p)后執(zhí)行的語句為p[5],由數(shù)組a可知輸出的為6。
5.C解析:表達式“x+=-z---y”等價于“x=x+(-z-(-(-y)))=0+(1-(-1))=2”。
6.A解析:從軟件開發(fā)的工程化觀點來看,在使用程序設計語言編制程序以前,需要對所采用算法的邏輯關(guān)系進行分析,設計出全部必要的過程細節(jié),并給予清晰的表達。詳細設計的任務就是要決定各個模塊的實現(xiàn)算法,并精確表達出這些算法。本題正確答案為選項A。
7.C
8.D解析:結(jié)構(gòu)化分析方法,數(shù)據(jù)流圖,數(shù)據(jù)字典,軟件需求規(guī)格說明書
評析,需求分析是軟件定義時期的最后一個階段,它的基本任務就是詳細調(diào)查現(xiàn)實世界要處理的對象(組織,部門、企業(yè)等),充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在此基礎上確定新系統(tǒng)的功能.選項A)軟件開發(fā)方法是在總體設計階段完成的任務;選項B)軟件開發(fā)工具是在實現(xiàn)階段需完成的任務:選項C)軟件開發(fā)費用是在可行性研究階段需完成的任務。
9.A依據(jù)fun函數(shù),可知其要實現(xiàn)的功能是將S中第(t+1)個元素以前的元素逆置賦給數(shù)組P。由于fun中函數(shù)定義了靜態(tài)變量t=3,因此,main函數(shù)中調(diào)用函數(shù)fun(a,&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)x,最后輸出x數(shù)組。
10.D
11.D
12.B本題考核的知識點是puts()函數(shù)的應用。主函數(shù)中定義了一個字符數(shù)組s并賦初值,一個字符串指針變量ps并讓它指向s。程序中p+4的地址為數(shù)組第5個元素的地址,而調(diào)用put(str_adr)函數(shù)時,將從str_adr這一地址開始,依次輸出存儲單元中的字符,遇到第一個“\\0”時結(jié)束輸出,并自動輸出一個換行符。所以put(p++4)將輸出n/No,put(s)將從s第一個元素開始輸出到第3個元素結(jié)束(因為執(zhí)行*(p4)c0語句后s中的第5個元素的值為0,而s中的第4個元素為“\\”,puts將遇到“\\0”,結(jié)束輸出),即輸出yes。所以,4個選項中選項B符合題意。
13.D本題考查數(shù)組元素的地址的引用。A中,p+5引用的是a[5]的地址,而數(shù)組a只有5個元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用錯誤(注:數(shù)組元素下標從0開始);B中,*a+1指的是將數(shù)組a的第一個元素加1;選項C中,不存在這種引用方式;D中,&a[0]引用的是數(shù)組的首地址。
14.A考查用指針來引用字符數(shù)組元素的方法。指針pl+k相當于指針pl向后移動了k個字符的位置,指針p2同理。
15.Ct=++x或++y,當++x不為0的時候,即++x為真,則不需要再繼續(xù)判斷++y,那么y就不再執(zhí)行自加,因此y=3.
16.C
17.B
\n本題中要求輸出右上半角的數(shù),對角線上的數(shù)的下標相同,所以j=i。
\n
18.DD?!窘馕觥棵嫦?qū)ο笤O計方法與面向過程設計方法有本質(zhì)的不同,其基本原理是:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。其特點包括:分類性、多態(tài)性、封裝性、模塊獨立性、繼承和多態(tài)性等。模塊化是結(jié)構(gòu)化程序設計的特點。
19.A
20.B題中當a的值為l時,關(guān)系表達式a==l的值為真,即1,因此程序?qū)⑻D(zhuǎn)到easel執(zhí)行a++操作,與題干程序剛好相反。
21.a=2b=1a=2,b=1解析:本題考查了switch結(jié)構(gòu)的內(nèi)容。C語言中,程序執(zhí)行完一個case標號的內(nèi)容后,如果沒有break語句,控制結(jié)構(gòu)會轉(zhuǎn)移到下一個case繼續(xù)執(zhí)行,因為case常量表達式只是起語句標號作用,并不是在該處進行條件判斷。本題程序在執(zhí)行完內(nèi)部switch結(jié)構(gòu)后,繼續(xù)執(zhí)行了外部switch結(jié)構(gòu)的case2:分支,最后a和b的值分別為2和1。
22.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本題考查基本邏輯表達,“整數(shù)x的絕對值大于5”時值為“假”,即整數(shù)x的絕對值小于等于5,也就是整數(shù)x要大于等于-5且要小于等于5。這里“且”用“與(&&)”表示,所以C語言表達式為:(x>-5)&&(x<5)。
23.100100解析:本題考查帶參數(shù)的宏定義及相關(guān)運算。運算過程為:k=B*20=(A+3)*20=(2+3)*20=100。
24.aa解析:'z'的ASCII碼值為122,經(jīng)過c-25運算后,得97,以字符形式輸出是a。
25.上溢上溢解析:入隊運算是指在循環(huán)隊列的隊尾加入一個新元素。這個運算有兩個基本操作:首先將隊尾指針進一(即rear=rear+1),并當rear=m+1時置rear=1;然后將新元素插入隊尾指針指向的位置。當循環(huán)隊列非空(s=1)時且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進行入隊運算,這種情況稱為“上溢”。
26.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DBMS)
27.852852解析:循環(huán)前,變量y的值為9,其中,循環(huán)語句在y大于0情況下循環(huán),每次循環(huán)后y的值都減1。循環(huán)體是當y能被3整除時輸出表達式--y,輸出的是減1后的y值。這樣,第一次循環(huán)因y為9,能被3整除,輸出8,y也變成8。又經(jīng)兩次循環(huán),y的值變?yōu)?,又讓y減1變成5,并輸出5;又經(jīng)兩次循環(huán),y的值變成3,讓y減1變成2,輸出2;再經(jīng)兩次循環(huán)后,y的值變成0,結(jié)束循環(huán),所以程序輸出852。
28.findbigfindbig解析:f是指向函數(shù)的指針變量,根據(jù)題意要求,空格處應填入findbig。
本題目考查:C語言中指向函數(shù)的指針變量定義的一般形式為;
數(shù)據(jù)類型標識符(*指針變量名)();
“數(shù)據(jù)類型標識符”表示函數(shù)返回值的類型。
函數(shù)的調(diào)用可以通過函數(shù)名調(diào)用,也可以通過函數(shù)指針調(diào)用。在給函數(shù)指針變量賦值時,只需給出函數(shù)名而不必給出參數(shù)。(*p)()表示定義一個指向函數(shù)的指針變量,專門用來存放函數(shù)的入口地址,可以先后指向不同的指針變量。用函數(shù)指針調(diào)用函數(shù)時,只需要將(*p)代替函數(shù)名即可,在(*p)之后的括號中,根據(jù)需要寫上參數(shù)。
29.s[i]>='0'&&s[i]<='9'或isdigit(s[i])s[i]>='0'&&s[i]<='9'或isdigit(s[i])解析:根據(jù)題意和程序可知要填空的內(nèi)容是:將字符申s中的數(shù)字字符放入d數(shù)組的條件。
30.1
31.'\0''\\0'解析:本題涉及字符數(shù)組和指針的兩個知識點:①在c語言中,字符型數(shù)組在存放字符串時會自動在末尾加上字符串結(jié)束標識符'\\0',所以題中數(shù)組str有6個元素。②ptr指向數(shù)組s仕的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。
32.數(shù)據(jù)和操作數(shù)據(jù)和操作
33.bar[i]bar[i]解析:fun函數(shù)中的內(nèi)層for循環(huán),求出了每一行中的最大值x,內(nèi)循環(huán)結(jié)束后就需要把最大值放在存儲每行最大值的數(shù)組bar[i]中,因此應填bar[i]。
34.350350解析:在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。在根據(jù)完全二叉樹的定義,在一棵完全二叉樹中,最多有1個度為1的結(jié)點。因此,設一棵完全二叉樹具有n個結(jié)點,若n為偶數(shù),則在該二叉樹中有n/2個葉子結(jié)點以及n/2-1個度為2的結(jié)點,還有1個是度為1的結(jié)點:若n為奇數(shù),則在該二叉樹中有[n/2]+1個葉子結(jié)點以及[n/2]個度為2的結(jié)點,沒有度為1的結(jié)點。本題中,完全二叉樹共有700個結(jié)點,700是偶數(shù),所以,在該二叉樹中有350個葉子結(jié)點以及349個度為2的結(jié)點,還有1個是度為1的結(jié)點。所以,本題的正確答案為350。
35.1616解析:首先將程序中宏替換掉,先把“MCRA(i)”替換成“2*i”,然后把“MCRA(j,2*i)”替換成“2*2*j+2*i”,經(jīng)計算該表達式的值為16,所以最后輸出為16。
36.00解析:在函數(shù)fun()中,while((*n)-)是先引用*n的值,再做(*n)--運算,所以循環(huán)結(jié)束時*n的值為0,再做(*n)--運算后,*n的值為-1;執(zhí)行++(*n)后,*n的值是0。
37.void(*p)();void(*p)();解析:要定義p為指向函數(shù)的指針變量,需寫成void(*p)();,注意*p兩側(cè)的括弧不可以省略,表示P先與*結(jié)合,是指針變量,再與后面的()結(jié)合,表示此指針變量指向函數(shù),這個函數(shù)無返回值(同fun()函數(shù))。
38.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函數(shù)只有一個參數(shù),該參數(shù)指定了需要分配多少字節(jié)的內(nèi)存。然后將分配好的內(nèi)存塊的首地址作為void*(未知類型指針)返回.故標準的調(diào)用形式應該寫成:
p(double*)malloc(sizeof(double));
39.structnode*structnode*解析:本題中的結(jié)構(gòu)類型名為structnode,所以空白處應填:structnode*。即定義一個指向自身的結(jié)構(gòu)體指針。
40.buf的首地址buf的首地址解析:考查fsets()函數(shù)的功能,f8ets()函數(shù)用來從文件中讀入字符串。調(diào)用格式為:f8ets(buf,n,fp)。此處,fp是文件指針,buf是存放字符串的起始地址,n是一個int型變量。調(diào)用函數(shù)fsets()時,最多能讀入n-1個字符,系統(tǒng)自動在最后加字符串結(jié)束標志,并以buf作為函數(shù)值返回。
41.C耦合是對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量,耦合度越高,則模塊的獨立性越差。內(nèi)聚反映一個模塊內(nèi)各個元素彼此結(jié)合的緊密程度。高內(nèi)聚是指一個軟件模塊是由相關(guān)性很強的代碼組成,只負責一項任務,也就是常說的單一責任原則。低耦合是指不同軟件模塊之間通過穩(wěn)定的接口交互,而不需要關(guān)心模塊內(nèi)部的實現(xiàn)。
42.A解析:自增運算符“++”,放在變量之前表示在使用變量之前,先使變量的值加1;放在變量之后表示在使用變量之后,再使變量的值加1。第一條輸出語句,先輸出m=12,m再自加1,變成13,n先自加1再輸出,輸出n=35;第二條輸出語句,先輸出n=35,n再自加1,變成36,m先自加1再輸出,輸出m=14。
43.C解析:只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句。當break出現(xiàn)在循環(huán)體的switch語句體內(nèi)時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想強行中止循環(huán)體的執(zhí)行,可以在循環(huán)體中,但并不在switch語句中設置break語句,滿足某種條件,則跳出本層循環(huán)體。
44.A解析:對象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實體有直接的對應關(guān)系,對象之間通過傳遞消息互相聯(lián)系,從模擬現(xiàn)實世界中不同事物彼此之間的聯(lián)系,B)、C)、D)是正確的,對象的思想廣泛應用于C++、Java等語言中,因此A)錯誤。
45.A解析:本題利用多重for循環(huán)的嵌套來實現(xiàn)對二維數(shù)組元素的按列排序。利用最外層循環(huán)來實現(xiàn)對列的控制。內(nèi)部循環(huán)利用選擇法對數(shù)組元素按照從小到大的順序進行排列,最后輸出對角線上的元素值。
46.B解析:scanf函數(shù)的第一個參數(shù)是格式控制字符串,該字符串中所出現(xiàn)的格式控制符必須與scanf函數(shù)的笫二個及其后面的參數(shù)一一對應.本題中四個選項的格式控制字符串都是'%d%s',其中包括兩個格式控制符%d和%s,它們分別表示輸入一個十進制整數(shù)和輸入一個字符串,其對應的參數(shù)應該分別為一個整型變量的地址和一個字符型數(shù)組的首地址。變量的地址可以通過對變量做取地址(&)運算來得到,而宇符型數(shù)組的首地址則可以直接通過數(shù)組名來得到。所以,4個選項中選項B符合題意。
47.D解析:希爾排序的基本思想是把記錄按照下標的一定增量進行分組,對每組記錄使用插入排序,隨著增量逐漸減小,所分成的組包含的記錄越來越多,到增量的值減小到1時,整個數(shù)據(jù)合成一組,構(gòu)成一組有序記錄,故其屬于插入排序方法。
48.B解析:a=b=c+2實際上相當于a=(b=c+2),進而可分解為兩個表達式:b=c+2和a=b。注意:選項A)中包含一個不合法的運算符“:=”;選項C)應改為(int)18.5%3;選項D)可理解為兩個表達式:a+7=c+b和a=a+7,其中第一個是錯的,因為C++語言規(guī)定賦值號的左邊只能是單個變量,不能是表達式或常量等。注意:C++語言賦值語句的運用,
49.D解析:本題考查數(shù)據(jù)結(jié)構(gòu)中隊列的基本知識。隊列是一種限定性的線性表,它只允許在表的一端插入元素,而在另一端刪除元素,所以隊列具有先進先出的特性。在隊列中,允許插入元素的一端叫做隊尾,允許刪除的一端則稱為隊頭。這與日常生活中的排隊是一致的,最早進入隊列的人最早離開,新來的人總是加入到隊尾。因此,本題中只有選項D的說法是正確的。
50.D解析:本題考查C語言的基本基礎知識。在C程序中,注釋用符號“/*”開始,而以符號“*/”結(jié)束。程序的注釋可以放在程序的任何位置。通常將注釋放在程序的開始,以說明本程序的功能;或者放在程序的某個語句后面,以對此語句的功能進行描述。無論將注釋放有何處,在程序進行編譯時,編譯程序不會處理注釋的內(nèi)容;且注釋內(nèi)容也不會出現(xiàn)在目標程序中。
51.B解析:C語言一種高級語言,C語言源程序經(jīng)過C語言編譯程序編譯之后,生成一個后綴為.obj的二進制文件(稱為目標文件),最后還要由稱為“連接程序”(Link)的軟件,把此.obj文件與C語言提供的各種庫函數(shù)連接在一起,生成一個后綴.exe的可執(zhí)行文件。顯然C語言不能立即執(zhí)行,故選項A錯誤;根據(jù)以上定義,選項C和選項D錯誤,所以,4個選項中選項B符合題意。
52.C解析:本題考查的重點是printf()函數(shù)和for循環(huán)的執(zhí)行方式。在循環(huán)體內(nèi),若y為的倍數(shù),則執(zhí)行print(“%d”,--y)語句。所以,當y為9時,輸出--y為8;當y為6時,輸出--y為5;當y為3時,輸出--y為2;當y為零時,for循環(huán)結(jié)束。因此,選項C是正確的。
53.C解析:C語言中字符常量是以單引號括起來的單個字符,或為以“\\”與三位八進制數(shù)值或兩位十六進制數(shù)值代替單個字符。
54.C解析:算法是指為解決某個特定問題而采取的確定且有限的步驟。一個算法應當具有以下五個特性:有窮性;確定性;可行性;有零個或多個輸入;有一個或多個輸出。所以,4個選項中選項C符合題意。
55.B解析:二維字符數(shù)組可以看成由若干個一維字符數(shù)組組成,每行是一個一維字符數(shù)組。本題首先定義了一個數(shù)組ch[3][5],并給它們按行賦初值,即相當于給eh[0]賦值“AAAA”,給ch[1]賦值“BBB”,給eh[2]賦值“BBB”,最后輸出轉(zhuǎn)義字符“?!?、ch[1]和轉(zhuǎn)義字符“\\”,因此輸出為“BBB”。所以,4個選項中B為所選。
56.A解析:關(guān)系的并運算是指,由結(jié)構(gòu)相同的兩個關(guān)系合并,形成一個新的關(guān)系,其中包含兩個關(guān)系中的所有元組。
57.D解析:C語言的宏定義包括不帶參數(shù)的宏定義與帶參數(shù)的宏定義。本題為帶參數(shù)的宏定義,其形式為:
#define宏名(形參表)字符串
本題的M(a+b,b+c,c+a)被字符串a(chǎn)+b*b+c+c+a代替。
58.D解析:快速排序的基本思想是,通過一趟排序?qū)⑴判蛴涗浄指畛瑟毩⒌膬刹?/p>
分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,再分別對這兩部分記錄繼
續(xù)進行排序,以達到整個序列有序;插入排序的基本操作是指將無序序列中的各元素依
次插入到已經(jīng)有序的線性表中,從而得到一個新的序列;選擇排序的基本思想是:掃描整
個線性表,從中選出最小的元素,將它交換到表的最前面(這是它應有的位置),然后對剩
下的于表采用同樣的方法,直到表空為止;歸并:排序是將兩個或兩個以上的有序表組合
成一個新的有序表。
注意:各種排序方法實現(xiàn)過程及實現(xiàn)機制。
59.B解析:棧是限定在一端進行插入與刪除運算的線性表。在棧中,允許插入與刪除的一端稱為棧頂,不允許插入與刪除的另一端稱為棧底,對棧的插入和刪除操作中,不需要改變棧底指針。棧是按照“先進后出”或“后進先出”的原則組織數(shù)據(jù)的。棧具有記憶作用。棧的存儲方式和線性表類似,也有兩種,即順序棧和鏈式棧。
60.A解析:本題主要考查定義結(jié)構(gòu)體的幾個特點:①結(jié)構(gòu)的定義明確了結(jié)構(gòu)的組成形式,定義了一種C語言中沒有而用戶需要的新的數(shù)據(jù)類型。與其他的數(shù)據(jù)類型不同,在程序編譯的時候結(jié)構(gòu)的定義并不會使系統(tǒng)為該結(jié)構(gòu)分配內(nèi)存空間,只有在說明結(jié)構(gòu)變量時才分配內(nèi)存空間;②結(jié)構(gòu)體的成員名可以與程序中的變量名相同;⑧結(jié)構(gòu)體中的成員可以單獨使用,它的作用相當于普通變量;④結(jié)構(gòu)體可以嵌套定義。
61.D
62.B頭文件;C語言中要用庫函數(shù),則需在前面添加頭文件。輸入輸出函數(shù)的頭文件為”stdio.h”
63.B\r\n
64.C任何一個C語言程序的執(zhí)行都是從主函數(shù)main開始,至主函數(shù)main結(jié)束。故本題答案為C選項。
65.B
66.C
\n本題考查do-while循環(huán)。先執(zhí)行do的內(nèi)容,也就是printf語句,x=x-4=1,輸出1,判斷while循環(huán)的控制條件,--x=0,則!(--x)為非零,循環(huán)條件成立,執(zhí)行下一次循環(huán);x=x-4=-4,輸出-4,判斷while循環(huán)的條件,--X=-5,則!(--x)為零,循環(huán)條件不成立,結(jié)束循環(huán)。
67.A解析:VisualFoxPro就是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),一個“表”就是一個關(guān)系,一個關(guān)系就是一個二維表。關(guān)系數(shù)據(jù)庫管理系統(tǒng)可管理若干個二維表。
68.D
69.A解析:耦合性是模塊間互相連接的緊密程度的度量,取決于各個模塊之間接口的復雜度、調(diào)用方式以及哪些信息通過接口。
[知識拓展]模塊的獨立程序是評價設計好壞的一個重要標準,衡量軟件的模塊獨立性有兩個定性的度量標準。其中內(nèi)聚性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度的度最,內(nèi)聚性是從功能角度來度量模塊內(nèi)的聯(lián)系;耦合性是模塊間互相連接的緊密程度的度量,耦合性從整體的角度來度量模塊間的聯(lián)系。
70.A解析:函數(shù)fun()的參數(shù)為指針類型,返回值為字符型,而選項B、C的參數(shù)不是指針類型,所以不正確,選項D中,*fl(s)表示返回值為指針的函數(shù),所以也不正確。
71.C
72.C本題考查scanf函數(shù)的調(diào)用形式:scanf(格式字符串,輸入項地址表)?!案袷阶址笔且斎氲淖兞康母袷椒弧拜斎腠椀刂繁怼笔且斎氲淖兞康牡刂?。
73.B
74.C
75.D共用體變量中的所有成員共享一段公共存儲區(qū),所有成員的首地址相同。在每一個時刻所有的成員中只有一個有效,即只有最后一個被賦值的成員有效,其余的成員無效。
76.C本題主要考查字符數(shù)組的初始化操作。字符數(shù)組的初始化可以逐個元素賦值,也可以作為字符串賦值。
逐個元素賦值初始化形式:
char數(shù)組名[n]={字符1,字符2,……,字符n};
char數(shù)組名[]={字符1,字符2,……,字符n};
作為字符串賦值形式:
char數(shù)組名[n]='字符串';
char數(shù)組名[]='字符串';
在C語言中,為了方便確定字符串的長度,編譯系統(tǒng)在字符串后增加了一個結(jié)束標識’\\0’,即ASCII碼的0。因此,當采用字符串初始化字符數(shù)組時,必須為其保留一個存放結(jié)束標識符的位置。
在本題中,用一個字符串作為數(shù)組的初值,這種方法直觀、方便,而且符合人們的習慣。數(shù)組array的長度是7,但所占的空間是8,這點必須要注意。因為字符串常量的最后由系統(tǒng)加上一個’\0’,因此,上面的初始化是chararray[]={′C′,′h′,′i′,′n′,′e′,′s′,′e′,′\0′}。
77.B
78.A當y為。時,表達式y(tǒng)一才為假,循環(huán)結(jié)束,最終y的值為一l,所以答案選擇A)。
79.C本題中,程序開始定義了一個數(shù)組a,并對這個數(shù)組進行賦初值。然后定義一個整型變量i和一個整型指針變量p,并使指針變量p指向數(shù)組a的首地址。然后執(zhí)行for循環(huán),循環(huán)變量i的初值為0,循環(huán)結(jié)束條件為變量i的值大于等于4,循環(huán)變量i的值每循環(huán)一次自加1,通過這些分析我們知道,循環(huán)執(zhí)行了4次結(jié)束。
第一次循環(huán)時,由于*p表示數(shù)組的第一個元素值1,那么執(zhí)行a[i]=*p;語句,即將數(shù)組的第一個元素變?yōu)?;第二次循環(huán)時,由于i為1,即將數(shù)組的第二個元素變?yōu)?,同理,第三次與第四次循環(huán)分別將數(shù)組的第三和第四個元素值變?yōu)?。
循環(huán)結(jié)束,程序執(zhí)行輸出語句,這時數(shù)組中所有元素的值分別為1,1,1,1,9,因此,程序最后的輸出結(jié)果是1,9,答案選C。
80.A
81.(1)錯誤:t=x;x=y;
正確:t=*x;*x=y;
(2)錯誤:return(y);
正確:return(t);
【解析】由函數(shù)proc()可知,變量x為整型指針,而變量t為整型變量.不能直接賦值。因此,“t=x;x=y;”應改為“t=*x;*x=y;”。題目要求實現(xiàn)兩個數(shù)的交換,因此函數(shù)proc()應返回變量X的值,變量x的值存放在變量t中。因此,“return(y);”應改為“return(t);”。
82.
【解析】題目中要求將所有大于l小于整數(shù)m的非素數(shù)存入xx所指數(shù)組中,因此需要判斷所有大干1小于m的整數(shù)是否為素數(shù)。將所有大干1小于m的非素數(shù)放入數(shù)組xx中,并將非素數(shù)的個數(shù)通過形參k傳遞回主函數(shù)中。
2021年河南省三門峽市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.衡量顯示器的主要技術(shù)指標是()
A.波特率B.分辨率C.主頻D.顯示速度
2.以下敘述中正確的是()A.當對文件的讀(寫操作完成之后,必須將它關(guān)閉,否則可能導致數(shù)據(jù)丟失
B.打開一個已存在的文件并進行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋
C.在一個程序中當對文件進行了寫操作后,必須先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù)
D.語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)
3.以下程序的輸出結(jié)果是().A.A.2222B.2468C.222D.246
4.有以下程序:#includc<stdio.h>voidfun(int*p){printf("%d\n",p[5]);}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};fun(&a[3]);}程序運行后的輸出結(jié)果是()。A.5B.6C.8D.9
5.下面程序運行的結(jié)果是______。main(){intx,y,z;x=0;y=z=-1;x+=-z---y;printf("x=%d\n",x);}
A.x=4B.x=0C.x=2D.x=3
6.軟件詳細設計的主要任務是確定每個模塊的()。
A.算法和使用的數(shù)據(jù)結(jié)構(gòu)B.外部接口C.功能D.編程
7.對一個有A,B,C,D隨機組成的序列進行哈夫曼編碼,據(jù)統(tǒng)計,各個元素的概率分別為:P(A)=0.4,P(B)=0.35,P(C)=0.2,P(D)=0.05,請問該編碼的平均期望編碼長度為()bits。
A.1.45B.1.74C.1.85D.1.92
8.需求分析階段的任務是確定()
A.軟件開發(fā)方法B.軟件開發(fā)工具C.軟件開發(fā)費用D.軟件系統(tǒng)功能
9.下列程序的運行結(jié)果是()。#include<stdio.h>voidfun(int*S,int*p){staticintt=3:*p=s[t];t--;}voidmain{inta[]={2,3,4,5),k;intx;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}}A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5
10.程序運行中需要從鍵盤上輸入多于一個數(shù)據(jù)時,各數(shù)據(jù)之間應使用()符號作為分隔符。
A.空格或逗號B.逗號或回車C.逗號或分號D.空格或回車
11.
12.有以下程序main(){chars[]="Yes\n/No",*ps=s;puts(ps+4);*(ps+4)=0;puts(s);}程序運行后的輸出結(jié)果是(選項D中的第一行是空行)A.n/NoYes/NoB./NoYesYesC.n/No/NoD.Yes/No
13.若有下列定義,則對a數(shù)組元素地址的正確引用是()。inta[5],*p=a;
A.p+5B.*a+1C.&a+1D.&a[0]
14.下面程序的運行結(jié)果是()。
A.gaeB.gaC.LanguageD.有語法錯
15.設x,y,t均為int型變量,執(zhí)行語句:
x=y=3;
t=++x||++y;
完成后,y的值為A.A.不確定B.4C.3D.1
16.高度為h的滿二叉樹的結(jié)點數(shù)是________個。
A.log2h+1B.2h+1C.2h-1D.2h-1
17.
有以下程序:
main
{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,
12,},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{for(j=0;j<i;j++)printf("%4c",);
for(j=________;J<4;j++)printf("%4d",num
[i][j]);
printf("\n");}}
若要按以下形式輸出數(shù)組右上半三角
1234
678
1112
16
則在程序下劃線處應填入的是()。
A.i-1B.iC.i+1D.4一i
18.下列特征中不是面向?qū)ο蠓椒ǖ闹饕卣鞯氖?)。
A.多態(tài)性B.繼承C.封裝性D.模塊化
19.和順序棧相比,鏈棧有一個比較明顯的優(yōu)勢是()。
A.通常不會出現(xiàn)棧滿的情況B.通常不會出現(xiàn)??盏那闆rC.插入操作更容易實現(xiàn)D.刪除操作更容易實現(xiàn)
20.以下選項中與“if(a==l)a=b;elsea++;”語句功能不同的switch語句是()。
A.switch(a){casel:a=b;break;default:a++;}
B.switch(a==l){case0:a=b;break;casel:a++;}
C.switch(a){default:a++;break;casel:a=b;}
D.switch(a==l){casel:a=b;break;case0:a++;}
二、2.填空題(20題)21.以下程序的運行結(jié)果是【】。
#include<stdio.h>
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b++;break;
case3:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
22.表示“整數(shù)x的絕對值大于5”時值為“假”的C語言表達式是______。
23.設有下列宏定義:
#defineA2
#defineB(A+3)
則執(zhí)行賦值語句“k=B*20;”(k為int型變量)后,k的值是______。
24.以下程序的輸出結(jié)果是【】。
main()
{charc=′z′;
printf("%c",c-25);}
25.當循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進行入隊運算。這種情況稱為【】。
26.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。
27.以下程序的輸出結(jié)果是【】。
main()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}}
28.設函數(shù)findbig已定義為求3個數(shù)中的最大值,以下程序?qū)⒗煤瘮?shù)指針調(diào)用findbig函數(shù)。請?zhí)羁铡?/p>
main()
{intfindbig(int,int,int);
int(*f)(),x,y,z,big;
f=【】。
scanf("%d%d%d",&x,&y,&z);
big=(*f)(x,y,z);
printf("big=%d\n",big);
}
29.以下程序的功能是將字符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。
例如,輸入字符串:abc123edf456gh,執(zhí)行程序后輸出:123456。請?zhí)羁铡?/p>
#include<stdio.h>
#include<ctype.h>
main()
{chars[80],d[80];inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(【】){d[j]=s[i];j++;}
d[j]='\0';
puts(d);
}
30.若有如下程序:
main()
{intx=4,y=3,x=2,t;
t=x<y<z;
printf("%d\n",t);}
則程序運行后的輸出結(jié)果是【】。
31.設有下列的程序段:
charstr[]="Hello";
char*ptr;
ptr=-str;
執(zhí)行上面的程序段后,*(ptr+5)的值為______。
32.派生類對基類繼承控制訪問有三種。派生類可以定義其基類中不具備的【】。
33.以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值,請?zhí)羁铡?/p>
voidfun(int,int,int(*)[4],int*);
main()
{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(1=0;i<3;i++)printf("%4d",b[i]);
printf("\n");
}
voidfun(intm,intn,intar[][4],int*bar)
{inti,j,x;
for(i=0;i<m;i++)
{x=ar[i][0];
for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];
【】=x;
}
}
34.設一棵完全二叉樹共有700個結(jié)點,則在該二叉樹中有【】個葉子結(jié)點。
35.以下程序的輸出結(jié)果是______。
#defineMCRA(m)2*m
#defineMCRB(n,m)2*MCRA(n)+m
main()
{inti-2,j=3;
printf("%d\n",MCRB(j,MCRA(i)));
}
36.下列程序的輸出結(jié)果是【】。
voidfun(int*n)
{
while((*n)--);
printf("%d",++(*n));
}
main()
{inta=100;
fun(&a);
}
37.以下程序通過函數(shù)指針p調(diào)用函數(shù)fun,請在填空欄內(nèi)寫出定義變量p的語句。
voidfun(int*x,int*y)
{……}
main()
{inta=10,b=20;
【】:
p=fun;p(&a,&b);
……
}
38.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型的動態(tài)存儲單元______。
39.以下定義的結(jié)構(gòu)體類型擬包含兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義補充完整。
structnode
{intinfo;
【】link;};
40.函數(shù)調(diào)用語句:“fgets(buf,n,fp);”從中指向的文件中讀入n個字符放到buf字符數(shù)組中,函數(shù)返回值為______。
三、1.選擇題(20題)41.軟件設計中,有利于提高模塊獨立性的一個準則是______。A.低內(nèi)聚低耦合B.低內(nèi)聚高耦合C.高內(nèi)聚低耦合D.高內(nèi)聚高耦合
42.有以下程序:main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序運行后的輸出結(jié)果是______。
A.12353514B.12353513C.12343514D.12343513
43.下列敘述中正確的是()。
A.break語句只能用于switch語句體中
B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)
C.break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)
D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同
44.下面關(guān)于對象概念的描述中,錯誤的是
A.對象就是C語言中的結(jié)構(gòu)體變量
B.對象代表著正在創(chuàng)建的系統(tǒng)中的一個實體
C.對象是一個狀態(tài)和操作(或方法)的封裝體
D.對象之間的信息傳遞是通過消息進行的
45.有以下程序
main()
{inta[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=j+1;k<4;k++)
if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/
for(i=0;i<4;i++)printf("%d,",a[i][i]);
}
程序運行后的輸出結(jié)果是
A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,
46.有定義語句:intb;charc[10];,則正確的輸入語句是
A.scanf("%d%s",&b,&c);
B.scanf("%d%s",&b,c);
C.scanf("%d%s",b,c);
D.scanf("%d%s",b,&c);
47.希爾排序?qū)儆?)。A.A.交換排序B.歸并排序C.選擇排序D.插入排序
48.若變量已正確定義并賦值,以下符合C++語言語法的表達式是()。
A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b
49.下列對隊列的敘述正確的是A.隊列屬于非線性表B.隊列按“先進后出”原則組織數(shù)據(jù)C.隊列在隊尾刪除數(shù)據(jù)D.隊列按“先進先出”原則組織數(shù)據(jù)
50.以下敘述不正確的是
A.一個C源程序可由一個或多個函數(shù)組成
B.一個C源程序必須包含一個main函數(shù)
C.C程序的基本組成單位是函數(shù)
D.在C程序中,注釋說明只能位于一條語句的后面
51.用C言編寫的代碼程序()。
A.可立即執(zhí)行B.是個源程序C.經(jīng)過編譯即可執(zhí)行D.經(jīng)過編譯解釋即可執(zhí)行
52.有以下程序:#include<stdio.h>main(){inty=9;for(;y>0;y--)f(y%3==0)printf("%d",--y);}程序的運行結(jié)果是()。
A.741B.963C.852D.875421
53.以下選項中,非法的字符常量是______。
A.'\t'B.'\17'C.\nD.'\xaa'
54.以下敘述中正確的是
A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作
B.用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要有輸入
C.用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出
D.用C程序?qū)崿F(xiàn)的算法可以既沒有輸入出沒有輸出
55.以下程序的輸出結(jié)果是()。mam(){charcf[3][5]={"AAAA","BBB","CC");printf("\"%s\"n",cf[1]);}
A.AAAAB.BBBC.BBBCCD.CC
56.對關(guān)系S和只進行集合運算,結(jié)果中既包含S中的所有元組也包含只中的所有元組,這樣的集合運算稱為()。
A.并運算B.交運算C.差運算D.積運算
57.以下程序的輸出結(jié)果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}
A.19B.17C.15D.12
58.在下列幾種排序方法中,要求內(nèi)存量最大的是______。
A.插入排序B.選擇排序C.快速排序D.歸并排序
59.下列關(guān)于棧的描述中錯誤的是______。
A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入和刪除操作中,不需要改變棧底指針
60.下列說法錯誤的是()。
A.下列結(jié)構(gòu)體定義時,占據(jù)了5個字節(jié)的空間structstudent{intnum;intage;charsex;}
B.結(jié)構(gòu)體的成員名可以與程序中的變量名相同
C.對結(jié)構(gòu)體中的成員可以單獨使用,它的作用相當于普通變量
D.結(jié)構(gòu)體可以嵌套定義
四、選擇題(20題)61.
62.如果在C程序中要用到庫函數(shù)中的字符串比較函數(shù)strcmp(),那么在程序前面應該添加的頭文件是()。
A.stdio.hB.string,hC.a(chǎn)lloc.hD.math.H
63.
64.對于一個正常運行的C程序,以下敘述中正確的是()。
A.程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束
B.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束.
C.程序的執(zhí)行總是從main函數(shù)開始、
D.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束
65.
66.
有下列程序:
main
{intx=5;
do
{printf("%d",X-=4);)
while(!(--x));
}
程序的輸出結(jié)果是()。
A.1B.20C.1-4D.死循環(huán)
67.關(guān)系數(shù)據(jù)庫管理系統(tǒng)所管理的關(guān)系是()。A.若干個二維表B.一個DBF文件C.一個DBC文件D.若干個DBC文件
68.
69.兩個或兩個以上模塊之間聯(lián)系的緊密程度稱為()。
A.耦合性B.內(nèi)聚性C.復雜性D.數(shù)據(jù)傳輸特性
70.程序中若有如下說明和定義語句
charfun(char*);
main()
{
char*s="one",a[5]={0},(*f1)()=fun,ch;
……
}
以下選項中對函數(shù)fun的正確調(diào)用語句是
A.(*f1)(A);B.*f1(*s);C.fun(&A);D.ch=*f1(s);
71.
72.若有“doublea;”,則正確的輸入語句是()。A.A.scanf("%1f",a);
B.scanf("%f",&a);
C.scanf("%1f",&a);
D.scanf("1e",&a);
73.
74.
75.設有以下定義uniondata{intd1;floatd2;)demo;則下面敘述中錯誤的是()。A.變量demo與成員d2所占的內(nèi)存字節(jié)數(shù)相同
B.變量demo中各成員的地址相同
C.變量demo和各成員的地址相同
D.若給demo.d1賦99后,demo.d2中的值是99.0
76.設有數(shù)組定義:chararray[]="Chinese";則數(shù)組array所占的空間為
A.6個字節(jié)B.7個字節(jié)C.8個字節(jié)D.9個字節(jié)
77.
78.有以下程序程序執(zhí)行后的輸出結(jié)果是()。
A.y=-IB.y=oC.y=lD.while構(gòu)成無限循環(huán).
79.若有以下程序
#include<stdio.h>
main()
{inti;
inta[]={1,3,5,7,9}
int*p=a;
for(i=0;i<4;i++)
a[i]=*p;
printf("%d,%d\n",a[2],a[4]);
}
上面程序的輸出結(jié)果是
A.3,9B.5,9
C.1,9D.1,1
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:通過某種方式實現(xiàn)兩個變量值的交換,規(guī)定不允許增加語句和表達式。例如變量num1中的值原為2,num2中的值原為1,程序運行后,num1中的值為l,num2中的值為2。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設計題(1題)82.請編寫函數(shù)proc(),其功能是:將所有大于1小于整數(shù)m的非素數(shù)存入XX所指數(shù)組中,非素數(shù)的個數(shù)通過k傳回。例如,輸入20,則應輸出4689101214151618。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.B
2.AB)選項中打開一個已存在的文件并進行了寫操作后,原有文件中的全部數(shù)據(jù)不一定被覆蓋,也可以對源文件進行追加操作等。C)選項中在一個程序中當對文件進行了寫操作后,不用先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù),可以用fseek()函數(shù)進行重新定位即可。D)選項中,C語言中的文件可以進行隨機讀寫。
3.D
4.B由題可知,fun(&a[3])是將&a[3]作為參數(shù),而fun(int*p)后執(zhí)行的語句為p[5],由數(shù)組a可知輸出的為6。
5.C解析:表達式“x+=-z---y”等價于“x=x+(-z-(-(-y)))=0+(1-(-1))=2”。
6.A解析:從軟件開發(fā)的工程化觀點來看,在使用程序設計語言編制程序以前,需要對所采用算法的邏輯關(guān)系進行分析,設計出全部必要的過程細節(jié),并給予清晰的表達。詳細設計的任務就是要決定各個模塊的實現(xiàn)算法,并精確表達出這些算法。本題正確答案為選項A。
7.C
8.D解析:結(jié)構(gòu)化分析方法,數(shù)據(jù)流圖,數(shù)據(jù)字典,軟件需求規(guī)格說明書
評析,需求分析是軟件定義時期的最后一個階段,它的基本任務就是詳細調(diào)查現(xiàn)實世界要處理的對象(組織,部門、企業(yè)等),充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在此基礎上確定新系統(tǒng)的功能.選項A)軟件開發(fā)方法是在總體設計階段完成的任務;選項B)軟件開發(fā)工具是在實現(xiàn)階段需完成的任務:選項C)軟件開發(fā)費用是在可行性研究階段需完成的任務。
9.A依據(jù)fun函數(shù),可知其要實現(xiàn)的功能是將S中第(t+1)個元素以前的元素逆置賦給數(shù)組P。由于fun中函數(shù)定義了靜態(tài)變量t=3,因此,main函數(shù)中調(diào)用函數(shù)fun(a,&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)x,最后輸出x數(shù)組。
10.D
11.D
12.B本題考核的知識點是puts()函數(shù)的應用。主函數(shù)中定義了一個字符數(shù)組s并賦初值,一個字符串指針變量ps并讓它指向s。程序中p+4的地址為數(shù)組第5個元素的地址,而調(diào)用put(str_adr)函數(shù)時,將從str_adr這一地址開始,依次輸出存儲單元中的字符,遇到第一個“\\0”時結(jié)束輸出,并自動輸出一個換行符。所以put(p++4)將輸出n/No,put(s)將從s第一個元素開始輸出到第3個元素結(jié)束(因為執(zhí)行*(p4)c0語句后s中的第5個元素的值為0,而s中的第4個元素為“\\”,puts將遇到“\\0”,結(jié)束輸出),即輸出yes。所以,4個選項中選項B符合題意。
13.D本題考查數(shù)組元素的地址的引用。A中,p+5引用的是a[5]的地
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度城市排水系統(tǒng)改造聯(lián)合經(jīng)營協(xié)議書模板3篇
- 2025年度煤炭洗選技術(shù)服務承包協(xié)議6篇
- 二零二五年度安全生產(chǎn)應急響應預案協(xié)議3篇
- 2025年城市軌道交通建設項目合作協(xié)議書2篇
- 2025年走行操作技術(shù)安全規(guī)程(2篇)
- 社區(qū)辦公活動服務場所建設方案范例(3篇)
- 連接叉課程設計
- 儀器室管理員崗位職責說明范文(2篇)
- 醫(yī)院感染管理十七項核心制度范文(2篇)
- 二零二五年度主題餐廳餐飲服務承包合同范本3篇
- 《威尼斯商人》閱讀檢測試題
- 工業(yè)門維修保養(yǎng)合同范本
- 風電項目核準及開工行政審批流程(備案核準、施工許可)
- 大眾Polo 2016款說明書
- 公共倫理學案例分析及答案
- 四年級上冊數(shù)學人教版《加乘原理》課件
- 學生版mbti職業(yè)性格測試題
- 2023年農(nóng)業(yè)綜合行政執(zhí)法理論考試題庫(含答案)
- GB/T 34766-2017礦物源總腐殖酸含量的測定
- 過敏性紫癜-教學課件
- GB/T 24183-2021金屬材料薄板和薄帶制耳試驗方法
評論
0/150
提交評論