




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021年甘肅省武威市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.設(shè)變量已正確定義,則以下能正確計算f=n!的程序是()。A.f=0:for(i=1;i<=n;i++)f*=i:
B.F=1:for(i=1;i<2n;i++)f*=i:
C.f=1:for(i=n;i>1;i++)f*=i:
D.f=1;for(i=n;i>=2;i--)f*=i:
2.
3.用鏈表表示線性表的優(yōu)點是()。
A.便于隨機存取B.花費的存儲空間較順序存儲少C.便于捅入和刪除操作D.數(shù)據(jù)元素的物理順序與邏輯順序相同
4.設(shè)有定義:“struct{charmarkp[l2];intnuml;doublenum2;}tl,t2;”,若變量均已正確賦初值,則以下語句中錯誤的是()。
A.t1=t2;
B.t2.num1=tl.numl;
C.t2.mark=tl.mark;
D.t2.num2=tl.num2;
5.在循環(huán)隊列中,若front與rear分別表示對頭元素和隊尾元素的位置,則判斷循環(huán)隊列空的條件是()。
A.front==rear+1B.rear==front+1C.front==rearD.front==0
6.在m叉樹中,都為0的結(jié)點稱為()。
A.兄弟B.樹葉C.樹根D.分支結(jié)點
7.
8.以下敘述中正確的是()。
A.C語言編譯系統(tǒng)對標(biāo)識符的長度沒有規(guī)定
B.C語言標(biāo)識符的規(guī)定長度因系統(tǒng)而異
C.C語言規(guī)定標(biāo)識符長度最多允許16個字符,超長報錯
D.C語言規(guī)定以下劃線開頭的標(biāo)識符長度必須大于1
9.直接選擇排序的時間復(fù)雜度為()。(n為元素個數(shù))
A.O(n)B.O(log2n)C.O(nlog2n)D.O(n2)
10.在一個鏈?zhǔn)疥犃兄?,假設(shè)f和r分別為隊頭和隊尾指針,則刪除結(jié)點的運算是()。
A.r=f->nextB.r=r->nextC.f=f->nextD.f=r->next
11.以下數(shù)據(jù)結(jié)構(gòu)中,()是線性結(jié)構(gòu)。
A.有向圖B.棧C.線索二叉樹D.B樹
12.下面程序運行后的輸出結(jié)果是______。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=s[0].a+s[1].b;printf("%d\n",t);}
A.5B.6C.7D.8
13.
14.若有語句“typedefstructTT{charc;inta[4];}CIN;”,則下列敘述中正確的是()。
A.CIN是structTT類型的變量
B.TT是struct類型的變量
C.可以用TT定義結(jié)構(gòu)體變量
D.可以用CIN定義結(jié)構(gòu)體變量
15.設(shè)有定義“intx[2][3];”,則以下選項中不能表示數(shù)組元素x[0][1]的是()。
A.*(*x+1)B.*(*(x+1)C.(*x)[1]D.*(&x[0][0]+1)
16.有以下程序
prt(int*m,intn)
{
inti;
for(i=0;i<n;i++)
m[i]++;
}
main()
{
inta[]={1,2,3,4,5},i;
prt(a,5);
for(i=0;i<5;i++)
printf("%d,",a[i]);
}
程序運行后的輸出結(jié)果是A.A.1,2,3,4,5,
B.3,4,5,6,7,
C.2,3,4,5,6,
D.2,3,4,5,1,
17.程序運行后的輸出結(jié)果是()。#include<stdio.h>#include<stdlib.h>main(){int*a,*b,*c;a=b=c(int*)malloc(sizeof(int));*a=1;*b=2;*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}A.1.1.3B.2.2.3C.1.2.3D.3.3.3
18.有如下定義#defineD2intx=5;floaty=3.83;charC='D';則下面選項中錯誤的是
A.x++;B.y++;C.c++;D.D++;
19.
20.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
二、2.填空題(20題)21.有以下程序:
main()
{intt=1,i=5;
for(;i>=0;i--)t*=i;
printf("%d\n",t);
}
執(zhí)行后的輸出結(jié)果是【】。
22.下述程序的輸出結(jié)果是【】。
#include<stdio.h>
voidmain()
{
charc1[20]="1234";
charc2[20]="5678";
char*p1,*p2;
p1=c1;
p2=c2;
while(*p1++)
while(*p1++=*p2++);
printf("%s,c1);
}
23.深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為______。
24.設(shè)一棵完全二叉樹共有700個結(jié)點,則在該二叉樹中有【】個葉子結(jié)點。
25.對于長度為n的順序存儲的線性表,當(dāng)隨機插入和刪除—個元素時,需平均移動元素的個數(shù)為【】。
26.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達(dá)式【】。
27.mystrlen函數(shù)的功能是計算str所指字符串的長度,并作為函數(shù)值返回。請?zhí)羁铡?/p>
intmystrlen(char*str)
{intI;
for(I=0;【】!='\n';I++);
return(I);}
28.以下程序的功能是:利用指針指向三個整型變量,并通過指針運算找出三個數(shù)中的最大值,輸出到屏幕上。請?zhí)羁铡?/p>
main()
{intx,y,z,max,*px,*py,*pz,*pmax;
scanf("%d%d%d",&x,&y,&z);
px=&x;py=&y;pz=&z;pmax=&max;
【】;
if(*pmax<*py)*pmax=*py;
if(*pmax<*pz)*pmax=*pz;
printf("max=%d\n",max);}
29.以下程序運行后的輸出結(jié)果是______。
main()
{
intx=10,y=20,t=0
if(x==y)t=x;x=y;y=t;
printf("%d,%d/n",x,y);
}
30.下列程序段的運行結(jié)果是______。
charstr[]="ABCD",*p=str;
printf("%d\n",*(p+3));
31.以下程序的輸出結(jié)果是()。
#include<stdio.h>
voidfun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(3);printf("\n");
}
32.在關(guān)系模型中,二維表的行稱為______。
33.若a是int型變量,則表達(dá)式(a=2*3,a*2),a+6的值為______。
34.有以下說明定義和語句,可用a.day引用結(jié)構(gòu)體成員day,寫出引用結(jié)構(gòu)體成員day的其他兩種形式【】、【】。
struct{intday;charmouth;intyear;}a,*b;b=&a;
35.如果兩個8位二進(jìn)制數(shù)00010101與01000111相加,其結(jié)果用十進(jìn)制表示為【】。
36.數(shù)據(jù)管理技術(shù)的發(fā)展過程經(jīng)過人工管理、文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)三個階段,其中數(shù)據(jù)獨立性最高的階段是【】。
37.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的【】。
38.數(shù)據(jù)庫技術(shù)的主要特點為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨立性和數(shù)據(jù)統(tǒng)一管理與控制。
39.已知字符A的ACSII碼值為65,以下語句的輸出結(jié)果是______。
charch='B';
printf("%c%d\n",ch,ch);
40.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\N,*p,*q))
}
三、1.選擇題(20題)41.下列定義不正確的有______。
A.#definePI3.141592
B.#defineS345;
C.intmax(x,y);intx,y;{}
D.intmax(int,int);
42.下述程序的輸出結(jié)果是______。#include<stdio.h>main(){enumteam{Jack,Andy,Sam=10,Bob=Sam+2,Tom};printf("%d,%d",Andy,Tom);}
A.2,13B.1,0C.1,13D.1,12
43.有以下程序main(intarge,char*argv[])intn,i=0;while(argv[1][i]!='\0'){n-fun();i++;}printf("%d\n",n*argc);intfun(){staticints=0;s+=1;returns;}假設(shè)程序經(jīng)編譯、連接后生成可執(zhí)行文件exam.exe,若鍵入以下命令exam123<回車>
A.6B.8C.3D.4
44.下列合法的聲明語句是()。
A.int_abc=50;
B.doubleint=3+5e2.5;
C.longdo=1L:
D.float3_asd=3e-3;
45.若有說明:inta[3][4]={0};則下面正確的敘述是
A.只有元素a[0][0]可得到初值0
B.此說明語句不正確
C.數(shù)組a中各元素都可得到初值,但其值不一定為0
D.數(shù)組a中每個元素均可得到初值0
46.關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關(guān)系運算包括()。
A.排序、索引、統(tǒng)計B.選擇、投影、連接C.關(guān)聯(lián)、更新、排序D.顯示、打印、制表
47.當(dāng)執(zhí)行下面的程序時,其輸出結(jié)果為______。unionst{inta;charb;}main(){unionsts;char*p=(char*)&s;s.a=0x3132;s.b=0x33;printf("%c",*p);}
A.1B.2C.3D.不確定
48.以下敘述不正確的是______。
A.分號是C語言的必要組成部分
B.C程序的注釋可以寫在句的后面
C.函數(shù)是C程序的基本單位
D.主函數(shù)的名字不一定用main表示
49.已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。以下不能將變量c中的大寫字母轉(zhuǎn)換為對應(yīng)小寫字母的語句是
A.c=(c-'A')%26+'a'B.c=c+32C.c=c-'A'+'a'D.a=('A'+c)%26-'a'
50.以下不屬于對象的基本特點的是()
A.分類性B.多態(tài)性C.繼承性D.封裝性
51.下列選項中,不是一個算法的基本特征的是()。
A.完整性B.可行性C.有窮性D.擁有足夠的情報
52.執(zhí)行下列語句的結(jié)果為______。i=3;printf("%d,",++i);printf("%d",i++);
A.3,3B.3,4C.4,3D.4,4
53.有以下程序main(){intx[8]={8,7,6,5,0,0},*9;s=x+3;printf("%d\n",s[2]);}執(zhí)行后輸出結(jié)果是
A.隨機值B.0C.5D.6
54.下列程序中,正確的為______。
A.main(){int*pb=&b;float1>=15.25;printf("%d\n",*pb);}
B.amin(){inta,*pa;a=10;*pa=a;prinffC%d",*pa);}
C.main(){chars[20];char*ps=&s;scanf("%s",*p);printf("%s",*p);}
D.main(){charstr[10];int*ps=str[0];str="abcdefg";printf("%s",*p);}
55.算法具有5個特性,以下選項中不屬于算法特性的是()o
A.有窮性B.簡潔性C.可行性D.確定性
56.若要用下面的程序片段指針變量p指向一個存儲整型變量的動態(tài)存儲單元int*p;p=______malloc(sizeof(int));則應(yīng)填入______。
A.intB.int*C.(*int)D.(int*)
57.執(zhí)行語句for(i=1;i++<4;);后變量i的值是______。
A.3B.4C.5D.不定
58.下列程序的輸出結(jié)果是______。intd=1;fun(intp){staticintd=5;d+=p;printf("%d",d);return(d);}main(){inta=3;printf("%d\n",fun(a+fun(d)));}
A.699B.669C.61515D.6615
59.有以下程序:#include<stdio,h>voidsum(inta[]){a[0]=a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);prinff("%d\n",a[2]);}程序運行后的輸出結(jié)果是()。
A.6B.7C.5D.8
60.可在C程序中用作用戶標(biāo)識符的一組標(biāo)識符是A.and2007
B.Date_y-m-d
C.HiDr.Tom
D.caseBigl
四、選擇題(20題)61.以下關(guān)于邏輯運算符兩側(cè)運算對象的敘述中正確的是()。
A.可以是任意合法的表達(dá)式B.只能是整數(shù)0或非0整數(shù)C.可以是結(jié)構(gòu)體類型的數(shù)據(jù)D.只能是整數(shù)O或l
62.數(shù)據(jù)庫系統(tǒng)的核心是()。
A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫D.數(shù)據(jù)庫管理員
63.有以下程序程序運行后的輸出結(jié)果是()。
A.1,2,3.4,5,6,7,8,9,10,
B.10,9,8,7,6,5,4,3,2,1,
C.2,3,1,6,8,7,5,4,10,9,
D.10,9,8,7,6,1,2,3,4,5,
64.下列選項中屬于軟件生命周期開發(fā)階段任務(wù)的是()。
A.可行性研究
B.需求分析
C.詳細(xì)設(shè)計
D.軟件維護
65.有以下程序:
#include<stdio.h>
main()
{inta;
scanf("%d",&a);
if(a++<9)printf("%d\n",a);
clscprintf("%d\n",a--);
}
程序運行時從鍵盤輸入9<回車>,則輸出結(jié)果是()。
A.10B.11C.9D.8
66.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。
A.可行性分析報告B.軟件需求規(guī)格說明書C.概要設(shè)計說明書D.集成測試計劃
67.下列敘述中正確的是()。
A.循環(huán)隊列是隊列的一種鏈?zhǔn)酱鎯Y(jié)構(gòu)
B.循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)
C.循環(huán)隊列是非線性結(jié)構(gòu)
D.循環(huán)隊列是一種邏輯結(jié)構(gòu)
68.
69.下列程序的運行結(jié)果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}
A.2,3,2B.2,3,1C.1,3,3D.3,1,2
70.下列選擇中,不能用做標(biāo)識符的是()。
A.1234B._1_2C.int_2_D.2_int_
71.
72.
有以下函數(shù):
charfun(char*p)
{returnP;}
該函數(shù)的返回值是()。
A.無確切的值B.形參p中存放的地址值C.一個臨時存儲單元的地址D.形參p自身的地址值
73.
有以下程序:
main
{intk=5;
while(--k)printf("%d",k-=3);
printf("\n");
}
執(zhí)行后的輸出結(jié)果是()。
A.1B.2C.4D.死循環(huán)
74.設(shè)有以下定義:
inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int(*ptr)[3]=a,*p=a[0];
則下列能夠正確表示數(shù)組元素a【1】【2】的表達(dá)式是()。
A.*((*ptr+1)[2])
B.*(*(p+5))
C.(*ptr+1)+2
D.*(*(a+1)+2)
75.在URL中,默認(rèn)的Web服務(wù)器的端口是()。
A.80B.8080C.1024D.2048
76..C語言運算對象必須是整型的運算符是
A.%B./C.=D.<
77.下列對隊列的敘述正確的是()。
A.隊列按“先進(jìn)后出”原則組織數(shù)據(jù)
B.隊列屬于非線性表
C.隊列在隊尾刪除數(shù)據(jù)
D.隊列按“先進(jìn)先出”原則組織數(shù)據(jù)
78.
79.在軟件設(shè)計中不使用的工具是()。
A.系統(tǒng)結(jié)構(gòu)圖B.PAD圖C.數(shù)據(jù)流圖(DFD圖)D.程序流程圖
80.
有下列程序:
main
{intk=5:
while(--k)printf("%d",k=1);
printf("\n");
}
執(zhí)行后的輸出結(jié)果是()。
A.1B.2C.4D.死循環(huán)
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:對M名學(xué)生的學(xué)習(xí)成績,按從低到高的順序找出前m(m≤10)名學(xué)生來,并將這些學(xué)生數(shù)據(jù)存放在一個動態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首地址作為函數(shù)值返回。
請修改程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:除了字符串前導(dǎo)的*號之外,將串中其他*號全部刪除。在編寫函數(shù)時,不得使用c語言提供的字符串函數(shù)。
例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:
****ABCDEFG。
注意:部分源程序在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
參考答案
1.D由i"11的數(shù)字定義可知n!=n*(n-1)*(n-2)*…*1。在選項A中,由于f的初值為0,在for循環(huán)語句中,f依次乘以1,2,3,…,n,最后計算得到f=n!一0,所以選項A不正確。在選項B中,f的初值為1,在for循環(huán)語句中,f依次乘以1,2,3,…,(n-1),最后計算得到f=(n-1)!,所以選項B不正確。在選項C中,f的初值為1,在for循環(huán)語句中,f依次乘以n,n+1,n+2,……,所以選項c不正確。在選項D中,f的初值為l,在for循環(huán)語句中,f依次乘以n,n-1,n-2,…,2,最后計算得到f=n!,所以選項D正確。
2.B
3.C數(shù)據(jù)的存儲結(jié)構(gòu)有順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)兩種。不同存儲結(jié)構(gòu)的數(shù)據(jù)處理效率不同。由于鏈表采用鏈?zhǔn)酱鎯Y(jié)構(gòu),元素的物理順序并不連續(xù),對于插入和刪除無需移動元素,很方便,當(dāng)查找元素時就需要逐.個元素查找,因此查找的時間相對更長。
4.C結(jié)構(gòu)體不能通過結(jié)構(gòu)體名字整體賦值,通過結(jié)構(gòu)體名.成員名的方式賦值。所以C選項錯誤。
5.C
6.B
7.A
8.B對于標(biāo)識符的長度(即一個標(biāo)識符允許的字符個數(shù)),C語言編譯系統(tǒng)是有規(guī)定的,即標(biāo)識符的前若干個字符有效,超過的字符將不被識別。不同的C語言編譯系統(tǒng)所規(guī)定的標(biāo)識符有效長度是不同的。故本題答案為B選項。
9.D
10.C
11.B
12.B解析:在main函數(shù)中定義了一個structabc類型的數(shù)組,同時分別利用{1,2,3}及{4,5,6}對數(shù)組中兩個元素進(jìn)行初始化。在該結(jié)構(gòu)體,依次對其中的a,b,c三個變量進(jìn)行初始化。故s[0].a=1,s[1].b=5,所以本題輸出為6。
13.C
14.DCIN為結(jié)構(gòu)體類型名,而不是結(jié)構(gòu)體變量。故本題答案為D選項。
15.B選項A中*x等價于x[0],*x+1等價于x[0]+1,*(x[0]+1)等價于x[0][1],正確;選項B中,*(x+1)等價于x[1],*(*(x+1))等價于x[1][0],錯誤;選項C中,*x等價于x[0],(*x)[1]等價于x[0][1],正確;選項D中,&x[0][0]等價于x[0],&[0][0]+1等價于x[0]+1,*(x[0]+1)等價于x[0][1],正確。故本題答案為B選項。
16.C用數(shù)組名作為函數(shù)實參時,不是把數(shù)組的值傳遞給形參,而是把實參數(shù)組的起始地址傳遞給形參數(shù)組,這樣兩個數(shù)組就共同占用同一段內(nèi)存單元。本題通過“prt(a,5);”將數(shù)組a的首地址傳遞給了指針變量m,使指針變量m指向數(shù)組a的首地址,那么,對指針變量所指向的存儲單元的內(nèi)容的改變就是對數(shù)組a中的元素的改變。題中函數(shù)prt的作用是將指針變量m所指向的存儲單元中的元素值各加上1,故數(shù)組a中的值也隨之變化,所以。輸出的數(shù)組元素的值為2,3,4,5,6,。
17.D
18.D解析:C語言中++運算符的對象可以是整型、實型和字符型,但不可是常量,本題中D為常量。
19.D
20.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。
21.00解析:for循環(huán)執(zhí)行完成后t=5×4×3×2×1×0=0。
22.1567815678解析:本題使用了雙重while循環(huán),外循環(huán)的循環(huán)條件是*p1++,即每次循環(huán)時讓p1指向其后面的一個元素,而p1自增之前所指內(nèi)容為0時循環(huán)結(jié)束。內(nèi)循環(huán)的循環(huán)條件是*p1++=*p2++,即每次循環(huán)時讓p1和p2指向其后面的一個元素,而將p2自增之前所指的元素復(fù)制到p1自增之前所指的地址中去,直到p2自增之前所指內(nèi)容為0時循環(huán)結(jié)束。p1本來一開始是指向c1[0],由于外循環(huán)判斷條件時讓p1自增了,所以進(jìn)入內(nèi)循環(huán)時p1指向c1[1],而內(nèi)循環(huán)將p2所指字符串復(fù)制到p1所指位置,所以內(nèi)循環(huán)的結(jié)果是c1[1]、c1[2]、c1[3]、c1[4]、c1[5]分別被c2[0]、c2[1]、c2[2]、c2[3]、c2[4]改寫成'5'、'6'、'7'、'8'、'\\0'。故程序輸出的結(jié)果為15678。
23.1616解析:滿二叉樹的葉子結(jié)點都在最后一層,即第4層,且第4層的結(jié)點達(dá)到最大數(shù),即25-1=16。
24.350350解析:在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。在根據(jù)完全二叉樹的定義,在一棵完全二叉樹中,最多有1個度為1的結(jié)點。因此,設(shè)一棵完全二叉樹具有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。
25.n/2n/2解析:刪除—個元素,平均移動的元素個數(shù)為(n-1+n-2+…+0)/n=(n-1)/2;插入一個元素,平均移動元素個數(shù)為(n+n-1+n-2+…+1)/n=(n+1)/2:所以總體平均移動元素個數(shù)為n/2。
26.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數(shù)可以用變量與2取模,判斷結(jié)果是為1或下為0。本題具體做法如下:Y%2=1或Y%2!=0。
27.*(str+I)或str[I]*(str+I)或str[I]解析:str是指針變量,它指向字符型數(shù)據(jù),在循環(huán)過程中,可以用*(str+I)來訪問字符串中的第I個元素,判斷是否為結(jié)束標(biāo)志,如果不是,I=I+1,繼續(xù)取下一個元素進(jìn)行判斷,直到*(str+I)的值為'\\0'為止,也可以用下標(biāo)的方式引用字符,如*(str+I)相當(dāng)于str[I]。
28.*pmax=*px*pmax=*px解析:首先將變量x的值放到max中,然后依次和變量y、z進(jìn)行比較。若有比max大的數(shù),將該數(shù)存放到max中,這樣最后在max中的值就是x、y、z中的最大值。
29.20020,0解析:本題考查的知識點是if語句的基本概念。在主函數(shù)中首先定義了三個整型變量x、y,t,并分別給它們賦初值為10,20,0,接著執(zhí)行if語句,在if后面括號內(nèi)的條件表達(dá)式中,條件“x==y”即“10==20”不成立,則不執(zhí)行其后的語句“t=x”,然后退出if語句,順序執(zhí)行語句X=y;y=t;。執(zhí)行完這兩條語句后x的值變?yōu)?0,y的值變?yōu)?,所以最后輸出x,y的值為20和0。
30.6868解析:本題考查如何用指針引用數(shù)組元素。本題先定義了一個指向字符型數(shù)組str的指針p,指針p指向數(shù)組str的首地址,p+3將指針指向str[3],*(p+3)指的是字符“D”,輸出時是以“%d”格式輸出的,即輸出其相應(yīng)ASCII碼值68。
31.1313解析:函數(shù)fun是一個遞歸函數(shù)。執(zhí)行fun(3);,x=3,x/2=1>0,又調(diào)用f(1),此時,x=1,x/2=0,不滿足繼續(xù)遞歸調(diào)用的條件,輸出1,返回到fun(3)中,輸出3。所以本題的輸出結(jié)果為13。
32.元組元組解析:在關(guān)系型數(shù)據(jù)庫中,用二維表來表示關(guān)系,二維表的表名即關(guān)系名,二維表的行稱為關(guān)系的元組,二維表的列,稱為關(guān)系的屬性。
33.1212解析:本題考查逗號表達(dá)式的運算規(guī)則。逗號表達(dá)式的基本格式為:“表達(dá)式1,表達(dá)式2,…”,其整個表達(dá)式的結(jié)果取最后一個子表達(dá)式的值。本題中首先計算逗號表達(dá)式中的第1個表達(dá)式a=2*3=6,然后計算第2個表達(dá)式a*2,這時整個表達(dá)式的值為12,但要注意,因為第2個表達(dá)式并沒有給a賦值,因此a的值不變;接下來執(zhí)行最后一個表達(dá)式a+6=12,所以整個表達(dá)式最后的值為12。
34.(*B).dat.b->day
35.92
36.數(shù)據(jù)庫系統(tǒng)階段數(shù)據(jù)庫系統(tǒng)階段解析:在數(shù)據(jù)管理技術(shù)的發(fā)展過程中,經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段,其中數(shù)據(jù)獨立性最高的階段是數(shù)據(jù)庫系統(tǒng)階段。
37.模式或邏輯模式或概念模式模式也稱邏輯模式或概念模式,是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖,例如數(shù)據(jù)記錄由哪些數(shù)據(jù)項構(gòu)成,數(shù)據(jù)項的名字、類型、取值范圍等。
38.共享性共享性解析:數(shù)據(jù)庫技術(shù)的主要特點有以下幾個方面:數(shù)據(jù)的集成性,數(shù)據(jù)的高共享性與低冗余性,數(shù)據(jù)的獨立性,數(shù)據(jù)統(tǒng)一管理與控制。
39.B66B66解析:printf函數(shù)的功能是按照指定的格式,在標(biāo)準(zhǔn)輸出設(shè)備上輸出數(shù)據(jù),它有兩種參數(shù):格式控制參數(shù)和輸出項參數(shù)。本題中,printf('%c%d\\n',ch,ch)表示以字符格式和十進(jìn)制整數(shù)格式輸出ch,B的ACSII碼值為66,即在計算機中B的十進(jìn)制整數(shù)格式是66。所以,輸出為B66。
40.3535解析:函數(shù)swap(int*a,int*b)的功能是實現(xiàn)*a和*b中兩個數(shù)據(jù)的交換,在主函數(shù)中調(diào)用swap(p,q)后,形參指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為35。
41.C解析:定義函數(shù)時,函數(shù)頭后不能加分號。
42.C解析:根據(jù)枚舉型變量的定義方法,Jack=0,Andy=1,Sam=10,Bob=12,Tom=13。
43.A解析:主函數(shù)的第一個參數(shù)alzc為整形參數(shù),記下從命令行輸入的參數(shù)的個數(shù);笫二個參數(shù)argv是一個字符型的指針數(shù)組,它的每一個元素指向命令行輸入的參數(shù)字符數(shù)。在本例中argc的值為2,argv[0]指向字符串“exam”,argv[1]指向參數(shù)字符串“123”。在main()函數(shù)中,while循環(huán)執(zhí)行了3次,調(diào)用了3次fun()函數(shù);第一次調(diào)用了fun()函數(shù)時,定義了一個靜態(tài)變量s并賦初值0,加1后作為函數(shù)值返回,n的值為1;第二次調(diào)用ram()函數(shù)時,靜態(tài)變量s的值將保留上一次退出時的值1,再加1為2,作為函數(shù)值返回,n的值為2;同理第三次調(diào)用返回后,n的值為3。輸出n*argc的值為6所以,A選項為所選。
44.A解析:C語言規(guī)定,標(biāo)識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線。另外C語言規(guī)定了一些專用的標(biāo)識符,它們有著固定的含義,不能更改。int就是表達(dá)變量類型的標(biāo)識符,它不能再用做變量名和函數(shù)名,所以選項B)不正確。do是C語言的一個關(guān)鍵字,也不能再用做變量名和函數(shù)名,所以選項C)不正確。
45.D解析:二維數(shù)組初始化時允許只對部分元素賦初值,其余自動為0。
46.B解析:此題為數(shù)據(jù)庫的基本概念,可以對照辦工軟件的電子表格進(jìn)行如下理解:選擇:我們根據(jù)某條件選擇出一行或多行元組(一個元組即為二維表中的一行)。投影:按字段(也稱屬性,比如學(xué)生關(guān)系(學(xué)號,姓名,出生年月,性別),學(xué)號、姓名…都是屬性)選取一列或多列(一個二維表中所有元組在某一列或幾列上截取出來)。連接:2個或2個以上的表連接組成一張新的表,通常有條件連接。比如學(xué)生關(guān)系(學(xué)號,姓名,系號),又有一張系表(系號,系名,主任),2張表可以合并為一張這樣的表(學(xué)號,姓名,系號,系名,主任)。
47.C解析:共用體類型結(jié)構(gòu)的特點是使幾個不同的變量共占同一段內(nèi)存,但在每一瞬時只能存放其中一種,而不是同時存放幾種,共用體變量中起作用的成員是最后一次存放的成員,在存入一個新的成員后原有的成員就失去作用。因此本題起作用的是成員b的值,所以程序打印輸出3。
48.D解析:C語言的程序是由主函數(shù)main()開始運行,由主函數(shù)來調(diào)用其他函數(shù),所以D是錯誤的。
49.D解析:C語言中,字符數(shù)據(jù)參加運算時,實際上是其ASCII碼參與運算。大寫字母的ASCII碼比其對應(yīng)的小寫字母的ASCII碼小32。因此大寫字母轉(zhuǎn)化為小寫字母只需將其加上32即可。所以選項B)、C)都符合條件,因為變量c中存儲的是大寫字母,所以“c-'A'”的值一定小于26,故選項A)與選項C)的含義相同。
50.C解析:對象的基本特點包括;標(biāo)識惟一性、分類性、多態(tài)性、封裝性和獨立性等。繼承性不屬于對象的基本特點。
51.A解析:作為一個算法,一般應(yīng)該具有下列4個特征:(1)可行性,即考慮到實際的條件能夠達(dá)到一個滿意的結(jié)果;(2)確定性,算法中的每一個步驟都必須是有明確定義的,(3)有窮性,一個算法必須在有限的時間內(nèi)做完;(4)擁有足夠的情報。
52.D
53.B解析:指向一維數(shù)組的指針變量,通過賦值語句“s=x+3”,使指針變量s指向數(shù)組元素x[3],輸出語句中的s[2]等價于*(s+2),即x[5]值為0。
54.B
55.B解析:一個算法應(yīng)當(dāng)具有以下’5個特性:有窮性;確定性;可行性;有零個或多個輸入;由一個或多個輸出。簡潔性不屬于這5個特性,所以本題應(yīng)該選擇B。
56.D解析:不論p是指向什么類型的指針變量,都可以通過強制類型轉(zhuǎn)換的方法使之類型一致,強制類型轉(zhuǎn)換的格式為(數(shù)據(jù)類型*)。
57.C解析:for語句中的表達(dá)式可以部分或全部省略,但兩個“;”不能省略,若3個表達(dá)式均省略,會因為缺少條件判斷,導(dǎo)致循環(huán)無限執(zhí)行,而形成死循環(huán)。本題中當(dāng)i的值為5的時候,循環(huán)終止。
58.C
59.A解析:本題將主函數(shù)中a[2]的地址傳遞給了sum函數(shù)中的形參a[],使得sum函數(shù)中的(a+0)為主函數(shù)中a[2]的地址,所以a[-1]即*(a-1)的值為主函數(shù)中a[1]的值,故函數(shù)sum中a[0]=2+4。由于此函數(shù)中的a是指向主函數(shù)中的a[2],所以主函數(shù)中的a[2]的值即為6。
60.A解析:在C語言中,合法標(biāo)識符的命名規(guī)則是:標(biāo)識符可以由字母、數(shù)字和下畫線3種字符組成,且第一個字符必須為字母或下畫線。C語言的標(biāo)識符可以分為關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符。選項B)和C)中的橫線以及點都不合法,選項D)中的case為C語言關(guān)鍵字。
61.Ac語言的邏輯運算符比較特別,它的操作數(shù)沒有明確的數(shù)據(jù)類型,可以是仨意合法的表達(dá)式,因此選擇A)。
62.B解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心,是負(fù)責(zé)數(shù)據(jù)庫的建立、使用和維護的軟件。數(shù)據(jù)庫管理系統(tǒng)建立在操作系統(tǒng)之上,實施對數(shù)據(jù)庫的統(tǒng)一管理和控制。用戶使用的各種數(shù)據(jù)庫命令以及應(yīng)用程序的執(zhí)行,最終都必須通過數(shù)據(jù)庫管理系統(tǒng)。另外,數(shù)據(jù)庫管理系統(tǒng)還承擔(dān)著數(shù)據(jù)庫的安全保護工作,按照數(shù)據(jù)庫管理員所規(guī)定的要求,保證數(shù)據(jù)庫的完整性和安全性。
63.A本題考查的是結(jié)構(gòu)體成員的引用。在主函數(shù)main中定義了一個整型變量i和一個結(jié)構(gòu)體變量s。f函數(shù)中,定義了一個結(jié)構(gòu)體類型的指針P,外層循環(huán)變量i表示數(shù)組的第i個元素,內(nèi)層循環(huán)變量j表示數(shù)組的第i+1個元素,調(diào)用f函數(shù),通過指針變量P來引用結(jié)構(gòu)體成員。執(zhí)行if語句,當(dāng)P一>a[i]>P一>a[j]時進(jìn)行互換,其作用就是從小到大行排序,最后將排序后的元素輸出:l,2,3,4,5,6,7,8,9,10,。
64.C\n軟件生命周期可分為軟件定義、軟件開發(fā)和軟件運行維護3個階段。軟件開發(fā)期包括概要設(shè)計、詳細(xì)設(shè)計、實現(xiàn)和測試4個階段。
\n
65.A\n本題考查簡單的運算符操作.當(dāng)輸入9時,(a++<9)為假,所以執(zhí)行else語句中的printf('%d\n',a--),在執(zhí)行時此時a經(jīng)過a++操作a=10,所以答案為A。
\n
66.BA項錯誤,可行性分析階段產(chǎn)生可行性分析報告。C項錯誤,概要設(shè)計說明書是總體設(shè)計階段產(chǎn)生的文檔。D項錯誤,集成測試計劃是在概要設(shè)計階段編寫的文檔。B項正確,需求規(guī)格說明書是后續(xù)工作如設(shè)計、編碼等需要的重要參考文檔。
67.B本題主要考查循環(huán)隊列的概念,循環(huán)隊列作為隊列的一種也應(yīng)該是線性結(jié)構(gòu)。隊列是一種邏輯結(jié)構(gòu),而循環(huán)隊列是一種順序存儲結(jié)構(gòu)的隊列。
68.C
69.D解析:本題考查while循環(huán)。第一次循環(huán),先拿x的值和(y-1)比較,此時x=1,y-1=2,循環(huán)條件成立,比較完將x的值加1,此時x=2,進(jìn)入循環(huán),a=a+1=1,判斷if語句的控制條件是否成立,y<x不成立,接著執(zhí)行下一次循環(huán)。第二次循環(huán),先拿x的值和(y-1)比較,此時x=2,y-1=1,循環(huán)條件成立,比較完將x的值加1,此時x=3,進(jìn)入循環(huán),a=a+1=2,判斷if語句的控制條件是否成立,y<x成立,執(zhí)行break語句退出循環(huán)。
70.DC語言規(guī)定標(biāo)識符是由字母、數(shù)字和下劃線組成的,且必須以字母或下劃線開頭,因此可知D選項錯誤。
71.C
72.B
73.A解析:因為在while循環(huán)的循環(huán)條件中,一運算符是前綴形式,所以表達(dá)式—k的值是k自減之后的值。程序開始時,將k的值初始化為5,然后進(jìn)入while循環(huán),因為—k的值為4(非零),所以執(zhí)行循環(huán)體輸出k-=3的值1,此時k的值也變?yōu)?。第2次執(zhí)行循環(huán)條件,—k的值為0,所以循環(huán)結(jié)束。因此最后輸出的結(jié)果是1,故應(yīng)該選擇A。
74.Da[1][2]的值為6.*ptr的值為1,*ptr+1=2是一個數(shù)組,所以(*ptr+1)[2]表示不正確。P=a,指向1,p+5是指針向后移動5個單元,即指向6,*(p+5)即是6,C項解釋同A,
75.A
76.A本題主要考查C語言中一些常見運算符的基本知識。在題目中,給出了四種不同的運算符,分別如下:
“/”是除法運算符。在C語言中,該運算符的作用是將兩操作數(shù)進(jìn)行除法運算,在更改運算符時,兩操作數(shù)可以是同類型的數(shù)值類型,也可以是不同類型的數(shù)值類型。
“=”是賦值運算符。在C語言中,該運算符的作用是將運算符左邊的結(jié)果值復(fù)制到右邊的變量中保存,該運算符可以操作整型數(shù)據(jù),也可以操作其他類型的數(shù)據(jù)。
“<”是小于關(guān)系運算符。如果左邊的操作數(shù)小于右邊,則返回真,否則返回假。該運算符可以操作整型數(shù)據(jù),也可以操作其他類型的數(shù)據(jù)。
“%”是取余運算符。該運算符的作用是求兩操作數(shù)相除后的余數(shù),該運算符要求兩操作數(shù)都不能為實數(shù)。
\r\n\r\n\r\n
77.D\n隊列是一種操作受限的線性表。它只允許性表的一端進(jìn)行插入操作,另一端進(jìn)行刪除操作。其中,允許插入的一端稱為隊尾(rear),允許刪除的一端稱為隊酋(front)。隊列具有先進(jìn)先出的特點,它是按”先進(jìn)先出”的
\n原則組織數(shù)據(jù)的。
\n
78.B
79.C在軟件開發(fā)的各個階段經(jīng)常會使用到一些圖形工具,如在需求分析階段使用數(shù)據(jù)流圖,在概要設(shè)計階段使用系統(tǒng)結(jié)構(gòu)圖,在詳細(xì)設(shè)計階段使用程序流程圖、N-S圖或者PAD圖等。
80.A
\n在程序語句中,k的初始值為5,進(jìn)行第l次while循環(huán)后,k自減1為4,非0,執(zhí)行循環(huán)體里的printf語句,輸出k,此時k的值變?yōu)?。程序執(zhí)行第2次循環(huán)時,k自減1變?yōu)?,為假,退出while循環(huán)語句。所以程序的最后結(jié)果為1。
\n
81.(1)錯誤:*t=calloe(m,sizeof(STU));
正確:(structss*)calloc(m,sizeof(STU));
(2)錯誤:for(i=j=0;i<M;j++)
正確:for(i=j=0;i<M;i++)
(3)錯誤:t[k].s=b[j].s;
正確:t[k]=b[j];
【解析】由函數(shù)proc()可知,變量t是指向動態(tài)存儲空間的變量,因此不能間接訪問運算符,而函數(shù)calloc的返回值類型為void*,要進(jìn)行顯式類型轉(zhuǎn)換,因此“*t=calloc(m,si-zeof(STU));”應(yīng)改為“(structss*)calloc(m,sizeof(STU));”。
由程序可知,變量i為控制學(xué)生個數(shù)的變量,因此“for(i=j=
82.
程序設(shè)計題解析:
【考點分析】
本題考查:指針型變量定義;while循環(huán)語句;if語句條件表達(dá)式;字符串結(jié)束標(biāo)識‘\\0’。
【解題思路】
函數(shù)fun的功能:除了字符串前導(dǎo)的*號之外,將串中其他。號全部刪除。解答本題,(1)定義一個臨時指針P,初始指向原串首地址;(2)利用循環(huán)語句把字符串前導(dǎo)*號拷貝到原串;(3)繼續(xù)移動指針,把串中和串尾的非*號字符拷貝到原串;(4)為修改后的字符串賦結(jié)束字符’\\0’。
【解題寶典】
要刪除字符串中的指定字符,通常采用保留非指定字符的方法??梢詫⒎侵付ㄗ址A粼谠?,即將需要保留的字符從原串的起始位置重新賦值;也可以保留到新串,即新建一個字符串,存放要保留的字符。2021年甘肅省武威市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.設(shè)變量已正確定義,則以下能正確計算f=n!的程序是()。A.f=0:for(i=1;i<=n;i++)f*=i:
B.F=1:for(i=1;i<2n;i++)f*=i:
C.f=1:for(i=n;i>1;i++)f*=i:
D.f=1;for(i=n;i>=2;i--)f*=i:
2.
3.用鏈表表示線性表的優(yōu)點是()。
A.便于隨機存取B.花費的存儲空間較順序存儲少C.便于捅入和刪除操作D.數(shù)據(jù)元素的物理順序與邏輯順序相同
4.設(shè)有定義:“struct{charmarkp[l2];intnuml;doublenum2;}tl,t2;”,若變量均已正確賦初值,則以下語句中錯誤的是()。
A.t1=t2;
B.t2.num1=tl.numl;
C.t2.mark=tl.mark;
D.t2.num2=tl.num2;
5.在循環(huán)隊列中,若front與rear分別表示對頭元素和隊尾元素的位置,則判斷循環(huán)隊列空的條件是()。
A.front==rear+1B.rear==front+1C.front==rearD.front==0
6.在m叉樹中,都為0的結(jié)點稱為()。
A.兄弟B.樹葉C.樹根D.分支結(jié)點
7.
8.以下敘述中正確的是()。
A.C語言編譯系統(tǒng)對標(biāo)識符的長度沒有規(guī)定
B.C語言標(biāo)識符的規(guī)定長度因系統(tǒng)而異
C.C語言規(guī)定標(biāo)識符長度最多允許16個字符,超長報錯
D.C語言規(guī)定以下劃線開頭的標(biāo)識符長度必須大于1
9.直接選擇排序的時間復(fù)雜度為()。(n為元素個數(shù))
A.O(n)B.O(log2n)C.O(nlog2n)D.O(n2)
10.在一個鏈?zhǔn)疥犃兄?,假設(shè)f和r分別為隊頭和隊尾指針,則刪除結(jié)點的運算是()。
A.r=f->nextB.r=r->nextC.f=f->nextD.f=r->next
11.以下數(shù)據(jù)結(jié)構(gòu)中,()是線性結(jié)構(gòu)。
A.有向圖B.棧C.線索二叉樹D.B樹
12.下面程序運行后的輸出結(jié)果是______。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=s[0].a+s[1].b;printf("%d\n",t);}
A.5B.6C.7D.8
13.
14.若有語句“typedefstructTT{charc;inta[4];}CIN;”,則下列敘述中正確的是()。
A.CIN是structTT類型的變量
B.TT是struct類型的變量
C.可以用TT定義結(jié)構(gòu)體變量
D.可以用CIN定義結(jié)構(gòu)體變量
15.設(shè)有定義“intx[2][3];”,則以下選項中不能表示數(shù)組元素x[0][1]的是()。
A.*(*x+1)B.*(*(x+1)C.(*x)[1]D.*(&x[0][0]+1)
16.有以下程序
prt(int*m,intn)
{
inti;
for(i=0;i<n;i++)
m[i]++;
}
main()
{
inta[]={1,2,3,4,5},i;
prt(a,5);
for(i=0;i<5;i++)
printf("%d,",a[i]);
}
程序運行后的輸出結(jié)果是A.A.1,2,3,4,5,
B.3,4,5,6,7,
C.2,3,4,5,6,
D.2,3,4,5,1,
17.程序運行后的輸出結(jié)果是()。#include<stdio.h>#include<stdlib.h>main(){int*a,*b,*c;a=b=c(int*)malloc(sizeof(int));*a=1;*b=2;*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}A.1.1.3B.2.2.3C.1.2.3D.3.3.3
18.有如下定義#defineD2intx=5;floaty=3.83;charC='D';則下面選項中錯誤的是
A.x++;B.y++;C.c++;D.D++;
19.
20.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
二、2.填空題(20題)21.有以下程序:
main()
{intt=1,i=5;
for(;i>=0;i--)t*=i;
printf("%d\n",t);
}
執(zhí)行后的輸出結(jié)果是【】。
22.下述程序的輸出結(jié)果是【】。
#include<stdio.h>
voidmain()
{
charc1[20]="1234";
charc2[20]="5678";
char*p1,*p2;
p1=c1;
p2=c2;
while(*p1++)
while(*p1++=*p2++);
printf("%s,c1);
}
23.深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為______。
24.設(shè)一棵完全二叉樹共有700個結(jié)點,則在該二叉樹中有【】個葉子結(jié)點。
25.對于長度為n的順序存儲的線性表,當(dāng)隨機插入和刪除—個元素時,需平均移動元素的個數(shù)為【】。
26.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達(dá)式【】。
27.mystrlen函數(shù)的功能是計算str所指字符串的長度,并作為函數(shù)值返回。請?zhí)羁铡?/p>
intmystrlen(char*str)
{intI;
for(I=0;【】!='\n';I++);
return(I);}
28.以下程序的功能是:利用指針指向三個整型變量,并通過指針運算找出三個數(shù)中的最大值,輸出到屏幕上。請?zhí)羁铡?/p>
main()
{intx,y,z,max,*px,*py,*pz,*pmax;
scanf("%d%d%d",&x,&y,&z);
px=&x;py=&y;pz=&z;pmax=&max;
【】;
if(*pmax<*py)*pmax=*py;
if(*pmax<*pz)*pmax=*pz;
printf("max=%d\n",max);}
29.以下程序運行后的輸出結(jié)果是______。
main()
{
intx=10,y=20,t=0
if(x==y)t=x;x=y;y=t;
printf("%d,%d/n",x,y);
}
30.下列程序段的運行結(jié)果是______。
charstr[]="ABCD",*p=str;
printf("%d\n",*(p+3));
31.以下程序的輸出結(jié)果是()。
#include<stdio.h>
voidfun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(3);printf("\n");
}
32.在關(guān)系模型中,二維表的行稱為______。
33.若a是int型變量,則表達(dá)式(a=2*3,a*2),a+6的值為______。
34.有以下說明定義和語句,可用a.day引用結(jié)構(gòu)體成員day,寫出引用結(jié)構(gòu)體成員day的其他兩種形式【】、【】。
struct{intday;charmouth;intyear;}a,*b;b=&a;
35.如果兩個8位二進(jìn)制數(shù)00010101與01000111相加,其結(jié)果用十進(jìn)制表示為【】。
36.數(shù)據(jù)管理技術(shù)的發(fā)展過程經(jīng)過人工管理、文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)三個階段,其中數(shù)據(jù)獨立性最高的階段是【】。
37.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的【】。
38.數(shù)據(jù)庫技術(shù)的主要特點為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨立性和數(shù)據(jù)統(tǒng)一管理與控制。
39.已知字符A的ACSII碼值為65,以下語句的輸出結(jié)果是______。
charch='B';
printf("%c%d\n",ch,ch);
40.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\N,*p,*q))
}
三、1.選擇題(20題)41.下列定義不正確的有______。
A.#definePI3.141592
B.#defineS345;
C.intmax(x,y);intx,y;{}
D.intmax(int,int);
42.下述程序的輸出結(jié)果是______。#include<stdio.h>main(){enumteam{Jack,Andy,Sam=10,Bob=Sam+2,Tom};printf("%d,%d",Andy,Tom);}
A.2,13B.1,0C.1,13D.1,12
43.有以下程序main(intarge,char*argv[])intn,i=0;while(argv[1][i]!='\0'){n-fun();i++;}printf("%d\n",n*argc);intfun(){staticints=0;s+=1;returns;}假設(shè)程序經(jīng)編譯、連接后生成可執(zhí)行文件exam.exe,若鍵入以下命令exam123<回車>
A.6B.8C.3D.4
44.下列合法的聲明語句是()。
A.int_abc=50;
B.doubleint=3+5e2.5;
C.longdo=1L:
D.float3_asd=3e-3;
45.若有說明:inta[3][4]={0};則下面正確的敘述是
A.只有元素a[0][0]可得到初值0
B.此說明語句不正確
C.數(shù)組a中各元素都可得到初值,但其值不一定為0
D.數(shù)組a中每個元素均可得到初值0
46.關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關(guān)系運算包括()。
A.排序、索引、統(tǒng)計B.選擇、投影、連接C.關(guān)聯(lián)、更新、排序D.顯示、打印、制表
47.當(dāng)執(zhí)行下面的程序時,其輸出結(jié)果為______。unionst{inta;charb;}main(){unionsts;char*p=(char*)&s;s.a=0x3132;s.b=0x33;printf("%c",*p);}
A.1B.2C.3D.不確定
48.以下敘述不正確的是______。
A.分號是C語言的必要組成部分
B.C程序的注釋可以寫在句的后面
C.函數(shù)是C程序的基本單位
D.主函數(shù)的名字不一定用main表示
49.已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。以下不能將變量c中的大寫字母轉(zhuǎn)換為對應(yīng)小寫字母的語句是
A.c=(c-'A')%26+'a'B.c=c+32C.c=c-'A'+'a'D.a=('A'+c)%26-'a'
50.以下不屬于對象的基本特點的是()
A.分類性B.多態(tài)性C.繼承性D.封裝性
51.下列選項中,不是一個算法的基本特征的是()。
A.完整性B.可行性C.有窮性D.擁有足夠的情報
52.執(zhí)行下列語句的結(jié)果為______。i=3;printf("%d,",++i);printf("%d",i++);
A.3,3B.3,4C.4,3D.4,4
53.有以下程序main(){intx[8]={8,7,6,5,0,0},*9;s=x+3;printf("%d\n",s[2]);}執(zhí)行后輸出結(jié)果是
A.隨機值B.0C.5D.6
54.下列程序中,正確的為______。
A.main(){int*pb=&b;float1>=15.25;printf("%d\n",*pb);}
B.amin(){inta,*pa;a=10;*pa=a;prinffC%d",*pa);}
C.main(){chars[20];char*ps=&s;scanf("%s",*p);printf("%s",*p);}
D.main(){charstr[10];int*ps=str[0];str="abcdefg";printf("%s",*p);}
55.算法具有5個特性,以下選項中不屬于算法特性的是()o
A.有窮性B.簡潔性C.可行性D.確定性
56.若要用下面的程序片段指針變量p指向一個存儲整型變量的動態(tài)存儲單元int*p;p=______malloc(sizeof(int));則應(yīng)填入______。
A.intB.int*C.(*int)D.(int*)
57.執(zhí)行語句for(i=1;i++<4;);后變量i的值是______。
A.3B.4C.5D.不定
58.下列程序的輸出結(jié)果是______。intd=1;fun(intp){staticintd=5;d+=p;printf("%d",d);return(d);}main(){inta=3;printf("%d\n",fun(a+fun(d)));}
A.699B.669C.61515D.6615
59.有以下程序:#include<stdio,h>voidsum(inta[]){a[0]=a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);prinff("%d\n",a[2]);}程序運行后的輸出結(jié)果是()。
A.6B.7C.5D.8
60.可在C程序中用作用戶標(biāo)識符的一組標(biāo)識符是A.and2007
B.Date_y-m-d
C.HiDr.Tom
D.caseBigl
四、選擇題(20題)61.以下關(guān)于邏輯運算符兩側(cè)運算對象的敘述中正確的是()。
A.可以是任意合法的表達(dá)式B.只能是整數(shù)0或非0整數(shù)C.可以是結(jié)構(gòu)體類型的數(shù)據(jù)D.只能是整數(shù)O或l
62.數(shù)據(jù)庫系統(tǒng)的核心是()。
A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫D.數(shù)據(jù)庫管理員
63.有以下程序程序運行后的輸出結(jié)果是()。
A.1,2,3.4,5,6,7,8,9,10,
B.10,9,8,7,6,5,4,3,2,1,
C.2,3,1,6,8,7,5,4,10,9,
D.10,9,8,7,6,1,2,3,4,5,
64.下列選項中屬于軟件生命周期開發(fā)階段任務(wù)的是()。
A.可行性研究
B.需求分析
C.詳細(xì)設(shè)計
D.軟件維護
65.有以下程序:
#include<stdio.h>
main()
{inta;
scanf("%d",&a);
if(a++<9)printf("%d\n",a);
clscprintf("%d\n",a--);
}
程序運行時從鍵盤輸入9<回車>,則輸出結(jié)果是()。
A.10B.11C.9D.8
66.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。
A.可行性分析報告B.軟件需求規(guī)格說明書C.概要設(shè)計說明書D.集成測試計劃
67.下列敘述中正確的是()。
A.循環(huán)隊列是隊列的一種鏈?zhǔn)酱鎯Y(jié)構(gòu)
B.循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)
C.循環(huán)隊列是非線性結(jié)構(gòu)
D.循環(huán)隊列是一種邏輯結(jié)構(gòu)
68.
69.下列程序的運行結(jié)果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}
A.2,3,2B.2,3,1C.1,3,3D.3,1,2
70.下列選擇中,不能用做標(biāo)識符的是()。
A.1234B._1_2C.int_2_D.2_int_
71.
72.
有以下函數(shù):
charfun(char*p)
{returnP;}
該函數(shù)的返回值是()。
A.無確切的值B.形參p中存放的地址值C.一個臨時存儲單元的地址D.形參p自身的地址值
73.
有以下程序:
main
{intk=5;
while(--k)printf("%d",k-=3);
printf("\n");
}
執(zhí)行后的輸出結(jié)果是()。
A.1B.2C.4D.死循環(huán)
74.設(shè)有以下定義:
inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int(*ptr)[3]=a,*p=a[0];
則下列能夠正確表示數(shù)組元素a【1】【2】的表達(dá)式是()。
A.*((*ptr+1)[2])
B.*(*(p+5))
C.(*ptr+1)+2
D.*(*(a+1)+2)
75.在URL中,默認(rèn)的Web服務(wù)器的端口是()。
A.80B.8080C.1024D.2048
76..C語言運算對象必須是整型的運算符是
A.%B./C.=D.<
77.下列對隊列的敘述正確的是()。
A.隊列按“先進(jìn)后出”原則組織數(shù)據(jù)
B.隊列屬于非線性表
C.隊列在隊尾刪除數(shù)據(jù)
D.隊列按“先進(jìn)先出”原則組織數(shù)據(jù)
78.
79.在軟件設(shè)計中不使用的工具是()。
A.系統(tǒng)結(jié)構(gòu)圖B.PAD圖C.數(shù)據(jù)流圖(DFD圖)D.程序流程圖
80.
有下列程序:
main
{intk=5:
while(--k)printf("%d",k=1);
printf("\n");
}
執(zhí)行后的輸出結(jié)果是()。
A.1B.2C.4D.死循環(huán)
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:對M名學(xué)生的學(xué)習(xí)成績,按從低到高的順序找出前m(m≤10)名學(xué)生來,并將這些學(xué)生數(shù)據(jù)存放在一個動態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首地址作為函數(shù)值返回。
請修改程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:除了字符串前導(dǎo)的*號之外,將串中其他*號全部刪除。在編寫函數(shù)時,不得使用c語言提供的字符串函數(shù)。
例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:
****ABCDEFG。
注意:部分源程序在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
參考答案
1.D由i"11的數(shù)字定義可知n!=n*(n-1)*(n-2)*…*1。在選項A中,由于f的初值為0,在for循環(huán)語句中,f依次乘以1,2,3,…,n,最后計算得到f=n!一0,所以選項A不正確。在選項B中,f的初值為1,在for循環(huán)語句中,f依次乘以1,2,3,…,(n-1),最后計算得到f=(n-1)!,所以選項B不正確。在選項C中,f的初值為1,在for循環(huán)語句中,f依次乘以n,n+1,n+2,……,所以選項c不正確。在選項D中,f的初值為l,在for循環(huán)語句中,f依次乘以n,n-1,n-2,…,2,最后計算得到f=n!,所以選項D正確。
2.B
3.C數(shù)據(jù)的存儲結(jié)構(gòu)有順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)兩種。不同存儲結(jié)構(gòu)的數(shù)據(jù)處理效率不同。由于鏈表采用鏈?zhǔn)酱鎯Y(jié)構(gòu),元素的物理順序并不連續(xù),對于插入和刪除無需移動元素,很方便,當(dāng)查找元素時就需要逐.個元素查找,因此查找的時間相對更長。
4.C結(jié)構(gòu)體不能通過結(jié)構(gòu)體名字整體賦值,通過結(jié)構(gòu)體名.成員名的方式賦值。所以C選項錯誤。
5.C
6.B
7.A
8.B對于標(biāo)識符的長度(即一個標(biāo)識符允許的字符個數(shù)),C語言編譯系統(tǒng)是有規(guī)定的,即標(biāo)識符的前若干個字符有效,超過的字符將不被識別。不同的C語言編譯系統(tǒng)所規(guī)定的標(biāo)識符有效長度是不同的。故本題答案為B選項。
9.D
10.C
11.B
12.B解析:在main函數(shù)中定義了一個structabc類型的數(shù)組,同時分別利用{1,2,3}及{4,5,6}對數(shù)組中兩個元素進(jìn)行初始化。在該結(jié)構(gòu)體,依次對其中的a,b,c三個變量進(jìn)行初始化。故s[0].a=1,s[1].b=5,所以本題輸出為6。
13.C
14.DCIN為結(jié)構(gòu)體類型名,而不是結(jié)構(gòu)體變量。故本題答案為D選項。
15.B選項A中*x等價于x[0],*x+1等價于x[0]+1,*(x[0]+1)等價于x[0][1],正確;選項B中,*(x+1)等價于x[1],*(*(x+1))等價于x[1][0],錯誤;選項C中,*x等價于x[0],(*x)[1]等價于x[0][1],正確;選項D中,&x[0][0]等價于x[0],&[0][0]+1等價于x[0]+1,*(x[0]+1)等價于x[0][1],正確。故本題答案為B選項。
16.C用數(shù)組名作為函數(shù)實參時,不是把數(shù)組的值傳遞給形參,而是把實參數(shù)組的起始地址傳遞給形參數(shù)組,這樣兩個數(shù)組就共同占用同一段內(nèi)存單元。本題通過“prt(a,5);”將數(shù)組a的首地址傳遞給了指針變量m,使指針變量m指向數(shù)組a的首地址,那么,對指針變量所指向的存儲單元的內(nèi)容的改變就是對數(shù)組a中的元素的改變。題中函數(shù)prt的作用是將指針變量m所指向的存儲單元中的元素值各加上1,故數(shù)組a中的值也隨之變化,所以。輸出的數(shù)組元素的值為2,3,4,5,6,。
17.D
18.D解析:C語言中++運算符的對象可以是整型、實型和字符型,但不可是常量,本題中D為常量。
19.D
20.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。
21.00解析:for循環(huán)執(zhí)行完成后t=5×4×3×2×1×0=0。
22.1567815678解析:本題使用了雙重while循環(huán),外循環(huán)的循環(huán)條件是*p1++,即每次循環(huán)時讓p1指向其后面的一個元素,而p1自增之前所指內(nèi)容為0時循環(huán)結(jié)束。內(nèi)循環(huán)的循環(huán)條件是*p1++=*p2++,即每次循環(huán)時讓p1和p2指向其后面的一個元素,而將p2自增之前所指的元素復(fù)制到p1自增之前所指的地址中去,直到p2自增之前所指內(nèi)容為0時循環(huán)結(jié)束。p1本來一開始是指向c1[0],由于外循環(huán)判斷條件時讓p1自增了,所以進(jìn)入內(nèi)循環(huán)時p1指向c1[1],而內(nèi)循環(huán)將p2所指字符串復(fù)制到p1所指位置,所以內(nèi)循環(huán)的結(jié)果是c1[1]、c1[2]、c1[3]、c1[4]、c1[5]分別被c2[0]、c2[1]、c2[2]、c2[3]、c2[4]改寫成'5'、'6'、'7'、'8'、'\\0'。故程序輸出的結(jié)果為15678。
23.1616解析:滿二叉樹的葉子結(jié)點都在最后一層,即第4層,且第4層的結(jié)點達(dá)到最大數(shù),即25-1=16。
24.350350解析:在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。在根據(jù)完全二叉樹的定義,在一棵完全二叉樹中,最多有1個度為1的結(jié)點。因此,設(shè)一棵完全二叉樹具有n個結(jié)點,若n為偶數(shù),則在該二叉樹中有n/2個葉子結(jié)點以及n/2-1個度為2的結(jié)點,還有1個是度為1的結(jié)點:若n為奇數(shù),則在該二叉樹中有[n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高效開發(fā)流程2025年考試試題及答案
- 現(xiàn)代社會中的編程語言選擇與應(yīng)用試題及答案
- 吉林省長春市第二實驗學(xué)校2025年數(shù)學(xué)八下期末達(dá)標(biāo)檢測模擬試題含解析
- 社會實踐活動在幼兒園的開展計劃
- 教學(xué)資源共享與借用策略計劃
- 湖北省黃岡市麻城市思源實驗學(xué)校2025屆八下數(shù)學(xué)期末綜合測試模擬試題含解析
- 2024年寧夏開放大學(xué)輔導(dǎo)員考試真題
- 2025屆福建省南安市柳城義務(wù)教育小片區(qū)八年級數(shù)學(xué)第二學(xué)期期末質(zhì)量跟蹤監(jiān)視試題含解析
- 2024年黑龍江省體育局下屬事業(yè)單位真題
- 黑龍江省七臺河市名校2025屆八下數(shù)學(xué)期末教學(xué)質(zhì)量檢測模擬試題含解析
- 病假醫(yī)療期申請單(新修訂)
- 95598工單大數(shù)據(jù)分析及壓降策略
- 《游園不值》-完整版課件
- 鉆孔樁鉆孔記錄表(旋挖鉆)
- 660MW機組金屬監(jiān)督項目
- 大連銀行招聘考試最新筆試復(fù)習(xí)材料題目內(nèi)容試卷真題復(fù)習(xí)
- 卷煙紙生產(chǎn)工藝
- JBK-698CX淬火機數(shù)控系統(tǒng)
- 肩關(guān)節(jié)鏡下肩袖修補術(shù)的護理查房ppt
- 回旋鏢運動軌跡的模擬
- 《康復(fù)醫(yī)學(xué)》PPT課件(PPT 105頁)
評論
0/150
提交評論