![2021-2022年河北省唐山市全國計算機等級考試C語言程序設(shè)計_第1頁](http://file4.renrendoc.com/view/71f74503ccd3be6588276471479a8bd3/71f74503ccd3be6588276471479a8bd31.gif)
![2021-2022年河北省唐山市全國計算機等級考試C語言程序設(shè)計_第2頁](http://file4.renrendoc.com/view/71f74503ccd3be6588276471479a8bd3/71f74503ccd3be6588276471479a8bd32.gif)
![2021-2022年河北省唐山市全國計算機等級考試C語言程序設(shè)計_第3頁](http://file4.renrendoc.com/view/71f74503ccd3be6588276471479a8bd3/71f74503ccd3be6588276471479a8bd33.gif)
![2021-2022年河北省唐山市全國計算機等級考試C語言程序設(shè)計_第4頁](http://file4.renrendoc.com/view/71f74503ccd3be6588276471479a8bd3/71f74503ccd3be6588276471479a8bd34.gif)
![2021-2022年河北省唐山市全國計算機等級考試C語言程序設(shè)計_第5頁](http://file4.renrendoc.com/view/71f74503ccd3be6588276471479a8bd3/71f74503ccd3be6588276471479a8bd35.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021-2022年河北省唐山市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列敘述中錯誤的是()。A.在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致,
B.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的共享問題
C.數(shù)據(jù)庫設(shè)計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫
D.數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持
2.有以下程序#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,
3.以下程序的輸出結(jié)果是()。main(){inti,a[4][4]一{{1,3,5),{2,4,6},{3,5,7}};printf("%(1%d%d%d\n".a(chǎn)[O][3],a[1][2],a[2][1],a[3][0];}A.0650B.1470C.5430D.輸出值不定
4.下列程序的輸出結(jié)果是()。main(){inta=1,b=2;printf("%d,%d\n",--a,++b);}
A.1,2B.1,3C.0,2D.0,3
5.棧和隊列的共同特點是()。
A.都是先進(jìn)先出B.都是先進(jìn)后出C.只允許在端點處插入和刪除元素D.沒有共同點
6.以下敘述正確的是()。
A.“charc1,*c2,*c3[10];”是合法的變量定義語句
B.數(shù)組說明符的方括號中不能使用表達(dá)式
C.數(shù)組元素下標(biāo)可以是非整數(shù)
D.若有定義“chararray[4];”,則語句“printf(“%c”,array[“3”]);”是合法的
7.以下選項中,當(dāng)x為大于1的奇數(shù)時,值為0的表達(dá)式是A.x%2==1B.x/2C.x%2!=0D.x%2==0
8.
9.有以下程序段:charname[20】;intnum;scanf("name=%Snum=%d",name,&num);當(dāng)執(zhí)行上述程序段,并從鍵盤輸入:name=Lilimum=1001<回車>后,name的值為()。A.LiliB.name=LiliC.Lilinum=D.name=Lilinum=1001
10.以下程序的輸出結(jié)果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}
A.20B.21C.22D.23
11.一個函數(shù)返回值的類型是由()決定的。
A.return語句中表達(dá)式的類型B.定義函數(shù)時指定的函數(shù)類型C.在調(diào)用函數(shù)時臨時指定D.調(diào)用函數(shù)的主調(diào)函數(shù)的類型
12.在一個有向圖中,所有頂點的入度之和等于所有頂點的出度之和的()倍。A.A.1/2B.1C.2D.4
13.
14.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.11B.43C.57D.53
15.以下程序的輸出結(jié)果是()。main{intx=0.5;charz=‘a(chǎn)’;printf(“d\n”,(x&1)&&(z<‘z’));}A.0B.1C.2D.3
16.若某表最常用的操作是在最后一個結(jié)點之后插入一個結(jié)點或刪除最后一個結(jié)點,則采用()存儲方式最節(jié)省運算時間。
A.單鏈表B.給出表頭指針的單循環(huán)鏈表C.雙鏈表D.帶頭結(jié)點的雙循環(huán)鏈表
17.為了提高軟件模塊的獨立性,模塊之間最好是()。
A.控制耦合B.公共耦合C.內(nèi)容耦合D.數(shù)據(jù)耦合
18.檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。
A.確認(rèn)測試B.集成測試C.驗證測試D.驗收測試
19.對關(guān)系S和R進(jìn)行集合運算,結(jié)果中既包含S中的所有元組也包含R中的所有元組,這樣的集合運算稱為()
A.并運算B.交運算C.差運算D.積運算
20.下列程序的輸出結(jié)果是()。#include<stdio.h>main{inti;for(i=1;i<=10,i++){if((i*i>=20)&&(i*i<=100))break;}printf("%d\n",i*i;}A.49B.36C.25D.64
二、2.填空題(20題)21.在索引查找或分塊查找中,首先查找【】,然后再查找相應(yīng)的【】,整個索引查找的平均查找長度等于查找索引表的平均查找長度與查找相應(yīng)子表的平均查找長度之和。
22.以下程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{inta[5]={2,4,6,8,10},*p;
p=a;p++;
printf("%d",*p);
}
23.下列程序執(zhí)行后輸出的結(jié)果是【】。
structs
{intx,y;}data[2]={10,100,20,200};
main()
{
structs*p=data;
printf("%d\n",++(p->x));
}
24.僅依據(jù)規(guī)格說明書描述的程序功能來設(shè)計測試實例的方法稱為【】。
25.若輸入12、3、2、5、7,則以下程序的運行結(jié)果為【】。
intmax,min;
voidmax_min_value();
main()
{inti,number[5];
printf("輸入5個整數(shù);\n");
for(i=0;i<5;i++)scanf("%d",&number[i]);
maxminvalue(number,5);
printf("max=%d,min=%d\n",max,min);
getch();
}
voidmax_min_value(array,n)
intarray[],n;
{int*p;
max=min=*array;
for(p=array+1;p<array+n;p++)
if(*p>max)max=*p;
elseif(*p<min)min=*p;
}
26.設(shè)函數(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);
}
27.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。
28.設(shè)有以下定義和語句,則*(*(p+2)+1)的值為【】。
inta[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
29.以下程序的運行結(jié)果為【】。
main()
{inti,j,a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},b[4][3];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
b[j][i]=a[i][j];
for(i=0;i<4;i++)
{for(j=0;j<3;j++)
printf("%-3d",b[i][j]);
printf("\n");
}
}
30.解題方案的準(zhǔn)確而完整的描述稱為______。
31.一棵二叉樹中共有80個葉子結(jié)點與10個度為1的結(jié)點,則該二叉樹中的總結(jié)點數(shù)為【】。
32.函數(shù)調(diào)用語句:“fgets(buf,n,fp);”從fp指向的文件中讀入,n個字符放到buf字符數(shù)組中,函數(shù)返回值為______。
33.最簡單的交換排序方法是______。
34.算法的復(fù)雜度主要包括【】復(fù)雜度和空間復(fù)雜度。
35.在關(guān)系模型中,把數(shù)據(jù)看成是二維表,每一個二維表稱為一個【】。
36.以下程序段中,錯誤的行號是【】。①#include<stdio.h>②main()③{charstr[14];str[]={"IloveChina!"};④printf("%s",str);⑤}
37.下列程序的輸出結(jié)果是______。
main()
{inta[]={31,27,20,12,6,1},*p=a;
p++;
printf("%d\n",*(p+2));
}
38.若有如下定義:
int[]={11,24,56,19,29,39),*t=s;
則不移動指針t,且通過指針t引用數(shù)組中值為29的元素的表達(dá)式是【】。
39.若變量a,b已定義為int類型并賦值21和55,要求用printf函數(shù)以a=21,b=55的形式輸出,請寫出完整的的輸出語句()。
40.數(shù)據(jù)元素之間______的整體稱為邏輯結(jié)構(gòu)。
三、1.選擇題(20題)41.對于n個結(jié)點的單向鏈表(無表頭結(jié)點),需要指針單元的個數(shù)至少為______。
A.n-1B.nC.n+1D.2n
42.已知一棵二叉樹前序遍歷和中序遍歷分別為ABDEGCFH和DBGEACHF,則該二叉樹的后序遍歷為()。
A.GEDHFBCAB.DGEBHFCAC.ABCDEFGHD.ACBFEDHG
43.調(diào)用gets和puts函數(shù)時,必須包含的頭文件是
A.stdio.hB.stdlib.hC.defineD.以上都不對
44.下列函數(shù)的運行結(jié)果是
main()
{inti=2,p;
intj,k;
j=i;k=++i;p=f(j,k);
printf("%d",p);}
intf(inta,intb)
{intc;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
return(c);}
A.-1B.1C.2D.編譯出錯,無法運行
45.下列二維數(shù)組初始化語句中,不正確的是()。
A.intb[][2]={1,2,3,4,5,6,7};
B.intb[3][5]={0,0,0};
C.intb[][4]={{1,2},{3,4,5},{6}};
D.intb[3][2]={(1,2),(3,4),(5,6)};
46.設(shè)有下列二叉樹:對此二叉樹前序遍歷的結(jié)果為()
A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY
47.以下能正確表示x在-5到-1或5到1范圍(含5和1)內(nèi),值為“真”的表達(dá)式是()
A.(x>=-5)||(x<=-1)&&(x<=5)&&(x>=1)
B.!(x>=-5||x<=-1&&x<=5||x>=1)
C.x<-5&&x>-1||x<1&&x>5
D.(x<-5)||(x>-1&&x<1)||(x>5)
48.以下選項中,合法的一組C語言數(shù)值常量是()。
A.028.5e-3-0xf
B.12.0X0234.5e0
C.1774e1.50abe
D.0x8A10,0003.e5
49.設(shè)有以下說明語句typedefstruct{intn;charch[8];}PER;則下面敘述中正確的是
A.PER是結(jié)構(gòu)體變量名
B.PER是結(jié)構(gòu)體類型名
C.typedefstruct是結(jié)構(gòu)體類型
D.struct是結(jié)構(gòu)體類型名
50.下列有關(guān)格式輸入函數(shù)scanf的敘述中正確的是()
A.輸入項可以是C語言中規(guī)定的任何變量,并且在任何變量前必須加地址符號“&”
B.可以只有格式控制項,沒有地址列表項
C.在輸入數(shù)據(jù)時,必須規(guī)定精度。如:scanf("%4.2f",&d);
D.當(dāng)輸入數(shù)據(jù)時,必須指明變量地址
51.有以下程序:main(){unsignedchara,b,c;a=0x3;b=a│0x8;c=b<<1;printf("%d%d\n",b,C);}程序運行后的輸出結(jié)果是()。
A.-1112B.-19C.1224D.1122
52.如果要限制一個變量,命名其只能為本文件所用,必須通過()來實現(xiàn)。
A.外部變量說明B.靜態(tài)內(nèi)部變量C.靜態(tài)外部變量D.局部變量說明
53.有以下函數(shù)intaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}以下關(guān)于aaa函數(shù)的功能的敘述正確的是A.求字符串s的長度B.比較兩個串的大小C.將串s復(fù)制到串tD.求字符串s所占字節(jié)數(shù)
54.設(shè)有定義:charp[]={‘1’,‘2’,‘3’,},*q=p;,以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達(dá)式是______。
A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])
55.下列程序的輸出結(jié)果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=ifor(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}
A.20B.21C.22D.23
56.有如下程序
main()
{floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x<10.0)y=1.0/x;
elsey=1.0;
printf("%f\n",y);}
該程序的輸出結(jié)果是
A.0.000000B.0.250000C.0.500000D.1.000000
57.算法的時間復(fù)雜度是指______。
A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運算次數(shù)D.算法程序中的指令條數(shù)
58.在調(diào)用函數(shù)時,如果實參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是______。
A.地址傳遞B.單向值傳遞C.由實參傳給形參。再由形參傳同實參D.傳遞方式由用戶指定
59.若輸入1.5、2.5,則以下程序的運行結(jié)果為______。main(){floata,b;intc;scanf("%f,%f,",&a,&b);c=max(a,b);printf("%d",c);}max(x,y)floatx,y;{floatz;z=x>y?x:y;return(z);}
A.1.5B.2.5C.2D.3
60.下列敘述中錯誤的是()。
A.線性表是由n個元素組成的一個有限序列
B.線性表是一種線性結(jié)構(gòu)
C.線性表的所有結(jié)點有且僅有一個前件和后件
D.線性表可以是空表
四、選擇題(20題)61.
62.
63.
64.設(shè)有如下定義:
若要使P指向data中的n域,正確的賦值語句是()。
A.
B.
C.
D.
65.設(shè)有以下語句:
其中0≤k<5。以下不是對字符串的正確引用的是()。
A.*strpB.strp[k]C.str[k]D.strp
66.有以下程序:
程序運行后的輸出結(jié)果是()。
A.12B.14C.1234D.123456
67.若有以下程序:
上面程序的輸出結(jié)果是()。
A.5B.7C.1D.3
68.下列排序方法中,最壞情況下比較次數(shù)最少的是()。
A.簡單選擇排序B.冒泡排序C.堆排序D.直接插入排序
69.已知intx=(1,2,3,4);變量x的值是()。
A.1B.2C.3D.4
70.若變量x、y已正確定義并賦值,以下符合C語言語法的表達(dá)式是()。
A.X+1=yB.++X.Y=X一一C.X=X+10=X+YD.double(X)/10
71.若有定義“inta=5,b=7;”,則表達(dá)式a%=(b%2)運算后,a的值為()。
A.0B.1C.11D.3
72.
下列程序的輸出結(jié)果是()。
main
{intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7)
if(p[i]%2)j+=p[i];
printf("%d\n",j);
}
A.42B.45C.56D.60
73.
74.
75.用樹形結(jié)構(gòu)來表示實體之間聯(lián)系的模型稱為()。
A.關(guān)系模型B.層次模型C.網(wǎng)狀模型D.數(shù)據(jù)模型
76.若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是_______。A.′a′<=c<=′z′
B.(c>=′a′)||(c<=′z′)
C.(′a′=C)
D.(c>=′a′)&&(c<=′z′)
77.若有以下定義和語句:“doubler=99,*p=&r;*P=r;”,則以下正確的敘述是()。
A.兩個*p含義相同,都說明給指針變量p賦值
B.在“doubler=99,*p=&r;”中,把r的地址賦值給了P所指的存儲單元
C.語句“*p=r;”把變量r的值賦給指針變量P
D.語句“*p=r;”取變量r的值放回r中
78.有以下程序
#include<stdio.h>
main()
{charcl,c2;
c1=A+8-4
c2=A+8-5;
printf("%C,%d\n",cl,c2);
}
已知字母A的ASCIl碼為65,程序運行后的輸出結(jié)果是()。
A.E,69B.D,69C.E,DD.輸出無定值
79.有以下程序:
voidmain()
{intk=0,n=0;
while(k<5)
{switch(k)
{default:break;
case1:n+=k;
case2:
case3:n+=k;
}
k++;
}
printf("%d\n",n);
}
程序運行后的輸出結(jié)果是()。
A)0B)4
C)6D)7
80.由兩個棧共享一個存儲空間的好處是______。A.A.減少存取時間,降低下溢發(fā)生的概率
B.節(jié)省存儲空間,降低上溢發(fā)生的概率
C.減少存取時間,降低上溢發(fā)生的概率
D.節(jié)省存儲空間,降低下溢發(fā)生的概率
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:首先把b所指字符串中的字符按逆序存放,然后將str1所指字符串中的字符和Str2所指字符串中的字符,按排列的順序交叉合并到str所指數(shù)組中,過長的剩余字符接在str所指數(shù)組的尾部。例如,當(dāng)str1所指字符串中的內(nèi)容為ABCDEFG,str2所指字符串中的內(nèi)容為1234時,str所指數(shù)組中的內(nèi)容應(yīng)該為A483C2D1EFG;而當(dāng)str1所指字符串中的內(nèi)容為1234,str2所指字符串中的內(nèi)容為ABCEDFG時,str所指數(shù)組中的內(nèi)容應(yīng)該為1G2F31:4DCBA。
請修改程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio。h>
#include<string.h>
voidproc(char*strl,char*str2,char*str){
inti,j;charch;
i=0;j=strleu(str2)-1;
//****found****
while(i>j)
{
ch=str2[i];str2[i]=str2[j];str2[j]=ch;
i++;j--;
}
while(*str1||*str2)
{
if(*str1){*str=*str1;str++;str1++;)
if(*str2){*str=*str2;str++;str2++;)
}
//****found****
*str=0:
}
voidmain
{
chars1[100],s2[100],t[200];
system("CLS");
printf("\nEnters1string:");
scanf("%s",sl);
printf("\nEnters2string:");
scanf("%s",s2);
proc(s1,s2,t);
printf("\nTheresultis:%s\n",t);
}
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是將M行N列的二維數(shù)組中的數(shù)據(jù),按列的順序依次存放到一維數(shù)組中,將一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>voidfun(int(*s)[10],int*b,int*n,intmm,intnn){}main(){intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;inta[100]={0},n=0;printf(“Thematrix:\n”);for(i=0;i<3;i++){for(j=0;j<4;j++)printf(“%3d”,w[i][j]);printf(“\n”);}fun(w,a,&n,3,4);printf(“TheAarray:\n”);for(i=0;i<n;i++)<p=""></n;i++)<>printf(“%3d”,a[i]);}
參考答案
1.A解析:本題考查數(shù)據(jù)庫系統(tǒng)的基本概念和知識。數(shù)據(jù)的邏輯結(jié)構(gòu),是數(shù)據(jù)間關(guān)系的描述,它只抽象地反映數(shù)據(jù)元素之間的邏輯關(guān)系,而不管其在計算機中的存儲方式。數(shù)據(jù)的存儲結(jié)構(gòu),又叫物理結(jié)構(gòu),是邏輯結(jié)構(gòu)在計算機存儲器里的實現(xiàn)。這兩者之間沒有必然的聯(lián)系。因此,選項A的說法是錯誤的。
數(shù)據(jù)庫可以看成是長期存儲在計算機內(nèi)的、大量的、有結(jié)構(gòu)的和可共享的數(shù)據(jù)集合。因此,數(shù)據(jù)庫具有為各種用戶所共享的特點。不同的用戶可以使用同一個數(shù)據(jù)庫,可以取出它們所需要的子集,而且容許子集任意重疊。數(shù)據(jù)庫的根本目標(biāo)是要解決數(shù)據(jù)的共享問題。因此,選項B的說法是正確的。
數(shù)據(jù)庫設(shè)計是在數(shù)據(jù)庫管理系統(tǒng)的支持下,按照應(yīng)用的要求,設(shè)計一個結(jié)構(gòu)合理、使用方便、效率較高的數(shù)據(jù)庫及其應(yīng)用系統(tǒng)。數(shù)據(jù)庫設(shè)計包含兩方面的內(nèi)容:一是結(jié)構(gòu)設(shè)計,也就是設(shè)計數(shù)據(jù)庫框架或數(shù)據(jù)庫結(jié)構(gòu);二是行為設(shè)計,即設(shè)計基于數(shù)據(jù)庫的各類應(yīng)用程序、事務(wù)等。因此,選項C的說法是錯誤的。
數(shù)據(jù)庫系統(tǒng)除了數(shù)據(jù)庫管理軟件之外,還必須有其他相關(guān)軟件的支持。這些軟件包括操作系統(tǒng)、編譯系統(tǒng)、應(yīng)用軟件開發(fā)工具等。對于大型的多用戶數(shù)據(jù)庫系統(tǒng)和網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng),還需要多用戶系統(tǒng)軟件和網(wǎng)絡(luò)系統(tǒng)軟件的支持。因此,選項D的說法是正確的。因此,本題的正確答案是選項A。
2.D程序的結(jié)構(gòu)體數(shù)組a的元素形成了一個單向的循環(huán)鏈表,每個元素的指針成員都指向下一個元素的地址。
3.A當(dāng)所賦的值不夠其列的寬度時,系統(tǒng)在其后自動補0,因此a[0][3]=0,a[1][2]=6,a[2][1]=5,a[3][0]=0,故選擇A選項。
4.D解析:本題主要考查自加(++)、自減(--)運算符的使用?!?+i,--i”在使用i之前,先使i的值加1或者減1,然后再使用i此時的值參與運算;“i++,i--”是在使用i參與表達(dá)式運算之后,再使i的值加1或者減1。本題中--a和++b是先執(zhí)行a減1和b加1操作,再輸出表達(dá)式的值。
5.C解析:考查棧和隊列概念的掌握。棧和隊列都是一種特殊的操作受限的線性表,只允許在端點處進(jìn)行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進(jìn)行插入或刪除操作,是一種'后進(jìn)先出'的線性表;而隊列只允許在表的一端進(jìn)行插入操作,在另一端進(jìn)行刪除操作,是一種'先進(jìn)先出'的線性表。模塊之間的耦合程度反映了模塊的獨立性,也反映了系統(tǒng)分解后的復(fù)雜程度。按照耦合程度從弱到強,可以將其分成5級,分別是:數(shù)據(jù)耦合、同構(gòu)耦合、控制耦合、公用耦合和內(nèi)容耦合。選項C),沒有這種耦合方式。
6.AC語言規(guī)定定義數(shù)組時,數(shù)組的長度必須是整型常量,數(shù)組說明符的方括號中表達(dá)式只要是常量即合法,因此選項B錯誤。C語言規(guī)定,數(shù)組元素下標(biāo)必須是非負(fù)整數(shù),因此選項C錯誤。選項D中,“chararray[4]”數(shù)組的長度為4,“army[“3”]”中“3”是常量字符串,與C語言規(guī)定數(shù)組的下標(biāo)必須是非負(fù)整數(shù)不符。故本題答案為A選項。
7.D解析:因為x的值為大于1的奇數(shù),所以x除以2的余數(shù)等于1,因此,選項A)、C)中表達(dá)式的結(jié)果為真,不為0;對于選項B)來說,x除以2的商不會等于0;選項D)中表達(dá)式的結(jié)果為假,即等于0。
8.B
9.A考查簡單的C程序。由題可知,程序中輸入name的值為Lili,所以輸出的必定是Lili,答案選擇A。
10.B解析:第1個循環(huán)對數(shù)組a進(jìn)行賦值:第2個循環(huán)對數(shù)組p進(jìn)行賦值;第3個循環(huán)對k進(jìn)行累加,k的初值等于5,第1次循環(huán),k=k+p[0]*2=5+0*2=5,第2次循環(huán),k=k+p[1]*2=5+2*2=9,第3次循環(huán),k=k+p[2]*2=9+6*2=21并輸出。
11.B
12.B
13.A
14.D函數(shù)f是一個遞歸函數(shù)。當(dāng)x>=2時,遞歸調(diào)用自身,返回值為x*f(x-l)+(x-l)*f(x-2);3x<2時,返回值為1。main函數(shù)中,調(diào)用函數(shù)f傳入4,所以y的值是f(4)。f(4)等價于4*f(3)+3*f(2);f(3)等價于3*f(2)+2*f(1);f(2)等價于2*f(1)+1*f(0);f(0)、f(1)等價于1。綜上:f(2)等于3,f(3)等于11,f(4)等于53。本題答案為D選項。
15.B(x&1)&&(z<‘z’)=(0.5&1)&&(‘a(chǎn)’<‘z’)=1&&1=1,故選擇B選項。
16.D
17.D解析:耦合性與內(nèi)聚性是模塊獨立性的兩個定性標(biāo)準(zhǔn),是互相關(guān)聯(lián)的。在程序設(shè)計中,各模塊間的內(nèi)聚性越強,則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚、低耦合,有利于提高模塊的獨立性。
18.A本題主要考查軟件測試的基本知識。軟件測試的步驟可分為單元測試(模塊測試)、集成測試、確認(rèn)測試和系統(tǒng)測試。
(1)單元測試是針對每個模塊進(jìn)行的測試,它可從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計測試用例,多個模塊可以平行、對立地測試。單元測試主要用于發(fā)現(xiàn)詳細(xì)設(shè)計和編程時犯下的錯誤。單元測試多采用白盒測試,輔之以黑盒測試。
(2)集成測試是在單元測試的基礎(chǔ)上,根據(jù)模塊結(jié)構(gòu)圖將各個模塊連接起來,必須精心計劃,應(yīng)提交集成測試計劃、集成測試規(guī)格說明和集成測試分析報告。主要目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的問題。集成測試可以發(fā)現(xiàn)概要設(shè)計時犯的錯誤。
(3)確認(rèn)測試用于驗證軟件的功能和性能及其他特性是否與用戶的要求一致。確認(rèn)測試主要用于發(fā)現(xiàn)需求分析時犯下的錯誤,一般使用黑盒法測試,以表明軟件符合需求說明書的要求,應(yīng)該仔細(xì)設(shè)計測試用例和測試過程。確認(rèn)測試必須有用戶參加,或以用戶為主,用戶應(yīng)參與設(shè)計測試用例,通常情況下,主要使用生產(chǎn)中的實際數(shù)據(jù)進(jìn)行測試,測試數(shù)據(jù)通過用戶接口輸入。
(4)系統(tǒng)測試是將已經(jīng)通過確認(rèn)測試的軟件,作為整個計算機系統(tǒng)的元素與計算機硬件、外設(shè)和網(wǎng)絡(luò)等其他因素結(jié)合在一起,進(jìn)行一系列的組裝測試和確認(rèn)測試。系統(tǒng)測試的目的是通過與系統(tǒng)的需求定義做比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合的地方。系統(tǒng)測試可以發(fā)現(xiàn)問題定義時犯下的錯誤。
19.AA)【解析】關(guān)系的并運算是指由結(jié)構(gòu)相同的兩個關(guān)系合并,形成一個新的關(guān)系,新關(guān)系中包含兩個關(guān)系中的所有元組。
20.C本題考查for循環(huán)及if語句。當(dāng)執(zhí)行到第一個滿足(i*i>一20)&&(i*i<=100)這個條件的i出現(xiàn)時,break跳出循環(huán),執(zhí)行下列的printf語句。
21.索引表塊索引表\r\n塊
22.指針P指向數(shù)組a的首地址,執(zhí)行語句p++;后p指向數(shù)組a的第2個元素的地址,即a[1]的地址,因此*p=a[1]=4。\r\n\r\n
23.1111解析:程序中結(jié)構(gòu)體數(shù)組data首地址(即&data[0])賦值給結(jié)構(gòu)體指針變量p,++(P->x)表示先將p所指向的結(jié)構(gòu)體變量的成員x值加1,然后將此x(即data[0].x)輸出。
24.黑箱法黑箱法
25.max=12min=2
26.findbigfindbig解析:f是指向函數(shù)的指針變量,根據(jù)題意要求,空格處應(yīng)填入findbig。
本題目考查:C語言中指向函數(shù)的指針變量定義的一般形式為;
數(shù)據(jù)類型標(biāo)識符(*指針變量名)();
“數(shù)據(jù)類型標(biāo)識符”表示函數(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ù)。
27.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的管理機構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等。
28.6060解析:程序中定義a是一個3行2列的二維數(shù)組,p是指向兩個元素的一維數(shù)組指針,并讓p指向二維數(shù)組a的首行。則代碼*(*(p+2)+1)中的p+2指向二維數(shù)組a的第三行a[2],*(p+2)指向a[2[]0],*(p+2)+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60。
29.159261037114812159\r\n2610\r\n3711\r\n4812解析:程序的功能是將一個二維數(shù)組的行和列元素互換,存到另一個二維數(shù)組中。
30.算法算法解析:算法是指對解題方案的準(zhǔn)確而完整的描述。
31.179179解析:在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中的二叉樹有80個葉子結(jié)點,因此,該二叉樹有80-1=79個度為2的結(jié)點;又知本題中的二叉樹有10個度為1的結(jié)點。因此,本題中的二叉樹總結(jié)點數(shù)為:葉子結(jié)點數(shù)+度為1的結(jié)點數(shù)+度為2的結(jié)點數(shù)=80+10+79=179
32.buf的首地址buf的首地址解析:考查fgets()函數(shù)的功能,fgets()函數(shù)用來從文件中讀入字符串。調(diào)用格式為:fgets(buf,n,fp)。此處,fp是文件指針,buf是存放字符串的起始地址,n是一個int型變量。調(diào)用函數(shù)fgets()時,最多能讀入n-1個字符,系統(tǒng)自動在最后加字符串結(jié)束標(biāo)志,并以buf作為函數(shù)值返回。
33.冒泡排序冒泡排序解析:交換排序是指借助數(shù)據(jù)元素之間的互相交換進(jìn)行排序的一種方法。冒泡排序是一種最簡單的交換排序方法,它是通過相鄰元素之間的相互交換逐步將線性表變成有序。
34.時間時間解析:算法的復(fù)雜度主要指時間復(fù)雜度和空間復(fù)雜度。所謂算法的時間復(fù)雜度,是指執(zhí)行算法所需要的計算工作量;算法的空間復(fù)雜度,一般是指執(zhí)行這個算法所需要的內(nèi)存空間。
35.關(guān)系關(guān)系解析:在數(shù)據(jù)庫中,一個表就是一個關(guān)系。一個關(guān)系的邏輯結(jié)構(gòu)就是一張二維表。
36.③數(shù)組可以在定義時整體賦初值,但不能在賦值語句中整體賦初值。因此,可將第三行改為charstr[14]={"IloveChina!"};
37.1212解析:本題簽考查如何用指針引用數(shù)組元素。分析程序,首先定義了一個指向數(shù)組a的指針p,p指向數(shù)組的首地址,通過p++,將p指向a[1],p+2是將指針后移2位指向a[3],*(p+2)即是取a[3)的值12。
38.*(t+4)*(t+4)解析:本題定義了指針變量t,并用數(shù)組s的首地址給它賦初值。t+4代表數(shù)組第6個元素的地址,*(t+4)是取得該地址中的值即29,而此時并沒有移動指針t。
39.printf(“a=%db=%d”aB);printf(“a=%d,b=%d”,a,B);解析:printf函數(shù)的一般格式為:“printf(格式控制,輸出表列)”。
40.邏輯關(guān)系邏輯關(guān)系
41.C解析:在n個結(jié)點的單向鏈表(無表頭結(jié)點)中,每個結(jié)點都有一個指針單元(即指針域),加上頭指針,至少需要n+1個指針單元。
42.B遍歷是按照一定規(guī)則對樹中全部結(jié)點逐一訪問的方法。二叉樹可由根結(jié)點、左子樹和右子樹三個部分組成。根據(jù)對根結(jié)點訪問的先后順序,可將遍歷方法分為先序遍歷、中序遍歷和后序遍歷三種。先序遍歷首先訪問根結(jié)點,再先序遍歷左子樹,最后先序遍歷右子樹,可見遍歷是一個遞歸的過程。求樹的遍歷這種問題的關(guān)鍵在于認(rèn)清每棵子樹的根結(jié)點的訪問順序。題目給出了一棵樹的先序遍歷和中序遍歷的結(jié)點順序,先序遍歷的第一個結(jié)點為整棵樹的根結(jié)點,即根結(jié)點為A,而在中序遍歷的順序中,結(jié)點A的前面還有DBGE四個結(jié)點,表示這四個結(jié)點構(gòu)成以A為結(jié)點的二叉樹的左子樹,同理,中序遍歷中A結(jié)點后面的CHF三個結(jié)點構(gòu)成以A為結(jié)點的二叉樹的右子樹。于是原來的對一棵二叉樹的分析變?yōu)閷υ摱鏄涞淖笥易訕涞姆治觥R宰笞訕錇槔?,左子樹結(jié)點的先序遍歷為BDEG,中序遍歷為DBGE,該子樹的根結(jié)點為B,B結(jié)點的左子樹為一個結(jié)點D,右子樹為以E為根結(jié)點,結(jié)點G是E的左孩子。同理,可對CHF三個結(jié)點進(jìn)行分析。
最后得到整棵樹的結(jié)構(gòu)后,按照后序遍歷寫出所有結(jié)點的順序:DGEBHFCA。
43.A解析:gets函數(shù)和puts函數(shù)是庫函數(shù),必須包含的頭文件是stdio.h。
44.A解析:函數(shù)調(diào)用相當(dāng)于f(2,3),程序運算應(yīng)得結(jié)果為'-1'。
45.D解析:在對二維數(shù)組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0;C語言規(guī)定,對于二維數(shù)組,只可以省略第1個方括號中的常量表達(dá)式,而不能省略第2個方括號中的常量表達(dá)式;賦的初值不能多于事先定義好的數(shù)組元素個數(shù)。
在選項D)賦值表達(dá)式中,對每一維的元素賦初值應(yīng)用{},而不是()。
46.B解析:所謂二叉樹的前序遍歷(DLR)是指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這3者中,首先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹,并且,在遍歷左右子樹時,上述規(guī)則同樣適用,即“根-左-右”。故該二叉樹的前序遍歷結(jié)果為“ATBZXCYP”。對于本題,若使用后序遍歷和中序遍歷的結(jié)果分別為“ZBTYCPXA”和“TZBACYXP”。
47.A
48.B解析:選項A中,028是八進(jìn)制形式,但后面跟的8不在0~7之內(nèi),所以非法;選項C中,4e1.5是指數(shù)形式,但e后面所跟的不是整數(shù),所以非法;選項D中,10,000中不能有“,”,所以非法。故本題應(yīng)該選擇B。
49.B解析:本題中,typedef聲明新的類型名PER來代替已有的類型名,PER代表上面指定的一個結(jié)構(gòu)體類型,此時,也可以用PER來定義變量。
50.D解析:如果是指針型變量或數(shù)組名,則變量前不加地址符號&,所以選項A的說法有誤。必須有地址列表項才能實現(xiàn)正確輸入,所以選項B的說法有誤。在輸入數(shù)據(jù)時,不可以指定實型數(shù)據(jù)的精度,所以選項C的說法有誤。只有選項D的說法正確。
51.D解析:將a的值轉(zhuǎn)換為二進(jìn)制位:00000011,再與0x8的二進(jìn)制“00001000”位與,得到結(jié)果“00001011”賦值給b,b的值為11,再將b左移一位得到;00010110,賦值給c,c的值為22,所以最后輸出的b,c的值位11,22。所以4個選項中D正確。
52.C
53.A解析:aaa()函數(shù)中,首先定義了一個字符指針t指向形參s,然后通過一個while循環(huán)讓指針\u3000t不斷遞增,直到t指向字符串結(jié)束標(biāo)志處。當(dāng)t指向結(jié)束標(biāo)志處時,由于后綴++運算符的原因,它還會被再遞增1,所以接卜來的t--;語句讓它回到結(jié)束標(biāo)志處。最后返回t-s,因此s還是指向字符串第1個字符處,而t指向了字符串結(jié)尾,故返回值為字符串的長度值。
54.A解析:本題考查的重點是sizeof()的運用。sizeof用于返回其操作數(shù)(變量、類型)相對應(yīng)數(shù)據(jù)類型的字節(jié)數(shù)。因此,選項A是錯誤的,因為p是一個地址,它既不是一個數(shù)據(jù)類型,也不是數(shù)據(jù)變量。
55.B
56.C解析:該題目測驗考生對if...elseif結(jié)構(gòu)的理解,比較簡單。x的值滿足x<10.0的關(guān)系,所以程序?qū)?zhí)行y=1.0/x;語句,y的值應(yīng)該等于0.5。最后,用printf函數(shù)輸出時,%f的輸出格式為小數(shù)點后保留6位。
57.C解析:算法的時間復(fù)雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算的工具以及程序員的水平無關(guān)。選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤,因為算法所編寫的程序長度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項D錯誤,因為根據(jù)一個算法所編制出的程序之中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。所以,本題正確答案為C。
58.B解析:本題考查函數(shù)調(diào)用時的數(shù)據(jù)流向問題。簡單變量只能實現(xiàn)單向的值傳遞。在調(diào)用函數(shù)時,通常在主調(diào)函數(shù)和被調(diào)函數(shù)之間有數(shù)據(jù)傳遞關(guān)系。在定義函數(shù)時,函數(shù)名后面括號中的變量名稱為“形參”;在調(diào)用函數(shù)時,函數(shù)名后面括號中的變量名稱為“實參”。有關(guān)實參和形參的說明如下:(1)形參在函數(shù)未被調(diào)用時,不占用存儲單元,只有在發(fā)生函數(shù)調(diào)用時形參才被分配內(nèi)存空間,函數(shù)調(diào)用結(jié)束后,釋放形參所占的內(nèi)存空間。(2)在被定義的函數(shù)中,必須指定形參的類型。(3)實參可以是常量、變量或表達(dá)式。(4)宴參與形參的類型應(yīng)一致。(5)如果形參是簡單變量,實參對形參的數(shù)據(jù)傳遞是按值傳遞,即單向傳遞,只能由實參傳給形參,不能由形參傳回來給實參。如果形參是地址變量,實參對形參的數(shù)據(jù)傳遞是按地址傳遞,可以實現(xiàn)雙向傳遞,既能由實參傳給形參,又能由形參傳回來給實參。
59.C
60.CC.【解析】線性表是一種線性結(jié)構(gòu),由n(n≥0)個元素組成,所以線性表可以是空表。但是在線性表中,第一個結(jié)點沒有前件,最后一個結(jié)點沒有后件,其他結(jié)點有且只有一個前件和后件,所以選項C.是錯誤的。
61.A
62.B
63.C
64.C本題主要考查了結(jié)構(gòu)體變量引用成員數(shù)據(jù)的方法,主要有以下兩種:結(jié)構(gòu)體變量名.成員名或結(jié)構(gòu)體指針_>成員名。
65.Dstrp是一個指針數(shù)組名,即它是一個指向指針的指針,strp不是對字符串的引用。
66.D本題考查的是文件的綜合應(yīng)用。本題首先以創(chuàng)建方式打開文件”d2.dat”,兩次調(diào)用fprintf函數(shù)把a[O],a[1],a[2],a[3],a[4],a[5]的值寫到文件”d2.d8t”中,文件”d2.dat”的內(nèi)容為:1,2,3<回車>4,5,6。然后把該文件關(guān)閉再以只讀方式打開,文件位置指針指向文件頭,再通過fs-canf函數(shù)從中讀取兩個整數(shù)到k和n中,由于格式符之間無間隔,因此輸入數(shù)據(jù)可以用回車隔開,故輸入的k的值為123,n的值為456。
67.C在c語言中,數(shù)組元素下標(biāo)是從0開始的;指針變量P指向數(shù)組的首地址。for循環(huán)語句中,指針變量P始終指向數(shù)組的首地址,因而執(zhí)行循環(huán)賦值語句后數(shù)組各元素的值均變?yōu)?。
68.C\n在最壞情況下,冒泡排序、簡單選擇排序和直接插入排序需要的比較次數(shù)都是n(n一1)/2,堆排序需要比較的次數(shù)為nlog2n,這也是堆排序的最大優(yōu)點。
\n
69.D逗號表達(dá)式的值,結(jié)果為最后一個表達(dá)式的值。即4.
70.BA選項中不能將變量Y賦給表達(dá)式,c選項中錯誤與A選項一樣,D選項中強制類型轉(zhuǎn)換表達(dá)式應(yīng)寫成(doub1e)x/10。
71.A本題考查“%”運算符的使用。運算符“%”是整數(shù)除法的余數(shù)。本題中表達(dá)式a%=(b%2)等價于a=a%(b%2)=5%(7%2)=5%1=0。
72.B
\nC語言中,數(shù)組的下標(biāo)默認(rèn)為0,因此數(shù)組P的下標(biāo)從0開始,所以p[8]的范圍為0~7。第l次循環(huán)i=0,執(zhí)行循環(huán),得出i=1,因此p[i]為p[1]=12,12%2=0,不執(zhí)行后面的語句;接著進(jìn)行第2次循環(huán),此時i=1,小于7執(zhí)行循環(huán),并且i自加,得i=2,因此p[i]為p[2]=13,13%2=1,執(zhí)行后面的語句;依此類推最后退出循環(huán)。最后j的值為:j=13+15+17=45。
\n
73.C
74.A
75.B解析:在數(shù)據(jù)庫系統(tǒng)中,由于采用的數(shù)據(jù)模型不同,相應(yīng)的數(shù)據(jù)庫管理系統(tǒng)(DBMS)也不同。目前常用的數(shù)據(jù)模型有3種:層次模型、網(wǎng)狀模型和關(guān)系模型。在層次模型中,實體之間的聯(lián)系是用樹結(jié)構(gòu)來表示的,其中實體集(記錄型)是樹中的結(jié)點,而樹中各結(jié)點之間的連線表示它們之間的關(guān)系。所以,本題的正確答案是B。
76.D
77.B在定義*p=&r時,是表示r的地址賦給了p所指的存儲單元,因此選項B正確。
78.A\n本值輸出兩個值,%c為輸出一個字母,0/4d輸出一個數(shù)字?!癆”的ASCIl碼為65,再加4之后為69,也就是字母E,所以本題A正確。
\n
79.D首先k=0,執(zhí)行default,退出switch,k++,執(zhí)行case1,2,3后,n=2,k++,執(zhí)行case2,3,n=4,k++,執(zhí)行case3,n=7.執(zhí)行k++,執(zhí)行default,k++,退出循環(huán)。
80.B棧是一種只允許在棧頂進(jìn)行插入和刪除操作的線性表,使兩個棧共享同一存儲空間的是雙向棧,即將兩個棧的棧頂設(shè)在向量空間的兩端,讓兩個棧各自向中間空間延伸。當(dāng)其中一個棧的元素較多,超過向量空間的一半時,只要另一個棧的元素不多,那么,前者就可以占用后者的部分存儲空間。只有當(dāng)整個向量空間被兩個棧占滿(即兩個棧底相遇)時,才會發(fā)生上溢。使用這種棧的優(yōu)點是可以有效地節(jié)省存取空間,降低上溢發(fā)生的概率,而對于存取時間并沒有影響。
81.\n\t(1)錯誤:while(i>j)
\n正確:while(i<j)
\n(2)錯誤:*str=0;
\n正確:*str=\0;
\n【解析】由函數(shù)proc可知,變量i和j分別存放的是字符串str前面和后面第i個字符的位置,當(dāng)i<j時,兩個位置的字符交換。因此,“while(i>j)”應(yīng)改為“while(i<j)”;交叉合并完成后,要為新的字符串添加結(jié)束符,因此,“*str=0;”應(yīng)改為“*str=\0;”,\n
82.voidfun(int(*s)[10],int*b,int*n,intmm,intnn){inti,j;for(j=0;j<nn;j++)/*將二維數(shù)組中的數(shù)據(jù)按列的順序依次存入一維數(shù)組中*/for(i=0;i<=""p="">{b[*n]=*(*(s+i)+j);*n=*n+1;/*通過指針返回元素個數(shù)*/}}題目要求實現(xiàn)將二維數(shù)組元素存入一維數(shù)組。使用for循環(huán)語句來控制二維數(shù)組元素的下標(biāo),同時使用指針變量配合操作??梢杂脙蓚€循環(huán)來處理問題,由于是按列的順序取出,因此第1個循環(huán)用于控制列下標(biāo),第2個循環(huán)用于控制行下標(biāo)。2021-2022年河北省唐山市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列敘述中錯誤的是()。A.在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致,
B.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的共享問題
C.數(shù)據(jù)庫設(shè)計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫
D.數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持
2.有以下程序#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,
3.以下程序的輸出結(jié)果是()。main(){inti,a[4][4]一{{1,3,5),{2,4,6},{3,5,7}};printf("%(1%d%d%d\n".a(chǎn)[O][3],a[1][2],a[2][1],a[3][0];}A.0650B.1470C.5430D.輸出值不定
4.下列程序的輸出結(jié)果是()。main(){inta=1,b=2;printf("%d,%d\n",--a,++b);}
A.1,2B.1,3C.0,2D.0,3
5.棧和隊列的共同特點是()。
A.都是先進(jìn)先出B.都是先進(jìn)后出C.只允許在端點處插入和刪除元素D.沒有共同點
6.以下敘述正確的是()。
A.“charc1,*c2,*c3[10];”是合法的變量定義語句
B.數(shù)組說明符的方括號中不能使用表達(dá)式
C.數(shù)組元素下標(biāo)可以是非整數(shù)
D.若有定義“chararray[4];”,則語句“printf(“%c”,array[“3”]);”是合法的
7.以下選項中,當(dāng)x為大于1的奇數(shù)時,值為0的表達(dá)式是A.x%2==1B.x/2C.x%2!=0D.x%2==0
8.
9.有以下程序段:charname[20】;intnum;scanf("name=%Snum=%d",name,&num);當(dāng)執(zhí)行上述程序段,并從鍵盤輸入:name=Lilimum=1001<回車>后,name的值為()。A.LiliB.name=LiliC.Lilinum=D.name=Lilinum=1001
10.以下程序的輸出結(jié)果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}
A.20B.21C.22D.23
11.一個函數(shù)返回值的類型是由()決定的。
A.return語句中表達(dá)式的類型B.定義函數(shù)時指定的函數(shù)類型C.在調(diào)用函數(shù)時臨時指定D.調(diào)用函數(shù)的主調(diào)函數(shù)的類型
12.在一個有向圖中,所有頂點的入度之和等于所有頂點的出度之和的()倍。A.A.1/2B.1C.2D.4
13.
14.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.11B.43C.57D.53
15.以下程序的輸出結(jié)果是()。main{intx=0.5;charz=‘a(chǎn)’;printf(“d\n”,(x&1)&&(z<‘z’));}A.0B.1C.2D.3
16.若某表最常用的操作是在最后一個結(jié)點之后插入一個結(jié)點或刪除最后一個結(jié)點,則采用()存儲方式最節(jié)省運算時間。
A.單鏈表B.給出表頭指針的單循環(huán)鏈表C.雙鏈表D.帶頭結(jié)點的雙循環(huán)鏈表
17.為了提高軟件模塊的獨立性,模塊之間最好是()。
A.控制耦合B.公共耦合C.內(nèi)容耦合D.數(shù)據(jù)耦合
18.檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。
A.確認(rèn)測試B.集成測試C.驗證測試D.驗收測試
19.對關(guān)系S和R進(jìn)行集合運算,結(jié)果中既包含S中的所有元組也包含R中的所有元組,這樣的集合運算稱為()
A.并運算B.交運算C.差運算D.積運算
20.下列程序的輸出結(jié)果是()。#include<stdio.h>main{inti;for(i=1;i<=10,i++){if((i*i>=20)&&(i*i<=100))break;}printf("%d\n",i*i;}A.49B.36C.25D.64
二、2.填空題(20題)21.在索引查找或分塊查找中,首先查找【】,然后再查找相應(yīng)的【】,整個索引查找的平均查找長度等于查找索引表的平均查找長度與查找相應(yīng)子表的平均查找長度之和。
22.以下程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{inta[5]={2,4,6,8,10},*p;
p=a;p++;
printf("%d",*p);
}
23.下列程序執(zhí)行后輸出的結(jié)果是【】。
structs
{intx,y;}data[2]={10,100,20,200};
main()
{
structs*p=data;
printf("%d\n",++(p->x));
}
24.僅依據(jù)規(guī)格說明書描述的程序功能來設(shè)計測試實例的方法稱為【】。
25.若輸入12、3、2、5、7,則以下程序的運行結(jié)果為【】。
intmax,min;
voidmax_min_value();
main()
{inti,number[5];
printf("輸入5個整數(shù);\n");
for(i=0;i<5;i++)scanf("%d",&number[i]);
maxminvalue(number,5);
printf("max=%d,min=%d\n",max,min);
getch();
}
voidmax_min_value(array,n)
intarray[],n;
{int*p;
max=min=*array;
for(p=array+1;p<array+n;p++)
if(*p>max)max=*p;
elseif(*p<min)min=*p;
}
26.設(shè)函數(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);
}
27.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。
28.設(shè)有以下定義和語句,則*(*(p+2)+1)的值為【】。
inta[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
29.以下程序的運行結(jié)果為【】。
main()
{inti,j,a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},b[4][3];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
b[j][i]=a[i][j];
for(i=0;i<4;i++)
{for(j=0;j<3;j++)
printf("%-3d",b[i][j]);
printf("\n");
}
}
30.解題方案的準(zhǔn)確而完整的描述稱為______。
31.一棵二叉樹中共有80個葉子結(jié)點與10個度為1的結(jié)點,則該二叉樹中的總結(jié)點數(shù)為【】。
32.函數(shù)調(diào)用語句:“fgets(buf,n,fp);”從fp指向的文件中讀入,n個字符放到buf字符數(shù)組中,函數(shù)返回值為______。
33.最簡單的交換排序方法是______。
34.算法的復(fù)雜度主要包括【】復(fù)雜度和空間復(fù)雜度。
35.在關(guān)系模型中,把數(shù)據(jù)看成是二維表,每一個二維表稱為一個【】。
36.以下程序段中,錯誤的行號是【】。①#include<stdio.h>②main()③{charstr[14];str[]={"IloveChina!"};④printf("%s",str);⑤}
37.下列程序的輸出結(jié)果是______。
main()
{inta[]={31,27,20,12,6,1},*p=a;
p++;
printf("%d\n",*(p+2));
}
38.若有如下定義:
int[]={11,24,56,19,29,39),*t=s;
則不移動指針t,且通過指針t引用數(shù)組中值為29的元素的表達(dá)式是【】。
39.若變量a,b已定義為int類型并賦值21和55,要求用printf函數(shù)以a=21,b=55的形式輸出,請寫出完整的的輸出語句()。
40.數(shù)據(jù)元素之間______的整體稱為邏輯結(jié)構(gòu)。
三、1.選擇題(20題)41.對于n個結(jié)點的單向鏈表(無表頭結(jié)點),需要指針單元的個數(shù)至少為______。
A.n-1B.nC.n+1D.2n
42.已知一棵二叉樹前序遍歷和中序遍歷分別為ABDEGCFH和DBGEACHF,則該二叉樹的后序遍歷為()。
A.GEDHFBCAB.DGEBHFCAC.ABCDEFGHD.ACBFEDHG
43.調(diào)用gets和puts函數(shù)時,必須包含的頭文件是
A.stdio.hB.stdlib.hC.defineD.以上都不對
44.下列函數(shù)的運行結(jié)果是
main()
{inti=2,p;
intj,k;
j=i;k=++i;p=f(j,k);
printf("%d",p);}
intf(inta,intb)
{intc;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
return(c);}
A.-1B.1C.2D.編譯出錯,無法運行
45.下列二維數(shù)組初始化語句中,不正確的是()。
A.intb[][2]={1,2,3,4,5,6,7};
B.intb[3][5]={0,0,0};
C.intb[][4]={{1,2},{3,4,5},{6}};
D.intb[3][2]={(1,2),(3,4),(5,6)};
46.設(shè)有下列二叉樹:對此二叉樹前序遍歷的結(jié)果為()
A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY
47.以下能正確表示x在-5到-1或5到1范圍(含5和1)內(nèi),值為“真”的表達(dá)式是()
A.(x>=-5)||(x<=-1)&&(x<=5)&&(x>=1)
B.!(x>=-5||x<=-1&&x<=5||x>=1)
C.x<-5&&x>-1||x<1&&x>5
D.(x<-5)||(x>-1&&x<1)||(x>5)
48.以下選項中,合法的一組C語言數(shù)值常量是()。
A.028.5e-3-0xf
B.12.0X0234.5e0
C.1774e1.50abe
D.0x8A10,0003.e5
49.設(shè)有以下說明語句typedefstruct{intn;charch[8];}PER;則下面敘述中正確的是
A.PER是結(jié)構(gòu)體變量名
B.PER是結(jié)構(gòu)體類型名
C.typedefstruct是結(jié)構(gòu)體類型
D.struct是結(jié)構(gòu)體類型名
50.下列有關(guān)格式輸入函數(shù)scanf的敘述中正確的是()
A.輸入項可以是C語言中規(guī)定的任何變量,并且在任何變量前必須加地址符號“&”
B.可以只有格式控制項,沒有地址列表項
C.在輸入數(shù)據(jù)時,必須規(guī)定精度。如:scanf("%4.2f",&d);
D.當(dāng)輸入數(shù)據(jù)時,必須指明變量地址
51.有以下程序:main(){unsignedchara,b,c;a=0x3;b=a│0x8;c=b<<1;printf("%d%d\n",b,C);}程序運行后的輸出結(jié)果是()。
A.-1112B.-19C.1224D.1122
52.如果要限制一個變量,命名其只能為本文件所用,必須通過()來實現(xiàn)。
A.外部變量說明B.靜態(tài)內(nèi)部變量C.靜態(tài)外部變量D.局部變量說明
53.有以下函數(shù)intaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}以下關(guān)于aaa函數(shù)的功能的敘述正確的是A.求字符串s的長度B.比較兩個串的大小C.將串s復(fù)制到串tD.求字符串s所占字節(jié)數(shù)
54.設(shè)有定義:charp[]={‘1’,‘2’,‘3’,},*q=p;,以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達(dá)式是______。
A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])
55.下列程序的輸出結(jié)果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=ifor(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}
A.20B.21C.22D.23
56.有如下程序
main()
{floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x<10.0)y=1.0/x;
elsey=1.0;
printf("%f\n",y);}
該程序的輸出結(jié)果是
A.0.000000B.0.250000C.0.500000D.1.000000
57.算法的時間復(fù)雜度是指______。
A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運算次數(shù)D.算法程序中的指令條數(shù)
58.在調(diào)用函數(shù)時,如果實參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是______。
A.地址傳遞B.單向值傳遞C.由實參傳給形參。再由形參傳同實參D.傳遞方式由用戶指定
59.若輸入1.5、2.5,則以下程序的運行結(jié)果為______。main(){floata,b;intc;scanf("%f,%f,",&a,&b);c=max(a,b);printf("%d",c);}max(x,y)floatx,y;{floatz;z=x>y?x:y;return(z);}
A.1.5B.2.5C.2D.3
60.下列敘述中錯誤的是()。
A.線性表是由n個元素組成的一個有限序列
B.線性表是一種線性結(jié)構(gòu)
C.線性表的所有結(jié)點有且僅有一個前件和后件
D.線性表可以是空表
四、選擇題(20題)61.
62.
63.
64.設(shè)有如下定義:
若要使P指向data中的n域,正確的賦值語句是()。
A.
B.
C.
D.
65.設(shè)有以下語句:
其中0≤k<5。以下不是對字符串的正確引用的是()。
A.*strpB.strp[k]C.str[k]D.strp
66.有以下程序:
程序運行后的輸出結(jié)果是()。
A.12B.14C.1234D.123456
67.若有以下程序:
上面程序的輸出結(jié)果是()。
A.5B.7C.1D.3
68.下列排序方法中,最壞情況下比較次數(shù)最少的是()。
A.簡單選擇排序B.冒泡排序C.堆排序D.直接插入排序
69.已知intx=(1,2,3,4);變量x的值是()。
A.1B.2C.3D.4
70.若變量x、y已正確定義并賦值,以下符合C語言語法的表達(dá)式是()。
A.X+1=yB.++X.Y=X一一C.X=X+10=X+YD.double(X)/10
71.若有定義“inta=5,b=7;”,則表達(dá)式a%=(b%2)運算后,a的值為()。
A.0B.1C.11D.3
72.
下列程序的輸出結(jié)果是()。
main
{intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7)
if(p[i]%2)j+=p[i];
printf("%d\n",j);
}
A.42B.45C.56D.60
73.
74.
75.用樹形結(jié)構(gòu)來表示實體之間聯(lián)系的模型稱為()。
A.關(guān)系模型B.層次模型C.網(wǎng)狀模型D.數(shù)據(jù)模型
76.若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是_______。A.′a′<=c<=′z′
B.(c>=′a′)||(c<=′z′)
C.(′a′=C)
D.(c>=′a′)&&(c<=′z′)
77.若有以下定義和語句:“doubler=99,*p=&r;*P=r;”,則以下正確的敘述是()。
A.兩個*p含義相同,都說明給指針變量p賦值
B.在“doubler=99,*p=&r;”中,把r的地址賦值給了P所指的存儲單元
C.語句“*p=r;”把變量r的值賦給指針變量P
D.語句“*p=r;”取變量r的值放回r中
78.有以下程序
#include<stdio.h>
main()
{charcl,c2;
c1=A+8-4
c2=A+8-5;
printf("%C,%d\n",cl,c2);
}
已知字母A的ASCIl碼為65,程序運行后的輸出結(jié)果是()。
A.E,69B.D,69C.E,DD.輸出無定值
79.有以下程序:
voidmain()
{intk=0,n=0;
while(k<5)
{switch(k)
{default:break;
case1:n+=k;
case2:
case3:n+=k;
}
k++;
}
printf("%d\n",n);
}
程序運行后的輸出結(jié)果是()。
A)0B)4
C)6D)7
80.由兩個棧共享一個存儲空間的好處是______。A.A.減少存取時間,降低下溢發(fā)生的概率
B.節(jié)省存儲空間,降低上溢發(fā)生的概率
C.減少存取時間,降低上溢發(fā)生的概率
D.節(jié)省存儲空間,降低下溢發(fā)生的概率
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:首先把b所指字符串中的字符按逆序存放,然后將str1所指字符串中的字符和Str2所指字符串中的字符,按排列的順序交叉合并到str所指數(shù)組中,過長的剩余字符接在str所指數(shù)組的尾部。例如,當(dāng)str1所指字符串中的內(nèi)容為ABCDEFG,str2所指字符串中的內(nèi)容為1234時,str所指數(shù)組中的內(nèi)容應(yīng)該為A483C2D1EFG;而當(dāng)str1所指字符串中的內(nèi)容為1234,str2所指字符串中的內(nèi)容為ABCEDFG時,str所指數(shù)組中的內(nèi)容應(yīng)該為1G2F31:4DCBA。
請修改程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio。h>
#include<string.h>
voidproc(char*strl,char*str2,char*str){
inti,j;charch;
i=0;j=strleu(str2)-1;
//****found****
while(i>j)
{
ch=str2[i];str2[i]=str2[j];str2[j]=ch;
i++;j--;
}
while(*str1||*str2)
{
if(*str1){*str
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 七年級數(shù)學(xué)上冊第5章一元一次方程5.4一元一次方程的應(yīng)用第1課時基本數(shù)量與行程問題聽評課記錄(新版浙教版)
- 冀教版七年級數(shù)學(xué)上冊聽評課記錄5.4.4 追及、方案問題
- 人教版數(shù)學(xué)九年級上冊26.1.2《二次函數(shù)的圖象》聽評課記錄
- 生態(tài)產(chǎn)品供應(yīng)合同(2篇)
- 環(huán)境監(jiān)測系統(tǒng)招標(biāo)合同(2篇)
- 部編版八年級歷史上冊《第16課 毛澤東開辟井岡山道路》聽課評課記錄
- 晉教版地理七年級上冊《3.1 海陸分布》聽課評課記錄4
- 首師大版道德與法治七年級上冊2.1《青春悄悄來》聽課評課記錄
- 人教版歷史八年級上冊第25課《經(jīng)濟和社會生活的變化》聽課評課記錄
- 北師大版歷史九年級上冊第1課《西亞和北非的古代文明》聽課評課記錄
- 2024年安徽省初中學(xué)業(yè)水平考試中考數(shù)學(xué)試卷(真題+答案)
- 抖音房產(chǎn)直播敏感詞匯表
- 學(xué)前兒童美術(shù)教育與活動指導(dǎo)第4版全套教學(xué)課件
- 標(biāo)桿門店打造方案
- 2022-2023年人教版九年級化學(xué)(上冊)期末試題及答案(完整)
- 中華民族共同體概論課件專家版2第二講 樹立正確的中華民族歷史觀
- 食品安全公益訴訟
- 中學(xué)生低碳生活調(diào)查報告
- 游泳池經(jīng)營合作方案
- 弱電項目經(jīng)理工作總結(jié)
- 擘畫未來技術(shù)藍(lán)圖
評論
0/150
提交評論