




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2022-2023年湖南省張家界市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列定義中,不正確的有______。
A.#definePI3.141592
B.#defineS345;
C.intmax(x,y);
D.staticcharc;intx,y;{...}
2.以下選項(xiàng)中能用作數(shù)據(jù)常量的是()。
A.115LB.0118C.1.5e1.5D.o115
3.十六進(jìn)制數(shù)BB轉(zhuǎn)換成十進(jìn)制數(shù)是()
A.192B.256C.187D.121
4.
5.
6.同一個(gè)關(guān)系模型的任意兩個(gè)元組值()。
A.可以全相同B.不能全相同C.必須全相同D.以上都不對
7.一棵二叉樹中共有70個(gè)葉子結(jié)點(diǎn)與80個(gè)度為1的結(jié)點(diǎn),則該二叉樹中的總結(jié)點(diǎn)數(shù)為A.219B.221C.229D.231
8.數(shù)據(jù)處理的最小單位是()。
A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項(xiàng)D.數(shù)據(jù)結(jié)構(gòu)
9.從一個(gè)長度為100的順序表中刪除第30個(gè)元素時(shí)需向前移動()個(gè)元素
A.70B.71C.69D.30
10.如下函數(shù)調(diào)用語句func(rec1,rec2+rec3,rec4,rec5);該函數(shù)調(diào)用語句中,含的實(shí)參個(gè)數(shù)是().
A.3B.4C.5D.有語法錯(cuò)誤
11.在C語言中,只有在使用時(shí)才占用內(nèi)存單元的變量,其存儲類型是()。
A.auto和register
B.extern和register
C.auto和static
D.static和register
12.假設(shè)把整數(shù)關(guān)鍵碼K散列到有N個(gè)槽的散列表,以下哪些散列函數(shù)是好的散列函數(shù)()
A.h(K)=KmodN
B.h(K)=1
C.h(K)=K/N
D.h(K)=(K+rand(N))modN,rand(N)返回一個(gè)0到N-1的整數(shù)
13.指針可以用來表示數(shù)組元素,若已知語句:inta[3][7];則下列表示中正確的是()。
A.*(a+1)[5]B.*(*a+3)C.*(*(a+1))D.*(&a[0][0]+2)
14.串是一種特殊的線性表,其特殊性體現(xiàn)在()。
A.可以順序存儲B.數(shù)據(jù)元素是一個(gè)字符C.可以鏈接存儲D.數(shù)據(jù)元素可以是多個(gè)字符
15.
有以下程序:
main
{intx=102,y=012;
printf("%2d,%2d\n",x,y);
}
執(zhí)行后輸出結(jié)果是()。
A.10,01B.02,12C.102,10D.02,10
16.
17.具有20個(gè)結(jié)點(diǎn)的二叉樹,其深度最多為_______。
A.4B.5C.6D.20
18.在一個(gè)單鏈表HL中,若要在指針q所指結(jié)點(diǎn)的后面插入一個(gè)由指針p所指向的結(jié)點(diǎn),則執(zhí)行____。
A.q一>next=p一>next;p一>next=q;
B.q一>next=p一>next;p一>next=q;
C.p一>next=q一>next;q=p;
D.p一>next=q一>next;q一>next=p;
19.
20.若定義了函數(shù)double*function(),則函數(shù)function的返回值為()。
A.實(shí)數(shù)型B.實(shí)數(shù)的地址C.指向函數(shù)的指針D.函數(shù)的地址
二、2.填空題(20題)21.下列程序執(zhí)行后輸出的結(jié)果是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
22.若變量n中的值為24,則prnt函數(shù)共輸出【】行。
voidprnt(intn,intaa[])
{inti;
for(i=1;i<=n;i++)
{printf("%6d",aa[i]);
if!(i%5))printf("\n");
}
printf("\n");
}
23.閱讀下面語句,則程序的執(zhí)行結(jié)果是【】。
#include"stdio.h"
main()
{inta=-1,b=1,k;
if((++a<0)&&!(b--<=0))
printf("%d,%d\",a,b);
elseprintf("%d,%d\n",b,a);}
24.有以下程序:
floatf1(floatn)
{returnn*n;}
floatf2(floatn)
{return2*n;}
main()
{float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;
p1=f1;p2=f2;
y1=p2(p1(2.0));
t=P1;p1=p2;p2=t;
y2=p2(p1(2.0));
printf("%3.0f,%3.0f\n",y1,y2);
}
程序運(yùn)行后的輸出結(jié)果是【】。
25.若有以下程序:
intf(intx,inty)
{
return(y-x)*x;
}
main()
{
inta=3,b=4,c=5,d;
d=f(f(3,4),f(3,5));
printf("%d\n",d);
}
執(zhí)行后輸出的結(jié)果是【】。
26.十進(jìn)制數(shù)111用八位二進(jìn)制數(shù)表示為【】。
27.數(shù)據(jù)庫設(shè)計(jì)分為以下6個(gè)設(shè)計(jì)階段:需求分析階段、______、邏輯設(shè)計(jì)階段、物理設(shè)計(jì)階段、實(shí)施階段、運(yùn)行和維護(hù)階段。
28.問題處理方案的正確而完整的描述稱為______。
29.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用刪函數(shù)返回當(dāng)前文件位置指針的具體位置,從而確定文件長度,請?zhí)羁铡?/p>
FILE*myf;longfl;
myf=【】("test.t","rb");
fseek(myf,(),SEEK_END);fl+ftell(myf);
fclose(myf);
printf("%d\n",fl);
30.以下程序的輸出結(jié)果是【】。
main()
{unsignedshorta=65536;intb;
printf("%d\n",b=A);
}
31.下面程序的功能是【】。
doublesub(doublex,inty)
{intn;doublez;
for(n=1,z=x;n<y;n++)z=z*x;
returnz;}
main()
{doublea=2.0,b=4.0,c;
c=sub(a,b);printf("%f",c);}
32.以下程序的功能是:從鍵盤輸入一字符串,要求將每個(gè)單詞中的第一個(gè)字母改成小寫(如果原來已是小寫字母,則不變),然后輸出轉(zhuǎn)換結(jié)果,補(bǔ)足所缺語句。
main()
{charstr[200];inti=0;
while((______=getchar())!='\n');
str[i-1)='\0';
for(i=0;str[i]!='\0';i++)
if((str[i-1]==''‖i==0)&&str[i]>='A'&&str[i]<='Z')
str[i]+=______;
printf("%s\n",str);
}
33.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊(duì)列屬于[]。
34.在兩種基本測試方法中,【】測試的原則之一是保證所測模塊中每一個(gè)獨(dú)立路徑至少要執(zhí)行一次。
35.在結(jié)構(gòu)化設(shè)計(jì)方法中,數(shù)據(jù)流圖表達(dá)了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個(gè)______實(shí)際上對應(yīng)一個(gè)處理模塊。
36.對于長度為n的順序存儲的線性表,當(dāng)隨機(jī)插入和刪除一個(gè)元素時(shí),需平均移動元素的個(gè)數(shù)為【】。
37.寫出下列程序的輸出結(jié)果______。
main()
{intn=0;
while(n++<=1);
printf("%d,",n);
printf("%d",n++);
}
38.在面向?qū)ο蠓椒ㄖ?,【】描述的是具有相似屬性與操作的一組對象。
39.在樹形結(jié)構(gòu)中,樹根結(jié)點(diǎn)沒有______。
40.設(shè)有下列的程序段:
charstr[]="Hello";
char*ptr;
ptr=-str;
執(zhí)行上面的程序段后,*(ptr+5)的值為______。
三、1.選擇題(20題)41.下列程序的運(yùn)行結(jié)果是()。main(){inta=-5,b=1,c=1;intx=0,y=2,z=0;if(c>0)x=x+y;if(a<=0){if(b>O)if(c<=0)y=x-y;}elseif(c>0)y=x-y;elsez=y;printf("%d,%d,%d\n",x,y,z);}
A.2,2,0B.2,2,2C.0,2,0D.2,0,2
42.有以下程序:main(){chara='a',b;printf("%c,",++a);printf("%c\n",b=a++);程序運(yùn)行后的輸出結(jié)果是______。
A.b,bB.a,bC.b,cD.a,c
43.以下選項(xiàng)中,能定義s為合法的結(jié)構(gòu)件變量的是_______。
A.typedefstructabc{doublea;charb[10];}s;
B.struct{doublea;charb[10];}s
C.structABC{doublea;charb[10];}ABCs;
D.typedefABC{doublea;charb[10];}ABCs;
44.若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯(cuò)誤的是A.函數(shù)調(diào)用可以作為獨(dú)立的語句存在
B.函數(shù)調(diào)用可以作為一個(gè)函數(shù)的實(shí)參
C.函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中
D.函數(shù)調(diào)用可以作為一個(gè)函數(shù)的形參
45.若有說明:int*p,m=5,n;以下正確的程序段是
A.p=&n;scanf("%d",&p);
B.p=&n;scanf("%d",*p)
C.scanf("%d",&n);*p=n;
D.p=&n;*p=m;
46.若要用函數(shù)fopen打開一個(gè)新的二進(jìn)制文件,該文件要既能讀也能寫,則應(yīng)以哪種方式打開文件()。
A.wbB.wb+C.rb+D.rb
47.有以下程序
#include<stdio.h>
main()
{FILE*fp;inti=20,j=30,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);
fclose(fp);}
程序運(yùn)行后的輸出結(jié)果是
A.2030B.2050C.3050D.3020
48.以下程序的輸出結(jié)果是______。#include<stdio.h>main(){inta=200;#definea100printf("%d",a);#undefaprintf("%d",a);}
A.200100B.100100C.100200D.200200
49.有以下函數(shù):intfun(char*s){char*t=s;while(*t++);return(t-s);}該函數(shù)的功能是()
A.比較兩個(gè)字符串的大小
B.計(jì)算s所指字符串占用內(nèi)存字節(jié)個(gè)數(shù)
C.計(jì)算s所指字符串的長度
D.將s所指字符串自制到字符串t中
50.以下選項(xiàng)中非法的表達(dá)式是()。
A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1
51.有程序段:intal,a2;Charcl,c2;scanf("%d%c%d%c",&a1,&cl,&a2,&c2);若要求a1、a2、c1、c2的值分別為10、20、A、B,正確的數(shù)據(jù)輸入()
A.10A20B<CR>B.10A20B<CR>C.10A20B<CR>D.10A20B<CR>
52.數(shù)據(jù)庫系統(tǒng)的核心是()
A.數(shù)據(jù)庫B.數(shù)據(jù)庫管理系統(tǒng)C.模擬模型D.軟件工程
53.下列敘述中正確的是A.C語言中既有邏輯類型也有集合類型
B.C語言中沒有邏輯類型但有集合類型
C.C語言中有邏輯類型但沒有集合類型
D.C語言中既沒有邏輯類型也沒有集合類型
54.下列可作為C語言賦值語句的是______。
A.x=3,y=5;B.a=b=6;C.i--;D.y=int(x);
55.下列工具中為需求分析常用工具的是()。
A.PADB.PFDC.N-SD.DFD
56.下述語句中,在字符串s1和s2相等時(shí)顯示"theyareEqual"的是()。
A.if(*s1=*s2)puts("theyareEqual");
B.if(!strcmp(s1,s2))puts("theyareEqual");
C.if(s1==s2)puts("theyareEqual");
D.if(strcmp(s1,s2))puts("theyareEqual");
57.若w、x、y、z、m均為int型變量,則執(zhí)行下列的語句后m的值是()。w=2,x=3,y=4,z=5;m=(w<x)?w:x;m=(m<z)?m:z;m=(m<y)?m:y;
A.2B.3C.5D.4
58.下列關(guān)于棧的描述中錯(cuò)誤的是()。A.棧是先進(jìn)后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針
59.有以下程序voidfun(int*a,inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;i++;j--;fun(a,i,j);})main(){intx[]={2,6,1,8},i;fun(x,0,3);for(i=0;i<4;i++)printf("%2d",x[i]);printf("\"n);}程序運(yùn)行后的輸出結(jié)果是
A.1268B.8621C.8162D.8612
60.以下選項(xiàng)中,非法的字符常量是______。
A.'\t'B.'\17'C.\nD.'\xaa'
四、選擇題(20題)61.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.9B.8C.7D.10
62.
63.
64.設(shè)有條件表達(dá)式:(EXP)?i++;j--,則以下表達(dá)式中(EXP)完全等價(jià)的是()。
A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)
65.有下列程序
voidfunc1(inti);
voidfunc2(inti);
charst[]="hello,friend!";
voidfunc1(inti)
{printf("%c",st[i]);
if(i<3){i+=2;func2(i);}
}
voidfunc2(inti)
{printf("%c",st[i]);
if(i<3){i+=2;func1(i);}
}
main()
{inti=0;func1(i);
printf("\n");
}
執(zhí)行后的輸出結(jié)果是
A.helloB.hel
C.hloD.hlm
66.HTTP協(xié)議是運(yùn)行于()協(xié)議之上的應(yīng)用層協(xié)議。
A.FTPB.SMTPC.TCPD.UDP
67.
68.
有以下程序
#include<stdio.h>
voidfun(int*a,intn)/*fun函數(shù)的功能是將a所指數(shù)組元素從大到小排序*/
{intt,i,j;
for(i=0;i<n-1;j++)
for(j=i+l;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}
}
main
{intc[10]={1,2,3,4,5,6,7,8,9,0),i;
fun(c+4,6);
for(i=0;i<10;i++)printf("%d,",c[i]);
printf("\n");
}
程序運(yùn)行的結(jié)果是()。
A.1,2,3,4,5,6,7,8,9,0,
B.0,9,8,7,6,5,1,2,3,4,
C.0,9,8,7,6,5,4,3,2,1,
D.1,2,3,4,9,8,7,6,5,0,
69.下列C語言用戶標(biāo)識符中,不屬于合法標(biāo)識符的是
A._1B.d3_7C._a7D.m—n
70.下列程序的輸出結(jié)果是()。
A.a=4,b=4
B.a=4,b=5
C.a=5,b=4
D.a=5,b=5
71.設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是()。
A.X=Y+z+5,++YB.int(15.8%5)C.X=Y*5=X+ZD.X=25%5.0
72.若有以下說明和定義,以下敘述中錯(cuò)誤的是(
)。uniondt{
int
a;char
b;double
c;}data;A.兩個(gè)共用體變量之間可以相互賦值B.變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等C.程序段:data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000D.共用體在初始化時(shí)只能用第一個(gè)成員的類型進(jìn)行初始化
73.有以下程序
main()
{inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i;
for(i=0;i<3;i++)printf("%d",(++p)[i]);
}
程序運(yùn)行后的輸出結(jié)果是()。
A.012B.135C.234D.345
74.(38)索引屬于()
A.模式
B.內(nèi)模式
C.外模式
D.概念模式
75.以下程序的輸出結(jié)果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staticintx=1;x*=x+1;printf("%d",x);}
A.33B.22C.26D.25
76.設(shè)有如下三個(gè)關(guān)系表
下列操作中正確的是()。
A.T=RnSB.T=RUSC.T=R×SD.T=R/S
77.面向?qū)ο蠓椒ㄖ?,繼承是指()。
A.一組對象所具有的相似性質(zhì)B.一個(gè)對象具有另一個(gè)對象的性質(zhì)C.各對象之間的共同性質(zhì)D.類之間共享屬性和操作的機(jī)制
78.假定所有變量均已正確說明,下列程序段運(yùn)行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3
79.
80.
五、程序改錯(cuò)題(1題)81.以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出。請?jiān)跈M線上填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計(jì)題(1題)82.請編寫一個(gè)函數(shù),用來刪除字符串中的所有空格。例如,輸入abcdefgh,則輸出為abcdefgh。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.C
2.AA選項(xiàng)中“115L”表示長整型數(shù)據(jù)。B選項(xiàng)是八進(jìn)制常量的表示方法,但是在八進(jìn)制中不能含有數(shù)字8,所以B選項(xiàng)錯(cuò)誤。C選項(xiàng)中e后面應(yīng)該是整數(shù),而不能是小數(shù)1.5,所以C選項(xiàng)錯(cuò)誤。D選項(xiàng)中八進(jìn)制常量應(yīng)該是以數(shù)字“0”開始,而不是以字母“o”開始。故本題答案為A選項(xiàng)。
3.C
4.A
5.C
6.B關(guān)系具有以下7個(gè)性質(zhì)。①元組個(gè)數(shù)有限性:二維表中元組的個(gè)數(shù)是有限的。②元組的唯一性:二維表中任意兩個(gè)元組不能完全相同。③元組的次序無關(guān)性:二維表中元組的次序,即行的次序可以任意交換。④元組分量的原子性:二維表中元組的分量是不可分割的基本數(shù)據(jù)項(xiàng)。⑤屬性名唯一性:二維表中不同的屬性要有不同的屬性名。⑥屬性的次序無關(guān)性.二維表中屬性的次序可以任意交換。⑦分量值域的同一性:二維表屬性的分量具有與該屬性相同的值域,或者說列是同質(zhì)的。滿足以上7個(gè)性質(zhì)的二維表稱為關(guān)系,以二維表為基本結(jié)構(gòu)所建立的模型稱為關(guān)系模型。本題答案為B選項(xiàng)。
7.A本題考查數(shù)據(jù)結(jié)構(gòu)中二叉樹的性質(zhì)。二叉樹滿足如下一條性質(zhì),即:對任意一棵二叉樹,若終端結(jié)點(diǎn)(即葉子結(jié)點(diǎn))數(shù)為n0,而其度數(shù)為2的結(jié)點(diǎn)數(shù)為n2,則n0=n2+l。根據(jù)這條性質(zhì)可知,若二叉樹中有70個(gè)葉子結(jié)點(diǎn),則其度為2的結(jié)點(diǎn)數(shù)為70-1,即69個(gè)。二叉樹的總結(jié)點(diǎn)數(shù)是度為2、度為1和葉子結(jié)點(diǎn)的總和,因此,題目中的二叉樹總結(jié)點(diǎn)數(shù)為69+80+70,即219。因此,本題的正確答案是選項(xiàng)A。
8.C解析:數(shù)據(jù)處理的最小單位是數(shù)據(jù)項(xiàng);由若干數(shù)據(jù)項(xiàng)組成數(shù)據(jù)元素;而數(shù)據(jù)是指能夠被計(jì)算機(jī)識別、存儲和加工處理的信息載體;數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)之間的相互關(guān)系和數(shù)據(jù)運(yùn)算。故正確答案為選項(xiàng)C)。
9.A
10.B
11.A解析:在C語言中,動態(tài)存儲區(qū)域中存放的變量在使用時(shí)才分配內(nèi)存空間,函數(shù)調(diào)用時(shí)返回的地址和自動類局部變量等存放在動態(tài)存儲區(qū)域中。auto變量和register變量都屬于自動類局部變量,因此選項(xiàng)A正確。static說明的變量為靜態(tài)變量,靜態(tài)變量在內(nèi)存的靜態(tài)存儲中占據(jù)著永久的存儲單元,直至程序運(yùn)行結(jié)束。extern說明的變量為外部變量,屬于全局變量,全局變量在整個(gè)程序運(yùn)行期間都占用內(nèi)存空間。
12.A
13.D
14.B
15.C解析:本題中,“printf('%2d,%2d\\n',x,y)”表示以逗號隔開輸出兩個(gè)十進(jìn)制整數(shù),每個(gè)整數(shù)域?qū)捠?。而在C語言中規(guī)定:當(dāng)域?qū)捫∮趯?shí)際寬度時(shí)域?qū)挷黄鹱饔?,按?shí)際寬度輸出,因此最后的輸出值為102和10(y的初值012表示八進(jìn)制整數(shù)12,等于十進(jìn)制的10)。所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。
16.A
17.D
18.D
19.B
20.B
21.1212解析:本題的第—個(gè)for循環(huán)用于紿數(shù)組arr賦初值,第二個(gè)for循環(huán)用于求和運(yùn)算。由于第二個(gè)for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結(jié)果為12。
22.55解析:本題的關(guān)鍵在于if(!(i%5))printf('\\n),這句,即如果i可被5整除時(shí),則換行。i值為24,可以被5整除4次,并余4,因此,prnt函數(shù)共輸出5行,最后一行有4個(gè)數(shù)。
23.101,0解析:與運(yùn)算兩邊的語句必須同時(shí)為真時(shí),結(jié)果才為真。當(dāng)執(zhí)行完if((++a<0)&&!(b--<=0))時(shí),a,b的值已經(jīng)發(fā)生了變化。
24.8168,16解析:float(*p1)(float)是定義p1為指向函數(shù)的float型的指針變量。因此p1=f1;p2=f2;表示p1指向函數(shù)f1,p2指向函數(shù)f2,故所有y1=p2(p1(2.0))=f2(f1(2.0))=8;后面將p1與p2互換,y2=f1(f2(2.0))=16。
25.99解析:在主函數(shù)中函數(shù)f(f(3,4),f(3,5))的返回值賦給do函數(shù)的第一個(gè)參數(shù)為f(3,4)的返回值,函數(shù)f(3,4)返回值為(4-3)*3=3,f(3,5)返回值為(5-3)*3=6,那么函數(shù)f(f(3,4),f(3,5))等價(jià)于函數(shù)f(3,6)其返回值為(6-3)*3=9。因此d被賦值為9,所以輸出9。
26.11011111101111解析:本題通過除2取余法即可求出十進(jìn)制數(shù)111所對應(yīng)的二進(jìn)制數(shù)1101111。
27.概念設(shè)計(jì)階段(數(shù)據(jù)庫概念設(shè)計(jì)階段)概念設(shè)計(jì)階段(數(shù)據(jù)庫概念設(shè)計(jì)階段)
28.算法或程序或流程圖算法或程序或流程圖解析:算法是問題處理方案正確而完整的描述。
29.fopenfopen解析:C語言中的文件分為:ASCII文件與二進(jìn)制文件。文件在使用前打開,使用后要關(guān)閉。
打開文件的函數(shù)為:fopen(),調(diào)用形式為:fp=fopen(“文件名”,“使用文件方式”);
關(guān)閉文件的函數(shù)為:fclose(),調(diào)用形式為:fclose(fp);其中fp為文件指針。
30.00解析:對于一個(gè)unsignedshort來說,它能取的最大值是65535。這里給a賦值65536,已經(jīng)超出了它的取值范圍,這樣它的高位將被截掉,只把低位賦給它(全零)。所以a的值實(shí)際為0。
31.本程序的功能是求a的b次方本程序的功能是求a的b次方
32.str[i++]32。str[i++]32。解析:while語句的循環(huán)控制條件既要將相應(yīng)元素賦予從鍵盤輸入的字符,又要改變元素的下標(biāo)值,以便接受下一個(gè)字符,可用下標(biāo)變量的后置加實(shí)現(xiàn);小寫字母的ASCII碼值比相對應(yīng)的大寫形式大32。
33.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:與棧類似,隊(duì)列也是線性表,也町以采用鏈?zhǔn)酱鎯Y(jié)構(gòu)。
34.白盒或白箱或白盒子或WhiteBox白盒或白箱或白盒子或WhiteBox解析:本題考查軟件工程的測試。測試一般有兩種方法:黑盒測試和白盒測試。黑盒測試不考慮程序的內(nèi)部邏輯結(jié)構(gòu)和處理過程,只著眼于程序的外部特性。用黑盒測試來發(fā)現(xiàn)程序中的錯(cuò)誤,必須用所有可能的輸入數(shù)據(jù)來檢查程序能否都能產(chǎn)生正確的輸出。白盒測試是在了解程序內(nèi)部結(jié)構(gòu)和處理過程的基礎(chǔ)上,對程序的所有路徑進(jìn)行測試,檢查路徑是否都能按預(yù)定要求正確工作。因此,劃線處應(yīng)填入“白盒(箱)”或“WhiteBox”。
35.加工加工解析:數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。其中的每一個(gè)加工對應(yīng)一個(gè)處理模塊。
36.n/2n/2解析:刪除一個(gè)元素,平均移動的元素個(gè)數(shù)為(n-1+n-2+…+0)/n=(n-1)/2;插入一個(gè)元素,平均移動元素個(gè)數(shù)為(n+n-1+n-2+…+1)/n=(n+1)/2;所以總體平均移動元素個(gè)數(shù)為n/2。
37.333,3解析:本題在while(n++<=1)語句后,直接加了分號,說明如果while()的條件為真時(shí),該循環(huán)什么都不做:n++是先取n的當(dāng)前值和1做比較,然后再將n加1。第一次循環(huán),n=0時(shí),循環(huán)條件n++=<1成立,執(zhí)行循環(huán),然后得到n=1。第二次循環(huán),n=1時(shí),循環(huán)條件n++=1<=1成立,執(zhí)行循環(huán),然后得到n=2。第三次循環(huán),n=2時(shí),循環(huán)條件n++=2<=1不成立,不執(zhí)行循環(huán),但在判斷循環(huán)條件時(shí)仍將n加1,得到n=3.退出循環(huán)后執(zhí)行printf語句,第二個(gè)printf語句輸出n++,是先輸出n的當(dāng)前值3,然后再將n加l,即程序結(jié)束后得到n=4,但輸出的是3。
38.類類解析:在面向?qū)ο蠓椒ㄖ?,類描述的是具有相似屬性與操作的一組對象。
39.前件前件
40.'\0''\\0'解析:本題涉及字符數(shù)組和指針的兩個(gè)知識點(diǎn):①在c語言中,字符型數(shù)組在存放字符串時(shí)會自動在末尾加上字符串結(jié)束標(biāo)識符'\\0',所以題中數(shù)組str有6個(gè)元素。②ptr指向數(shù)組s仕的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。
41.A解析:本題考查ifelse語句的使用。先判斷第1個(gè)if語句,因?yàn)閏=1>0,所以x=x+y=0+2=2。第1個(gè)if語句,因?yàn)閍=-5<0,所以進(jìn)入下列的復(fù)合語句。經(jīng)判斷發(fā)現(xiàn),復(fù)合語句中第2個(gè)if語句的條件均不滿足,不執(zhí)行任何語句退出,在這個(gè)過程中y和z的值沒有發(fā)生變化。
42.A解析:本題同樣考查++運(yùn)算的執(zhí)行次序。第一個(gè)prantf輸出的是'b',并且變量a='b';第二個(gè)printf輸出的是賦值語句b=a++最終的結(jié)果,該語句首先將a的值賦給b,然后a++,因此第二個(gè)printf輸出也是'b'。
43.B解析:定義一個(gè)結(jié)構(gòu)體類型的變量,可采用三種方法:①先定義結(jié)構(gòu)體類型,再定義變量名;②在定義類型的同時(shí)定義變量;③直接定義結(jié)構(gòu)類型變量,即不出現(xiàn)結(jié)構(gòu)體名;選項(xiàng)B符合第三種定義方法。
44.D解析:本題考查函數(shù)的調(diào)用。在有參函數(shù)調(diào)用中,是將主調(diào)函數(shù)的實(shí)參值傳給被調(diào)函數(shù)的形參。按函數(shù)在程序中出現(xiàn)的位置來分,有以下三種函數(shù)調(diào)用形式:
①函數(shù)調(diào)用作為一條語句。例如:fun();這時(shí)不要求函數(shù)帶回值,只要求函數(shù)完成一定的操作。故選項(xiàng)A)正確。
②函數(shù)出現(xiàn)在表達(dá)式中,這種表達(dá)式稱為函數(shù)表達(dá)式。這時(shí)要求函數(shù)帶回一個(gè)確定的值以參加表達(dá)式的運(yùn)算。例如:c=5*max(a,b);函數(shù)max是表達(dá)式的一部分,將其值乘以5后賦給c。故選項(xiàng)C)正確。
③函數(shù)調(diào)用作為一個(gè)函數(shù)的實(shí)參,例如:m=max(a,max(b,c));其中max(b,c)是一次函數(shù)調(diào)用,它的值作為max另一次調(diào)用的實(shí)參。故選項(xiàng)B)正確。
函數(shù)調(diào)用不可作為一個(gè)函數(shù)的形參,因?yàn)楹瘮?shù)調(diào)用參數(shù)的數(shù)據(jù)傳遞是單向傳遞,即實(shí)參傳給形參,不能由形參傳給實(shí)參。故選項(xiàng)D)錯(cuò)誤。
45.D解析:“&”是求址運(yùn)算符,“*”是指變量說明符。選項(xiàng)A)、B)應(yīng)改為scanf('%d',p);選項(xiàng)C)中指針變量p未指向一確定的內(nèi)存單元,不能為其賦值,并且這樣做很危險(xiǎn),建議不使用。
46.B解析:本題考查文件使用方式標(biāo)識符。方式“wb”為輸出打開一個(gè)二進(jìn)制文件;方式“wb+”為讀寫建立一個(gè)新的二進(jìn)制文件;方式“rb+”為讀寫打開一個(gè)二進(jìn)制文件:方式“rb”為輸入打開一個(gè)二進(jìn)制文件。
47.A解析:本題中,最主要的是掌握幾個(gè)有關(guān)文件函數(shù)的應(yīng)用。
函數(shù)名:fopen
功能:打開一個(gè)文件
調(diào)用方式FILE*fp;
fp=fopen(文件名,使用文件方式);
函數(shù)名:fprintf
功能:傳送格式化輸出到一個(gè)文件中
調(diào)用方式:fprintf(文件指針,格式字符串,輸出表列);
函數(shù)名:fclose
功能:關(guān)閉一個(gè)文件
調(diào)用方式:fclose(文件指針);
函數(shù)名:fscanf
功能:從磁盤文件執(zhí)行格式化輸入
調(diào)用方式:fscanf(文件指針,格式字符串,輸入列表)。
48.C解析:#define宏名的有效范圍為定義命令之后到本源文件結(jié)束,可以在程序中使用#undef命令終止宏定義的作用域。本題由于#undef的作用,使a的作用范圍在#definea100到#undefa之間,故答案為C。
49.B解析:本題中,首先讓t指向形參s,然后通過一個(gè)循環(huán)體為空的while循環(huán),將t逐次后移,直到其所指的內(nèi)容為0(字符串結(jié)束標(biāo)志)。注意,此時(shí)t仍然會被增1,所以從循環(huán)中出來,t指向的是s所指字符串的結(jié)束標(biāo)志的后一個(gè)字節(jié)。由此可見,返回的t-s是s所指字符串占用內(nèi)存字節(jié)的個(gè)數(shù),故本題應(yīng)該選擇B。注意,選項(xiàng)C和選項(xiàng)B是不同的,選項(xiàng)C所說的長度并不包括字符串結(jié)束標(biāo)志位,而選項(xiàng)B所說的個(gè)數(shù)則包括。即選項(xiàng)B所說個(gè)數(shù)始終比選項(xiàng)C所說長度大1。
50.D解析:選項(xiàng)A)在C語言中是一個(gè)合法的關(guān)系表達(dá)式,但它并不代表數(shù)學(xué)式o<=x<100。計(jì)算0<=x<100時(shí),從左到右結(jié)合,先計(jì)算0<=x,其結(jié)果只能是0或1,然后再比較0<100或1<100。根據(jù)運(yùn)算符的優(yōu)先級,選項(xiàng)B)先判斷j==0是否成立,其結(jié)果只能是0或1,然后再將0或1賦給i。選項(xiàng)C)中,(char)(65+3)為類型強(qiáng)制轉(zhuǎn)換,將整數(shù)型數(shù)據(jù)轉(zhuǎn)換為字符型。選項(xiàng)D)是將一個(gè)數(shù)據(jù)賦給一個(gè)表達(dá)式,等號左邊不合要求,所以錯(cuò)誤。
51.A
52.B解析:數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,簡稱DBMS)是數(shù)據(jù)庫的機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等,數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心。
53.D解析:在C語言中沒有邏輯類型,邏輯類型用整型來表示,故選項(xiàng)A和選項(xiàng)C不正確,C語言中沒有集合類型,故選項(xiàng)B不正確。所以,D選項(xiàng)為所選。
54.C
55.D解析:需求分析常用的工具有數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判定樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N-S(盒式圖)都是詳細(xì)設(shè)計(jì)的常用工具,不是需求分析的工具。
56.B
57.A解析:條件表達(dá)式“a?b:c”的含義是:當(dāng)a為真時(shí),其值等于表達(dá)式b的值;當(dāng)a為假時(shí),其值等于表達(dá)式c的值。
表達(dá)式運(yùn)算過程:第1個(gè)表達(dá)式:w=2<x=3為真,所以返回w的值,即m=w=2;第2個(gè)表達(dá)式:m=2<z=5為真,所以返回m的值,即m=2;第3個(gè)表達(dá)式:w=2<y=4為真,所以返回m的值,即m=2。
58.B棧是限定只能在表的一端進(jìn)行插入和刪除操作的線性表,入棧和出棧都是在棧頂進(jìn)行,它們的操作特點(diǎn)是先進(jìn)后出,因此具有記憶作用。棧可以采用順序存儲,也可以采用鏈?zhǔn)酱鎯Α?/p>
59.C解析:本題考核的知識點(diǎn)是倘單程序的分析。函數(shù)fun()中用了一個(gè)if語句,當(dāng)數(shù)組下標(biāo)i小于數(shù)組下標(biāo)j時(shí),交換數(shù)組元素a[i]和a[j]的值,并使i值加1,j值減1。其功能就是把數(shù)組a中從下標(biāo)i到j(luò)的元素首尾互換。主函數(shù)中定義一個(gè)數(shù)組,在定義該數(shù)組的時(shí)候缺省了定義長度,定義的同時(shí)將其初始化賦值,所以該數(shù)組的長度為初始化該數(shù)組時(shí)的元素的個(gè)數(shù)即4,接著調(diào)用fun(a,0,3),其中將a數(shù)組的第一個(gè)元素的下標(biāo)0和最后一個(gè)元素的下標(biāo)3傳給了函數(shù)fun(),故執(zhí)行完該函數(shù)后,數(shù)組a中的元素首尾互換,因此最后依次輸出的數(shù)組a中值為8,1,6和2,所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。
60.C解析:C語言中字符常量是以單引號括起來的單個(gè)字符,或?yàn)橐浴癨\”與三位八進(jìn)制數(shù)值或兩位十六進(jìn)制數(shù)值代替單個(gè)字符。
61.A題目中靜態(tài)局部變量a,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元,在程序整個(gè)運(yùn)行期間都不釋放。所以第-次調(diào)用函數(shù)執(zhí)行n+=a++;時(shí)a先與n相加在再進(jìn)行自增。n的值為4,a的值為2,且a變量執(zhí)行完后空間沒有釋放。再執(zhí)行s:。+f(a)時(shí),s的值為4,調(diào)用f(a)函數(shù)時(shí)n的返回值為n=3+2=5,且此時(shí)a的值為3了。所以s的值為9。
62.A
63.B
64.B解析:條件表達(dá)式的形式為:“表達(dá)式1?表達(dá)式2:表達(dá)式3”。其含義為:當(dāng)“表達(dá)式1”的值為非零時(shí),求出“表達(dá)式2”的值,此時(shí)“表達(dá)式2”的值就是整個(gè)條件表達(dá)式的值;當(dāng)“表達(dá)式1”的值為零時(shí),求出“表達(dá)式3”的值,此時(shí)“表達(dá)式3”的值就是整個(gè)條件表達(dá)式的值。對于本題來說,當(dāng)表達(dá)式EXP為非0值時(shí)條件成立,即執(zhí)行語句i++;當(dāng)EXP等于0時(shí),執(zhí)行語句j--;這等同于條件表達(dá)式“(EXP!=0)?i++:i++;”。
65.C根據(jù)變量作用域與其定義語句在程序中出現(xiàn)位置之間的關(guān)系,可把變量分為局部變量和全局變量兩種。其中,在函數(shù)外部定義的變量叫做全局變量,又稱為外部變量;在函數(shù)體內(nèi)定義的變量是局部變量,又稱為內(nèi)部變量。全局變量的作用域是整個(gè)程序,而局部變量的作用域是定義它的函數(shù)或者程序段。
在本題中,程序首先聲明兩個(gè)無返回值函數(shù)func1和func2,然后定義一個(gè)全局?jǐn)?shù)組st。做這類除主函數(shù)外,有其他函數(shù)的試題時(shí),首先需要分析其他函數(shù)來得知函數(shù)的作用,然后再看主函數(shù)。
func1函數(shù)帶有一個(gè)整型變量的形參,在函數(shù)體中,首先輸出以形參作為下標(biāo)的數(shù)組元素值,然后執(zhí)行if條件判斷語句,其條件為形參變量i<3。如果結(jié)果為真,則將變量i加2后保存,然后調(diào)用func2函數(shù);如果條件結(jié)果為假,則結(jié)束該函數(shù)。
從程序中不難看出,func2函數(shù)與func1函數(shù)基本類似,只是最后它對函數(shù)func1進(jìn)行調(diào)用,與前者不同,兩個(gè)函數(shù)是互相調(diào)用的。
在主函數(shù)中定義一個(gè)變量i并賦值為0,然后調(diào)用函數(shù)func1,根據(jù)我們對函數(shù)func1的分析可知,輸出st[0]即字符‘h’,而此時(shí)if語句的結(jié)果為真,執(zhí)行i加2并調(diào)用func2函數(shù)操作。此時(shí)變量i的值為2,因此,輸出st[2]即字符‘l’,此時(shí)函數(shù)func2中的if條件語句結(jié)果為真,同樣執(zhí)行i加2,并調(diào)用func1函數(shù)操作,然后通過func1函數(shù)輸出st[4]即字符‘o’,此時(shí)由于變量i的值等于4,是大于3的,函數(shù)結(jié)束。程序運(yùn)行到出口,最后輸出換行。因此,本程序最終的輸出結(jié)果是hlo。
66.C
67.A
68.D
\nfun函數(shù)的功能是對數(shù)組a[]的元素從大到小進(jìn)行排序。
\n
69.D所謂標(biāo)識符,是指常量、變量、語句標(biāo)號以及用戶自定義函數(shù)的名稱。C語言規(guī)定標(biāo)識符只能由字母、數(shù)字、下畫線組成,并且只能以字母、下畫線開頭。一些標(biāo)識符被賦予特定的含義就叫做保留字(或稱為關(guān)鍵字)。
選項(xiàng)D“m—n”中含有非法字符“—”。
70.Bcontinue語句的作用是跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進(jìn)行循環(huán)條件的判定。當(dāng)能被2整除時(shí),a就會增1,之后執(zhí)行continue語句,直接執(zhí)行到for循環(huán)體的結(jié)尾,進(jìn)行i++,判斷循環(huán)條件。
71.A?B)與D)選項(xiàng)中取模運(yùn)算符%的左右兩個(gè)操作數(shù)均應(yīng)為整數(shù),所以B)、D)錯(cuò)誤。C)選項(xiàng)中不能將x+z的值賦給表達(dá)式y(tǒng)*5,所以C)錯(cuò)誤。
72.C浮點(diǎn)型占8個(gè)字節(jié),整型占4個(gè)字節(jié),當(dāng)把整型數(shù)據(jù)用浮點(diǎn)型格式輸出時(shí),結(jié)果為0.000000
73.B第一個(gè)for循環(huán)的結(jié)果是p[9]={0,1,2,3,4,,5,6,7,8},第二個(gè)for循環(huán):i=0,++p,使得p指向了1,所以輸出的結(jié)果是1,然后i++,i=1,++p,p指向了3……
74.B
75.C解析:C語言規(guī)定如果全局變量與局部變量同名,則在局部變量的作用域內(nèi)全局變量不起作用。程序開頭定義的變量x為全局變量,函數(shù)incre中定義的變量x是局部靜態(tài)變量,存放在靜態(tài)存儲區(qū),incre調(diào)用結(jié)束后不釋放x占據(jù)的存儲單元。main函數(shù)中使用的x是全局變量x=3,所以main函數(shù)中調(diào)用函數(shù)incre兩次。調(diào)用過程如下。第1次調(diào)用:x=x*(x+1)=1×(1+1)=2,printf函數(shù)輸出2;第2次調(diào)用:x=x*(x+1)=2×(2+1)=6,printf函數(shù)輸出6。
76.C\n對于兩個(gè)關(guān)系的合并操作可以用笛卡爾積表示。設(shè)有n元關(guān)系R和in元關(guān)系s,它們分別有P和q個(gè)元組,則R與S的笛卡兒積記為R×S它是一個(gè)m+n元關(guān)系,元組個(gè)數(shù)是P×q由題意可得,關(guān)系T是由關(guān)系R與關(guān)系s進(jìn)行笛卡爾積運(yùn)算得到的。
\n
77.D繼承是面向?qū)ο蟮姆椒ǖ囊粋€(gè)主要特征,是使用已有的類的定義作為基礎(chǔ)建立新類的定義技術(shù)。廣義的說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們,所以說繼承是指類之間共享屬性和操作的機(jī)制。
78.B解析:本題考查ifelse語句。第一個(gè)if語句,先判斷條件,發(fā)現(xiàn)a=0,則!a成立,執(zhí)行下列的語句,x--,得x=11:第二個(gè)if語句,判斷條件,發(fā)現(xiàn)c=o,則條件不成立,執(zhí)行下列的else語句,得x=4。
79.C
80.C
81.(1)錯(cuò)誤:缺少語句
正確:應(yīng)填人num%base
(2)錯(cuò)誤:缺少語句
正確:應(yīng)填人[d]
【解析】按題目中的要求把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出,首先要對十進(jìn)制數(shù)對16求余,得出十六進(jìn)制每一位上的數(shù)字。因此,c[i]__________處填num%base。數(shù)組b為十進(jìn)制數(shù)0~15所對應(yīng)的十六進(jìn)制數(shù),數(shù)組c中存放的是十六進(jìn)制數(shù)每一位上的數(shù)字。因此,b__________處填Ed2。
82.
【解析】根據(jù)題目中要求刪除字符串中所有的空格,需要檢查字符串中的每一個(gè)字符。將不是空格的字符放入原來的字符串中,形成新的字符串。在新的字符串的末尾加上結(jié)束符。
2022-2023年湖南省張家界市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列定義中,不正確的有______。
A.#definePI3.141592
B.#defineS345;
C.intmax(x,y);
D.staticcharc;intx,y;{...}
2.以下選項(xiàng)中能用作數(shù)據(jù)常量的是()。
A.115LB.0118C.1.5e1.5D.o115
3.十六進(jìn)制數(shù)BB轉(zhuǎn)換成十進(jìn)制數(shù)是()
A.192B.256C.187D.121
4.
5.
6.同一個(gè)關(guān)系模型的任意兩個(gè)元組值()。
A.可以全相同B.不能全相同C.必須全相同D.以上都不對
7.一棵二叉樹中共有70個(gè)葉子結(jié)點(diǎn)與80個(gè)度為1的結(jié)點(diǎn),則該二叉樹中的總結(jié)點(diǎn)數(shù)為A.219B.221C.229D.231
8.數(shù)據(jù)處理的最小單位是()。
A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項(xiàng)D.數(shù)據(jù)結(jié)構(gòu)
9.從一個(gè)長度為100的順序表中刪除第30個(gè)元素時(shí)需向前移動()個(gè)元素
A.70B.71C.69D.30
10.如下函數(shù)調(diào)用語句func(rec1,rec2+rec3,rec4,rec5);該函數(shù)調(diào)用語句中,含的實(shí)參個(gè)數(shù)是().
A.3B.4C.5D.有語法錯(cuò)誤
11.在C語言中,只有在使用時(shí)才占用內(nèi)存單元的變量,其存儲類型是()。
A.auto和register
B.extern和register
C.auto和static
D.static和register
12.假設(shè)把整數(shù)關(guān)鍵碼K散列到有N個(gè)槽的散列表,以下哪些散列函數(shù)是好的散列函數(shù)()
A.h(K)=KmodN
B.h(K)=1
C.h(K)=K/N
D.h(K)=(K+rand(N))modN,rand(N)返回一個(gè)0到N-1的整數(shù)
13.指針可以用來表示數(shù)組元素,若已知語句:inta[3][7];則下列表示中正確的是()。
A.*(a+1)[5]B.*(*a+3)C.*(*(a+1))D.*(&a[0][0]+2)
14.串是一種特殊的線性表,其特殊性體現(xiàn)在()。
A.可以順序存儲B.數(shù)據(jù)元素是一個(gè)字符C.可以鏈接存儲D.數(shù)據(jù)元素可以是多個(gè)字符
15.
有以下程序:
main
{intx=102,y=012;
printf("%2d,%2d\n",x,y);
}
執(zhí)行后輸出結(jié)果是()。
A.10,01B.02,12C.102,10D.02,10
16.
17.具有20個(gè)結(jié)點(diǎn)的二叉樹,其深度最多為_______。
A.4B.5C.6D.20
18.在一個(gè)單鏈表HL中,若要在指針q所指結(jié)點(diǎn)的后面插入一個(gè)由指針p所指向的結(jié)點(diǎn),則執(zhí)行____。
A.q一>next=p一>next;p一>next=q;
B.q一>next=p一>next;p一>next=q;
C.p一>next=q一>next;q=p;
D.p一>next=q一>next;q一>next=p;
19.
20.若定義了函數(shù)double*function(),則函數(shù)function的返回值為()。
A.實(shí)數(shù)型B.實(shí)數(shù)的地址C.指向函數(shù)的指針D.函數(shù)的地址
二、2.填空題(20題)21.下列程序執(zhí)行后輸出的結(jié)果是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
22.若變量n中的值為24,則prnt函數(shù)共輸出【】行。
voidprnt(intn,intaa[])
{inti;
for(i=1;i<=n;i++)
{printf("%6d",aa[i]);
if!(i%5))printf("\n");
}
printf("\n");
}
23.閱讀下面語句,則程序的執(zhí)行結(jié)果是【】。
#include"stdio.h"
main()
{inta=-1,b=1,k;
if((++a<0)&&!(b--<=0))
printf("%d,%d\",a,b);
elseprintf("%d,%d\n",b,a);}
24.有以下程序:
floatf1(floatn)
{returnn*n;}
floatf2(floatn)
{return2*n;}
main()
{float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;
p1=f1;p2=f2;
y1=p2(p1(2.0));
t=P1;p1=p2;p2=t;
y2=p2(p1(2.0));
printf("%3.0f,%3.0f\n",y1,y2);
}
程序運(yùn)行后的輸出結(jié)果是【】。
25.若有以下程序:
intf(intx,inty)
{
return(y-x)*x;
}
main()
{
inta=3,b=4,c=5,d;
d=f(f(3,4),f(3,5));
printf("%d\n",d);
}
執(zhí)行后輸出的結(jié)果是【】。
26.十進(jìn)制數(shù)111用八位二進(jìn)制數(shù)表示為【】。
27.數(shù)據(jù)庫設(shè)計(jì)分為以下6個(gè)設(shè)計(jì)階段:需求分析階段、______、邏輯設(shè)計(jì)階段、物理設(shè)計(jì)階段、實(shí)施階段、運(yùn)行和維護(hù)階段。
28.問題處理方案的正確而完整的描述稱為______。
29.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用刪函數(shù)返回當(dāng)前文件位置指針的具體位置,從而確定文件長度,請?zhí)羁铡?/p>
FILE*myf;longfl;
myf=【】("test.t","rb");
fseek(myf,(),SEEK_END);fl+ftell(myf);
fclose(myf);
printf("%d\n",fl);
30.以下程序的輸出結(jié)果是【】。
main()
{unsignedshorta=65536;intb;
printf("%d\n",b=A);
}
31.下面程序的功能是【】。
doublesub(doublex,inty)
{intn;doublez;
for(n=1,z=x;n<y;n++)z=z*x;
returnz;}
main()
{doublea=2.0,b=4.0,c;
c=sub(a,b);printf("%f",c);}
32.以下程序的功能是:從鍵盤輸入一字符串,要求將每個(gè)單詞中的第一個(gè)字母改成小寫(如果原來已是小寫字母,則不變),然后輸出轉(zhuǎn)換結(jié)果,補(bǔ)足所缺語句。
main()
{charstr[200];inti=0;
while((______=getchar())!='\n');
str[i-1)='\0';
for(i=0;str[i]!='\0';i++)
if((str[i-1]==''‖i==0)&&str[i]>='A'&&str[i]<='Z')
str[i]+=______;
printf("%s\n",str);
}
33.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊(duì)列屬于[]。
34.在兩種基本測試方法中,【】測試的原則之一是保證所測模塊中每一個(gè)獨(dú)立路徑至少要執(zhí)行一次。
35.在結(jié)構(gòu)化設(shè)計(jì)方法中,數(shù)據(jù)流圖表達(dá)了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個(gè)______實(shí)際上對應(yīng)一個(gè)處理模塊。
36.對于長度為n的順序存儲的線性表,當(dāng)隨機(jī)插入和刪除一個(gè)元素時(shí),需平均移動元素的個(gè)數(shù)為【】。
37.寫出下列程序的輸出結(jié)果______。
main()
{intn=0;
while(n++<=1);
printf("%d,",n);
printf("%d",n++);
}
38.在面向?qū)ο蠓椒ㄖ?,【】描述的是具有相似屬性與操作的一組對象。
39.在樹形結(jié)構(gòu)中,樹根結(jié)點(diǎn)沒有______。
40.設(shè)有下列的程序段:
charstr[]="Hello";
char*ptr;
ptr=-str;
執(zhí)行上面的程序段后,*(ptr+5)的值為______。
三、1.選擇題(20題)41.下列程序的運(yùn)行結(jié)果是()。main(){inta=-5,b=1,c=1;intx=0,y=2,z=0;if(c>0)x=x+y;if(a<=0){if(b>O)if(c<=0)y=x-y;}elseif(c>0)y=x-y;elsez=y;printf("%d,%d,%d\n",x,y,z);}
A.2,2,0B.2,2,2C.0,2,0D.2,0,2
42.有以下程序:main(){chara='a',b;printf("%c,",++a);printf("%c\n",b=a++);程序運(yùn)行后的輸出結(jié)果是______。
A.b,bB.a,bC.b,cD.a,c
43.以下選項(xiàng)中,能定義s為合法的結(jié)構(gòu)件變量的是_______。
A.typedefstructabc{doublea;charb[10];}s;
B.struct{doublea;charb[10];}s
C.structABC{doublea;charb[10];}ABCs;
D.typedefABC{doublea;charb[10];}ABCs;
44.若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯(cuò)誤的是A.函數(shù)調(diào)用可以作為獨(dú)立的語句存在
B.函數(shù)調(diào)用可以作為一個(gè)函數(shù)的實(shí)參
C.函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中
D.函數(shù)調(diào)用可以作為一個(gè)函數(shù)的形參
45.若有說明:int*p,m=5,n;以下正確的程序段是
A.p=&n;scanf("%d",&p);
B.p=&n;scanf("%d",*p)
C.scanf("%d",&n);*p=n;
D.p=&n;*p=m;
46.若要用函數(shù)fopen打開一個(gè)新的二進(jìn)制文件,該文件要既能讀也能寫,則應(yīng)以哪種方式打開文件()。
A.wbB.wb+C.rb+D.rb
47.有以下程序
#include<stdio.h>
main()
{FILE*fp;inti=20,j=30,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);
fclose(fp);}
程序運(yùn)行后的輸出結(jié)果是
A.2030B.2050C.3050D.3020
48.以下程序的輸出結(jié)果是______。#include<stdio.h>main(){inta=200;#definea100printf("%d",a);#undefaprintf("%d",a);}
A.200100B.100100C.100200D.200200
49.有以下函數(shù):intfun(char*s){char*t=s;while(*t++);return(t-s);}該函數(shù)的功能是()
A.比較兩個(gè)字符串的大小
B.計(jì)算s所指字符串占用內(nèi)存字節(jié)個(gè)數(shù)
C.計(jì)算s所指字符串的長度
D.將s所指字符串自制到字符串t中
50.以下選項(xiàng)中非法的表達(dá)式是()。
A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1
51.有程序段:intal,a2;Charcl,c2;scanf("%d%c%d%c",&a1,&cl,&a2,&c2);若要求a1、a2、c1、c2的值分別為10、20、A、B,正確的數(shù)據(jù)輸入()
A.10A20B<CR>B.10A20B<CR>C.10A20B<CR>D.10A20B<CR>
52.數(shù)據(jù)庫系統(tǒng)的核心是()
A.數(shù)據(jù)庫B.數(shù)據(jù)庫管理系統(tǒng)C.模擬模型D.軟件工程
53.下列敘述中正確的是A.C語言中既有邏輯類型也有集合類型
B.C語言中沒有邏輯類型但有集合類型
C.C語言中有邏輯類型但沒有集合類型
D.C語言中既沒有邏輯類型也沒有集合類型
54.下列可作為C語言賦值語句的是______。
A.x=3,y=5;B.a=b=6;C.i--;D.y=int(x);
55.下列工具中為需求分析常用工具的是()。
A.PADB.PFDC.N-SD.DFD
56.下述語句中,在字符串s1和s2相等時(shí)顯示"theyareEqual"的是()。
A.if(*s1=*s2)puts("theyareEqual");
B.if(!strcmp(s1,s2))puts("theyareEqual");
C.if(s1==s2)puts("theyareEqual");
D.if(strcmp(s1,s2))puts("theyareEqual");
57.若w、x、y、z、m均為int型變量,則執(zhí)行下列的語句后m的值是()。w=2,x=3,y=4,z=5;m=(w<x)?w:x;m=(m<z)?m:z;m=(m<y)?m:y;
A.2B.3C.5D.4
58.下列關(guān)于棧的描述中錯(cuò)誤的是()。A.棧是先進(jìn)后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針
59.有以下程序voidfun(int*a,inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;i++;j--;fun(a,i,j);})main(){intx[]={2,6,1,8},i;fun(x,0,3);for(i=0;i<4;i++)printf("%2d",x[i]);printf("\"n);}程序運(yùn)行后的輸出結(jié)果是
A.1268B.8621C.8162D.8612
60.以下選項(xiàng)中,非法的字符常量是______。
A.'\t'B.'\17'C.\nD.'\xaa'
四、選擇題(20題)61.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.9B.8C.7D.10
62.
63.
64.設(shè)有條件表達(dá)式:(EXP)?i++;j--,則以下表達(dá)式中(EXP)完全等價(jià)的是()。
A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)
65.有下列程序
voidfunc1(inti);
voidfunc2(inti);
charst[]="hello,friend!";
voidfunc1(inti)
{printf("%c",st[i]);
if(i<3){i+=2;func2(i);}
}
voidfunc2(inti)
{printf("%c",st[i]);
if(i<3){i+=2;func1(i);}
}
main()
{inti=0;func1(i);
printf("\n");
}
執(zhí)行后的輸出結(jié)果是
A.helloB.hel
C.hloD.hlm
66.HTTP協(xié)議是運(yùn)行于()協(xié)議之上的應(yīng)用層協(xié)議。
A.FTPB.SMTPC.TCPD.UDP
67.
68.
有以下程序
#include<stdio.h>
voidfun(int*a,intn)/*fun函數(shù)的功能是將a所指數(shù)組元素從大到小排序*/
{intt,i,j;
for(i=0;i<n-1;j++)
for(j=i+l;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}
}
main
{intc[10]={1,2,3,4,5,6,7,8,9,0),i;
fun(c+4,6);
for(i=0;i<10;i++)printf("%d,",c[i]);
printf("\n");
}
程序運(yùn)行的結(jié)果是()。
A.1,2,3,4,5,6,7,8,9,0,
B.0,9,8,7,6,5,1,2,3,4,
C.0,9,8,7,6,5,4,3,2,1,
D.1,2,3,4,9,8,7,6,5,0,
69.下列C語言用戶標(biāo)識符中,不屬于合法標(biāo)識符的是
A._1B.d3_7C._a7D.m—n
70.下列程序的輸出結(jié)果是()。
A.a=4,b=4
B.a=4,b=5
C.a=5,b=4
D.a=5,b=5
71.設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是()。
A.X=Y+z+5,++YB.int(15.8%5)C.X=Y*5=X+ZD.X=25%5.0
72.若有以下說明和定義,以下敘述中錯(cuò)誤的是(
)。uniondt{
int
a;char
b;double
c;}data;A.兩個(gè)共用體變量之間可以相互賦值B.變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等C.程序段:data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000D.共用體在初始化時(shí)只能用第一個(gè)成員的類型進(jìn)行初始化
73.有以下程序
main()
{inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i;
for(i=0;i<3;i++)printf("%d",(++p)[i]);
}
程序運(yùn)行后的輸出結(jié)果是()。
A.012B.135C.234D.345
74.(38)索引屬于()
A.模式
B.內(nèi)模式
C.外模式
D.概念模式
75.以下程序的輸出結(jié)果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staticintx=1;x*=x+1;printf("%d",x);}
A.33B.22C.26D.25
76.設(shè)有如下三個(gè)關(guān)系表
下列操作中正確的是()。
A.T=RnSB.T=RUSC.T=R×SD.T=R/S
77.面向?qū)ο蠓椒ㄖ?,繼承是指()。
A.一組對象所具有的相似性質(zhì)B.一個(gè)對象具有另一個(gè)對象的性質(zhì)C.各對象之間的共同性質(zhì)D.類之間共享屬性和操作的機(jī)制
78.假定所有變量均已正確說明,下列程序段運(yùn)行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3
79.
80.
五、程序改錯(cuò)題(1題)81.以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出。請?jiān)跈M線上填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計(jì)題(1題)82.請編寫一個(gè)函數(shù),用來刪除字符串中的所有空格。例如,輸入abcdefgh,則輸出為abcdefgh。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.C
2.AA選項(xiàng)中“115L”表示長整型數(shù)據(jù)。B選項(xiàng)是八進(jìn)制常量的表示方法,但是在八進(jìn)制中不能含有數(shù)字8,所以B選項(xiàng)錯(cuò)誤。C選項(xiàng)中e后面應(yīng)該是整數(shù),而不能是小數(shù)1.5,所以C選項(xiàng)錯(cuò)誤。D選項(xiàng)中八進(jìn)制常量應(yīng)該是以數(shù)字“0”開始,而不是以字母“o”開始。故本題答案為A選項(xiàng)。
3.C
4.A
5.C
6.B關(guān)系具有以下7個(gè)性質(zhì)。①元組個(gè)數(shù)有限性:二維表中元組的個(gè)數(shù)是有限的。②元組的唯一性:二維表中任意兩個(gè)元組不能完全相同。③元組的次序無關(guān)性:二維表中元組的次序,即行的次序可以任意交換。④元組分量的原子性:二維表中元組的分量是不可分割的基本數(shù)據(jù)項(xiàng)。⑤屬性名唯一性:二維表中不同的屬性要有不同的屬性名。⑥屬性的次序無關(guān)性.二維表中屬性的次序可以任意交換。⑦分量值域的同一性:二維表屬性的分量具有與該屬性相同的值域,或者說列是同質(zhì)的。滿足以上7個(gè)性質(zhì)的二維表稱為關(guān)系,以二維表為基本結(jié)構(gòu)所建立的模型稱為關(guān)系模型。本題答案為B選項(xiàng)。
7.A本題考查數(shù)據(jù)結(jié)構(gòu)中二叉樹的性質(zhì)。二叉樹滿足如下一條性質(zhì),即:對任意一棵二叉樹,若終端結(jié)點(diǎn)(即葉子結(jié)點(diǎn))數(shù)為n0,而其度數(shù)為2的結(jié)點(diǎn)數(shù)為n2,則n0=n2+l。根據(jù)這條性質(zhì)可知,若二叉樹中有70個(gè)葉子結(jié)點(diǎn),則其度為2的結(jié)點(diǎn)數(shù)為70-1,即69個(gè)。二叉樹的總結(jié)點(diǎn)數(shù)是度為2、度為1和葉子結(jié)點(diǎn)的總和,因此,題目中的二叉樹總結(jié)點(diǎn)數(shù)為69+80+70,即219。因此,本題的正確答案是選項(xiàng)A。
8.C解析:數(shù)據(jù)處理的最小單位是數(shù)據(jù)項(xiàng);由若干數(shù)據(jù)項(xiàng)組成數(shù)據(jù)元素;而數(shù)據(jù)是指能夠被計(jì)算機(jī)識別、存儲和加工處理的信息載體;數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)之間的相互關(guān)系和數(shù)據(jù)運(yùn)算。故正確答案為選項(xiàng)C)。
9.A
10.B
11.A解析:在C語言中,動態(tài)存儲區(qū)域中存放的變量在使用時(shí)才分配內(nèi)存空間,函數(shù)調(diào)用時(shí)返回的地址和自動類局部變量等存放在動態(tài)存儲區(qū)域中。auto變量和register變量都屬于自動類局部變量,因此選項(xiàng)A正確。static說明的變量為靜態(tài)變量,靜態(tài)變量在內(nèi)存的靜態(tài)存儲中占據(jù)著永久的存儲單元,直至程序運(yùn)行結(jié)束。extern說明的變量為外部變量,屬于全局變量,全局變量在整個(gè)程序運(yùn)行期間都占用內(nèi)存空間。
12.A
13.D
14.B
15.C解析:本題中,“printf('%2d,%2d\\n',x,y)”表示以逗號隔開輸出兩個(gè)十進(jìn)制整數(shù),每個(gè)整數(shù)域?qū)捠?。而在C語言中規(guī)定:當(dāng)域?qū)捫∮趯?shí)際寬度時(shí)域?qū)挷黄鹱饔?,按?shí)際寬度輸出,因此最后的輸出值為102和10(y的初值012表示八進(jìn)制整數(shù)12,等于十進(jìn)制的10)。所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。
16.A
17.D
18.D
19.B
20.B
21.1212解析:本題的第—個(gè)for循環(huán)用于紿數(shù)組arr賦初值,第二個(gè)for循環(huán)用于求和運(yùn)算。由于第二個(gè)for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結(jié)果為12。
22.55解析:本題的關(guān)鍵在于if(!(i%5))printf('\\n),這句,即如果i可被5整除時(shí),則換行。i值為24,可以被5整除4次,并余4,因此,prnt函數(shù)共輸出5行,最后一行有4個(gè)數(shù)。
23.101,0解析:與運(yùn)算兩邊的語句必須同時(shí)為真時(shí),結(jié)果才為真。當(dāng)執(zhí)行完if((++a<0)&&!(b--<=0))時(shí),a,b的值已經(jīng)發(fā)生了變化。
24.8168,16解析:float(*p1)(float)是定義p1為指向函數(shù)的float型的指針變量。因此p1=f1;p2=f2;表示p1指向函數(shù)f1,p2指向函數(shù)f2,故所有y1=p2(p1(2.0))=f2(f1(2.0))=8;后面將p1與p2互換,y2=f1(f2(2.0))=16。
25.99解析:在主函數(shù)中函數(shù)f(f(3,4),f(3,5))的返回值賦給do函數(shù)的第一個(gè)參數(shù)為f(3,4)的返回值,函數(shù)f(3,4)返回值為(4-3)*3=3,f(3,5)返回值為(5-3)*3=6,那么函數(shù)f(f(3,4),f(3,5))等價(jià)于函數(shù)f(3,6)其返回值為(6-3)*3=9。因此d被賦值為9,所以輸出9。
26.11011111101111解析:本題通過除2取余法即可求出十進(jìn)制數(shù)111所
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【2025年存儲芯片發(fā)展趨勢:AI驅(qū)動市場需求激增 價(jià)格上行周期開啟】
- 預(yù)制梁板施工方案
- 智能交通系統(tǒng)施工方案
- 第08講 八上古詩詞【知識精研】中考語文一輪復(fù)習(xí)(廣東專用)
- 吉林清淤固化施工方案
- 東莞排水帶施工方案
- 2025年增城臨聘筆試試題及答案
- 2025年往年音樂學(xué)考試題及答案
- 2025年排序中考試題語文及答案
- 低碳行動方案設(shè)計(jì)
- 第一篇 專題一 第2講 牛頓運(yùn)動定律與直線運(yùn)動
- 規(guī)劃高中生涯模板
- 中國卒中學(xué)會急性缺血性卒中再灌注治療指南 (2024)解讀-指南解讀系列
- 第二單元 第二次工業(yè)革命和近代科學(xué)文化 說課稿 2024-2025學(xué)年統(tǒng)編版九年級歷史下冊
- 《電氣安全培訓(xùn)課件》
- 2025年結(jié)核病防治知識競賽題庫及答案(共117題)
- 高標(biāo)準(zhǔn)農(nóng)田施工組織設(shè)計(jì)
- TSDHCIA 016-2021 化工行業(yè)智能化水平評估規(guī)范
- 2025屆高考數(shù)學(xué)二輪復(fù)習(xí)備考策略和方向
- 安徽省“江淮十?!?025屆高三第三次模擬考試數(shù)學(xué)試卷含解析
- 物聯(lián)網(wǎng)安全漏洞挖掘與修復(fù)-洞察分析
評論
0/150
提交評論