版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2022-2023年廣東省揭陽市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.設(shè)C語言中,一個int型數(shù)據(jù)在內(nèi)存中占2個字節(jié),則unsignedint型數(shù)據(jù)的取值范圍為()。
A.0~255B.0~32767C.0~65535D.0~2147483647
2.以下敘述中正確的是()。A.A.當(dāng)對文件的讀(寫)操作完成之后,必須將它關(guān)閉,否則可能導(dǎo)致數(shù)據(jù)丟失
B.打開一個已存在的文件并進(jìn)行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋
C.在一個程序中當(dāng)對文件進(jìn)行了寫操作后,必須先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù)
D.c語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)
3.設(shè)a,b,c,d,m和n均為int型變量,且a=5,b=6,c=7,d=m=2,n=2,則邏輯表達(dá)式(m=a>b)&&(n=c>d)運(yùn)算后,n的值為()
A.0B.1C.2D.3
4.以下選項(xiàng)中能用作數(shù)據(jù)常量的是()。
A.115LB.0118C.1.5e1.5D.o115
5.有以下程序:#include<stdio.h>main(){inta=1,b=0;if(--a)b++;elseif(a==0)b+=2;elseb+=3:print[("%d\n",b);}程序運(yùn)行后的輸出結(jié)果是()。A.0B.1C.2D.3
6.
7.定義學(xué)生選修課程的關(guān)系模式如下:SC(S#,Sn,C#,Cn,G,Cr)(其屬性分別為學(xué)號、姓名、課程號、課程名、成績、學(xué)分)則對主屬性部分依賴的是()。
A.C#→CnB.(S#,C#)→GC.(S#,C#)→S#D.(S#,C#)→C#
8.在下列關(guān)系運(yùn)算中,不改變關(guān)系表中的屬性個數(shù)但能減少元組個數(shù)的是A.并B.交C.投影D.笛卡兒乘積
9.若一組記錄的排序碼為(7,9,3,5,1,2,10),則利用堆排序的方法建立的初始堆為()
A.10,7,9,3,5,1,2
B.10,9,7,5,1,2,3
C.10,9,7,5,3,2,1
D.10,9,7,3,2,1,5
10.下列敘述中錯誤的是()。A.在程序中凡是以“#”開始的語句行都是預(yù)處理命令行
B.預(yù)處理命令行的最后不能以分號表示結(jié)束
C.#defineMAX是合法的宏定義命令行
D.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的
11.如果要求一個線性表既能較快地查找,又能適應(yīng)動態(tài)變化的要求,可以采用下列哪一種查找方法()
A.分塊B.順序C.折半D.哈希
12.
13.設(shè)有一個棧,元素依次進(jìn)棧的順序?yàn)锳、B、C、D、E。下列()是不可能的出棧序列。
A.A,B,C,D,EB.B,C,D,E,AC.E,A,B,C,DD.E,D,C,B,A
14.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()A.元素按值有序B.構(gòu)采用順序存儲結(jié)C.元素按值有序且采用順序存儲結(jié)構(gòu)D.元素按值有序且采用鏈?zhǔn)酱鎯Y(jié)構(gòu)
15.
16.設(shè)變量已正確定義,則以下能正確計算n!的程序段是______。
A.f=0;for(i=1;i<=n;i++)f*=i;
B.f=1;for(i=1;i<n;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;
17.有以下程序:#include<stdio.h>main(){intk=5;while(--k)printf(“%d”,k-=3);printf(“\n”);}程序運(yùn)行后的輸出結(jié)果是()。
A.1B.2C.4D.死循環(huán)
18.設(shè)”inta=15,b=26;”,則”printf(“%d,%d”,a,b);”的輸出結(jié)果是()。
A.15B.26,15C.15,26D.26
19.下列程序是用來判斷數(shù)組中特定元素的位置所在的。#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun
A.7,431B.6C.980D.6,980
20.下列程序的輸出的結(jié)果是()。main{doubled=3.2;intx,Y;x=1.2;v=(x+3.8)/5.0;printf("%d\n",d*y);}A.3B.3.2C.0D.3.07
二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。
main()
{charc=′z′;
printf("%c",c-25);}
22.有如圖所示的雙鏈表結(jié)構(gòu),請根據(jù)圖示完成結(jié)構(gòu)體的定義:
structaa
{intdata;
【】}node;
23.在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖(DFD)中,利用【】對其中的圖形元素進(jìn)行確切解釋。
24.以下程序用來輸出結(jié)構(gòu)體變量ex所占存儲單元的字節(jié)數(shù),請?zhí)羁铡?/p>
structst
{charname[20];doublescore;};
main()
{structstex;
printf("exsize:%d\n",sizeof(【】));}
25.耦合和內(nèi)聚是評價模塊獨(dú)立性的兩個主要標(biāo)準(zhǔn),其中______反映了模塊內(nèi)各成分之間的聯(lián)系。
26.求任意一個數(shù)(用16位二進(jìn)制碼表示)的補(bǔ)碼。
main()
{
unsignedinta;
【】;
scanf("%o",&a);
printf("%o\n",getbits(a));
}
unsignedintgetbits(value)
unsignedintvalue;
{
unsignedintz;
z=【】;
if(z==0100000)
【】;
else
z=value;
return(z);
}
27.下列程序執(zhí)行輸出的結(jié)果是______。
#include<stdio.h>
f(intA)
{intb=0;
staticc=7;
a=c++;b++;
return(A);
}
main()
{inta=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
printf("%d\n",k);
}
28.軟件生命周期分為軟件定義期、軟件開發(fā)期和軟件維護(hù)期,詳細(xì)設(shè)計屬于______中的一個階段。
29.有以下程序:
main()
{intt=1,i=5;
for(;i>=0;i--)t*=i;
printf("%d\n",t);
}
執(zhí)行后的輸出結(jié)果是【】。
30.以下程序的輸出結(jié)果是【】。
#defineMAX(x,y)(x)>(y)?(x):(y)
main()
{inta=5,b=2,c=3,d=3,t;
t=MAX(a+b,e+d)*10;
printf("%d\n",t);
}
31.下列程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{inta=2,b=-1,C=2;
if(a<B)
if(b<O)c=0;
elsec++;
printf("%d\n",C);
}
32.下列程序的運(yùn)行結(jié)果是______。
#include<stdio.h>
main()
{inta=10,b=3;
printf("%d,",a%b);
printf("%d,",(a-h,a+b));
printf("%d\n",a-b?a-b:a+b);
}
33.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),線性表、棧和隊(duì)列都屬于【】。
34.以下程序的輸出結(jié)果是()。#definePR(ar)printf("ar=%d”,ar)main(){intj,a[]={1,8,3,7,6,13,17,15},*p=a+5;for(j=3;j;j--)switch(j){case1:case2:PR(*p++);break;case3:PR(*(--p));}}
35.下列程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{intx=3,y=2,z=1;
if(x<y)
if(y<0)z=0;
elsez+=1;
printf("%d\n",z);
}
36.有以下程序
main()
{intt=1,i=5;
for(;i>=0;i--)t*=i;
printf("%d\n",t);
}
執(zhí)行后輸出結(jié)果是______。
37.以下程序的運(yùn)行結(jié)果是【】。
#include<string.h>
typeaefstructstudent{
charname[10];
longsno;
floatscore;
{STU;
main()
{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d;
d=a;
if(strcmp(a.name,b.name)>0)d=b;
if(strcmp(C.name,)>0)d=C;
printf("%1d%s\n",d.sno,p->name);
}
38.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。
39.下列的for語句的循環(huán)次數(shù)為______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
40.下列程序的運(yùn)行結(jié)果是______。
#include<stdio.h>
longfunc(intx)
{longp;
if(x==0||x==1)
return(1);
p=x*func(x-1);
return(p);
}
main()
{printf("%d\n",func(4));
}
三、1.選擇題(20題)41.有以下程序:main(){intn=0,m=l,x=2;if(!n)x-=l:if(!m)x-=2;if(!x)x-=3;printf("%d\n",x);}執(zhí)行后的輸出結(jié)果是______。
A.2B.1C.3D.6
42.C語言函數(shù)返回值的類型是由______決定的。
A.return語句中的表達(dá)式類型B.調(diào)用函數(shù)的主調(diào)函數(shù)類型C.調(diào)用函數(shù)時臨時D.定義函數(shù)時所指定的函數(shù)類型
43.下列程序的運(yùn)行結(jié)果為
#include<stdio.h>
voidabc(char*str)
{inta,b;
for(a=b=0;str[a]!='\0';a++)
if(str[a]!='c')
str[b++]=str[a];
str[b]='\0';}
voidmain()
{charstr[]="abcdef";
abc(str);
printf("str[]=%s",str);}
A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab
44.假定所有變量均已正確說明,下列程序段運(yùn)行后x的值是a=d=c=0;x=35;if(!a)x=-1,elseif(b);if(c)x=3;elsex=4;
A.34B.4C.35D.3
45.與十進(jìn)制數(shù)96等值的二進(jìn)制是()
A.1100000B.10010110C.1100001D.1100011
46.以下選項(xiàng)中非法的表達(dá)式是
A.0<=x<100B.i=i==0C.(char)(65+3)D.x+1=x+1
47.若定義inta=10,則表達(dá)式a+=a-=a*=a的值是()。
A.0B.-180C.-100D.-90
48.在數(shù)據(jù)處理中,其處理的最小單位是()。
A.數(shù)據(jù)B.數(shù)據(jù)項(xiàng)C.數(shù)據(jù)結(jié)構(gòu)D.數(shù)據(jù)元素
49.已知、棵二叉樹的后序遍歷序列是dabec,中序遍歷序列是debac,則它的前序遍歷序列是()。
A.acbedB.decabC.deabcD.cedba
50.函數(shù)fseek的正確調(diào)用形式是()。
A.fseek(位移量,起始點(diǎn),文件類型指針);
B.fseek(文件類型指針,位移量,起始點(diǎn));
C.fseek(文件類型指針,起始點(diǎn),位移量);
D.fseek(起始點(diǎn),位移量,文件類型指針);
51.有以下程序:#include<stdio.h>inta=1;intfun(intC){staticinta=2;c=c+1;return(a++)+c;}main(){inti,k=0;for(i=0;i<2;i++){inta=3;k+=f(A);}k+=a;printf("%d\n",k);}程序的運(yùn)行結(jié)果是()。
A.14B.15C.16D.17
52.在C語言的循環(huán)語句for、while、do-while中,用于結(jié)束本次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)的語句是______。
A.switchB.breakC.continueD.goto
53.若有以下類型說明語句:charw;intx;floaty,z;則表達(dá)式w*x+z-y的結(jié)果為______類型。
A.floatB.charC.intD.double
54.若fp已正確定義并指向某個文件,當(dāng)未遇到該文件結(jié)束標(biāo)志時函數(shù)feof(fp)的值為()
A.0B.1C.-1D.一個非0值
55.若執(zhí)行下面程序時從鍵盤上輸入5,main(){intx;scanf("%d",&x);if(x++>5)printf("%d\n",x);elseprintf("%d\n",x-);}則輸出是_______。
A.7B.6C.5D.4
56.已定義c為字符型變量,則下列語句中正確的是()。
A.c='97'B.c="97"C.c=97D.c="a"
57.計算機(jī)軟件一般包括應(yīng)用軟件和____。
A.字處理軟件B.系統(tǒng)軟件C.服務(wù)性軟件D.操作系統(tǒng)
58.在計算機(jī)中,算法是指()。
A.查詢方法B.加工方法C.解題方案的準(zhǔn)確而完整的描述D.排序方法
59.需求分析階段的任務(wù)是()
A.軟件開發(fā)方法B.軟件開發(fā)工具C.軟件開發(fā)費(fèi)用D.軟件系統(tǒng)功能
60.以下函數(shù)值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}
A.intB.不確定C.voidD.float
四、選擇題(20題)61.以下選項(xiàng)中值為1的表達(dá)式是()。
A.
B.
C.
D.
62.下列敘述中正確的是()。
A.算法就是程序B.設(shè)計算法時只需要考慮數(shù)據(jù)結(jié)構(gòu)的設(shè)計C.設(shè)計算法時只需要考慮結(jié)果的可靠性D.以上三種說法都不對
63.有以下程序:
main
{chara='a',b;
printf("%c,",++a);
printf("%c\n",b=a++):
)
程序運(yùn)行后的輸出結(jié)果是()。A.A.b,bB.b,cC.a,bD.a,c
64.數(shù)據(jù)庫管理系統(tǒng)是()。
A.操作系統(tǒng)的一部分B.在操作系統(tǒng)支持下的系統(tǒng)軟件C.一種編譯系統(tǒng)D.一種操作系統(tǒng)
65.
66.有以下函數(shù)intaaa(char*s){char*t=s;while(*t+t);t--:return(t-s);}以下關(guān)于aaa函數(shù)的功能敘述正確的是()。A.求字符串S的長度B.比較兩個串的大小C.將串S復(fù)制到串tD.求字符串S所占字節(jié)數(shù)
67.下列字符串不屬于標(biāo)識符的是()
A.sumB.averageC.day_nightD.M,D.JOHN
68.
69.有如下程序
voidf(int*x,int*y)
{intt;
t=*x;*x=*y;*y=t;
}
main()
{inta[6]={1,2,4,6,8,10},i,*p,*q;
p=a;q=&a[5];
while(p<q)
{f(p,q);p++;q--;}
for(i=0;i<6;i++)
printf("%d,",a[i]);
}
該程序的輸出結(jié)果是
A.1,2,4,6,8,10B.10,8,4,6,2,1
C.10,8,6,4,2,1D.10,2,4,6,8,1
70.有3個關(guān)系R、S和T如下.
則由關(guān)系R和S得到關(guān)系T的操作是()。A.自然連接B.差C.交D.并
71.
已知有如下結(jié)構(gòu)體:
structsk
{inta;
floatb;
}data,*p;
若有P=&data,則對data的成員a引用正確的是()。
A.(*p).data.a(chǎn)B.(*p).a(chǎn);C.p->data.a(chǎn)D.p.data.a(chǎn)
72.若fp是指向某文件的指針,且已讀到文件末尾,則庫函數(shù)feof(fp)的返回值是
A.EOFB.-1C.1D.NULL
73.下列關(guān)于隊(duì)列的敘述中正確的是()。A.在隊(duì)列中只能插人數(shù)據(jù)B.在隊(duì)列中只能刪除數(shù)據(jù)C.隊(duì)列是先進(jìn)先出的線性表D.隊(duì)列是先進(jìn)后出的線性表
74.有以下程序(函數(shù)fun只對下標(biāo)為偶數(shù)的元素進(jìn)行操作):
#include<stdio.h>
voidfun(int*n)
{inti,j,k,t;
for(i=0;i<n-1;i+=2)
{k=i;
for(j=i;j<n;j+=2)if(a[j]>a[k])k=j;
t[a[i];a[i]=a[k];a[k]=t;
}
}
main
{intaa[lO]=[1,2,3,4,5,6,7],a;
fun(aa,7);
for(i=0;i<7;i++)printf("%d,",aa[i]);
printf("n");
}
程序運(yùn)行后的輸出結(jié)果是()。
A.7,2,5,4,3,6,1,
B.1,6,3,4,5,2,7,
C.7,6,5,4,3,2,1,
D.1,7,3,5,6,2,1,
75.
76.
77.
78.
有下列程序:
intfun(intx[],intn)
{staticintsum=0,i:
for(i0;i<n;i++)sum+=x[i];
returnsum;
}
main
{inta[]={1,2,3,4,5),b[]一{6,7,8,9),s=0:
s=fun(a,5)+fun(b,4);printf("%d\n",s):
}
程序執(zhí)行后的輸出結(jié)果是()。
A.45B.50C.60D.55
79.請選出以下程序的輸出結(jié)果()。
A.1234
B.4321
C.0000
D.4444
80.有以下程序:
程序的運(yùn)行結(jié)果是()。
A.0B.10C.20D.出錯
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:利用插入排序法對字符串中的字符按從小到大的順序進(jìn)行排序。插入法的基本方法是:先對字符串中的頭2個元素進(jìn)行排序,然后把第3個字符插入到前2個字符中,插入后前3個字符依然有序;再把第4個字符插人到前3個字符中,待排序的字符串已在主函數(shù)中賦予。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫一個函數(shù)voidproc(char*tt,intpp[]),統(tǒng)計在tt字符串中“a”到“z”26個字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。例如,當(dāng)輸入字符串a(chǎn)bcdefghxyzabcde“e后,程序的輸出結(jié)果應(yīng)該是:222233110000000000000000111。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.C
2.AB)選項(xiàng)中打開一個已存在的文件并進(jìn)行了寫操作后,原有文件中的全部數(shù)據(jù)不一定被覆蓋,也可以對源文件進(jìn)行追加操作等。c)選項(xiàng)中在一個程序中當(dāng)對文件進(jìn)行了寫操作后,不用先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù),可以用fseek()函數(shù)進(jìn)行重新定位即可。D)選項(xiàng)中,C語言中的文件可以進(jìn)行隨機(jī)讀寫。故本題答案為A)。
3.C
4.AA選項(xiàng)中“115L”表示長整型數(shù)據(jù)。B選項(xiàng)是八進(jìn)制常量的表示方法,但是在八進(jìn)制中不能含有數(shù)字8,所以B選項(xiàng)錯誤。C選項(xiàng)中e后面應(yīng)該是整數(shù),而不能是小數(shù)1.5,所以C選項(xiàng)錯誤。D選項(xiàng)中八進(jìn)制常量應(yīng)該是以數(shù)字“0”開始,而不是以字母“o”開始。故本題答案為A選項(xiàng)。
5.D
6.D
7.A關(guān)系SC中的主鍵是(S#,C#),但C#(課程號)單獨(dú)就可以決定Cn(課程名),存在著對主鍵的部分依賴。本題答案為A選項(xiàng)。
8.B并運(yùn)算的含義是:假設(shè)有一個“在校學(xué)生信息表”,它包括這樣一些字段:學(xué)號、姓名、性別、出生日期、籍貫、聯(lián)系電話,這個表的關(guān)系模式可以表示為:校學(xué)生信息表(學(xué)號,姓名,性別,出生日期,籍貫,聯(lián)系電話)。還有一個“新生信息表(學(xué)號,姓名,性別,出生日期,籍貫,聯(lián)系電話)”。若要將9月份進(jìn)校的新生信息加入到“在校學(xué)生信息表”中,這樣進(jìn)行的就是并運(yùn)算。并運(yùn)算不會改變表的字段(又叫屬性)個數(shù),但是會增加記錄(又叫元組)個數(shù)。交運(yùn)算的含義是:兩個表(要求結(jié)構(gòu)要一模一樣)進(jìn)行交運(yùn)算取兩個表中相同的記錄構(gòu)成一個新表,交運(yùn)算不會改變表的字段個數(shù),但是一般會減少記錄個數(shù)。投影運(yùn)算的含義是:從在“校學(xué)生信息表(學(xué)號,姓名,性別,出生日期,籍貫,聯(lián)系電話)”中選取學(xué)生的“姓名”和“聯(lián)系電話”這兩個字段,可以構(gòu)成一個“學(xué)生聯(lián)系表(姓名,聯(lián)系電話)”,這就是一個投影運(yùn)算,所以投影運(yùn)算一般會減少字段(又叫屬性)的個數(shù)。笛卡兒乘積又叫稱乘運(yùn)算,設(shè)有n元關(guān)系R和m元關(guān)系s,他們分別有P、q個元組,則關(guān)系R和關(guān)系s的笛卡兒積表示為R×S,該關(guān)系是一個n+m元關(guān)系,元組個數(shù)是PXq。因此本題的正確答案是B。\r\n
9.B
10.C解析:預(yù)處理命令行是以“#”開始的語句,預(yù)處理命令行的最后不能以分號表示結(jié)束,預(yù)處理命令行。其中宏定義的字符替換的定義格式為:#define標(biāo)識符字符串,預(yù)處理命令行是在系統(tǒng)對源程序進(jìn)行編譯之前進(jìn)行處理的,不是在程序執(zhí)行的過程中。
11.D
12.B
13.C
14.C
15.A
16.D解析:A選項(xiàng),將f賦值為0,結(jié)果得到0,因?yàn)?乘任何數(shù)都為0;B選項(xiàng),i<n,計算的是(n-1)!,C選項(xiàng)將陷入死循環(huán)。
17.A“--k”是先自減再使用,所以第1次判斷條件即while(4),條件為真輸出k的值,k=4-3,結(jié)果為1;第2次判斷條件即while(0),條件為假,結(jié)束循環(huán),輸出回車換行符。故本題答案為A選項(xiàng)。
18.C
19.D解析:本題中直接使用指針變量k,但在使用時要注意對k的指針運(yùn)算。此外,一開始應(yīng)知道*k的值為數(shù)組中的某一下標(biāo)值,即*k=0,本函數(shù)的功能是找出數(shù)組中的最大元素的位置及最大元素的值。
20.C根據(jù)賦值運(yùn)算的類型轉(zhuǎn)換規(guī)則,先將double型的常量l.2轉(zhuǎn)換為int型,因?yàn)閤的類型是int,則X的值為1;執(zhí)行語句y=(K+3.8)/5.0時,即先將整型變量X的值1轉(zhuǎn)換為double型1.0,然后3.8相加得4.8,進(jìn)行除法運(yùn)算4.8/5.0結(jié)果為0.即變量y的值為0,d*Y的值也為0,故選C選項(xiàng)。
21.aa解析:'z'的ASCII碼值為122,經(jīng)過c-25運(yùn)算后,得97,以字符形式輸出是a。
22.structaa*lhead*rchild;structaa*lhead,*rchild;解析:結(jié)構(gòu)體對鏈表的定義。
23.數(shù)據(jù)字典或DD數(shù)據(jù)字典或DD解析:數(shù)據(jù)流圖用來對系統(tǒng)的功能需求進(jìn)行建模,它可以用少數(shù)幾種符號綜合地反映出信息在系統(tǒng)中的流動、處理和存儲情況。數(shù)據(jù)詞典(DataDictionary,DD)用于對數(shù)據(jù)流圖中出現(xiàn)的所有成分給出定義,它使數(shù)據(jù)流圖上的數(shù)據(jù)流名字、加工名字和數(shù)據(jù)存儲名字具有確切的解釋。
24.structst或exstructst或ex解析:結(jié)構(gòu)體類型數(shù)據(jù),其數(shù)據(jù)成員各自占據(jù)不同的存儲空間,整個結(jié)構(gòu)體變量所占存儲單元的字節(jié)數(shù)為每一個數(shù)據(jù)成員所占的存儲空間的和。注意:共用體變量所占存儲單元字節(jié)數(shù)的計算。
25.內(nèi)聚內(nèi)聚
26.unsignedintgetbits()value&0100000z=~value+1unsignedintgetbits()\r\nvalue&0100000\r\nz=~value+1
27.88解析:第1次for循環(huán),i=0,調(diào)用函數(shù)f(2),然后將a的值加1,在f()函數(shù)中,變量c為static類型,所以c=8:第2次for循環(huán),i=1,調(diào)用函數(shù)f(3),然后將a的值加1,調(diào)用函數(shù)f(3)時,a=c++=8,所以k=8。
28.軟件開發(fā)軟件開發(fā)解析:軟件生命周期分為3個時期共8個階段:軟件定義期(問題定義、可行性研究和需求分析)、軟件開發(fā)期(系統(tǒng)設(shè)計、詳細(xì)設(shè)計、編碼和測試)、軟件維護(hù)期(即運(yùn)行維護(hù)階段)。
29.00解析:for循環(huán)執(zhí)行完成后t=5×4×3×2×1×0=0。
30.77解析:在C語言中,宏定義是直接替換的,所以在對表達(dá)式MAX(a+b,c+d)*l0進(jìn)行替換后,表達(dá)式變?yōu)?a+b)>(c+d)?(a+b):(c+d)*10。在這個條件表達(dá)式中,(a+b)>(c+d)為真,所以用(a+b)的值作為整個表達(dá)式的值(否則用(c+9d)*10)的值作為整個表達(dá)式的值),而(a+b)的值為7。所以整個表達(dá)式的值為7。
31.22解析:分析程序,a=2,b=-1,c=2時,if語句的表達(dá)式a<b不成立,不再往下判斷,直接退出if語句,執(zhí)行后面的輸出語句,程序結(jié)束。在這個程序中a、b、c的值沒做任何改變。
32.11371,13,7解析:本題考查3個知識點(diǎn):①余數(shù)的計算,題中的a=10,b=3,a%b=1:②(表達(dá)式1,表達(dá)式2)形式的結(jié)果為最后一個表達(dá)式的值,題中的a=10,b=3,(a-b,a+b)=a+b=13;③條件運(yùn)算符的使用,題中的a-b?a-b:a+b,判斷語句a-b=7不為0,所以執(zhí)行a-b,結(jié)果為7。
33.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:本題考查了數(shù)據(jù)結(jié)構(gòu)的基本概念。與棧類似,隊(duì)列也是線性表,可以采用鏈?zhǔn)酱鎯Y(jié)構(gòu),所以帶鏈的隊(duì)列屬于線性結(jié)構(gòu)。
34.ar=6ar=6ar=13ar=6ar=6ar=13解析:通過*p=a+5將指針P指向a[5],第1次循環(huán),i=3時,switch(3),執(zhí)行case3,*(-p)-a[4]=6,所以輸出ar=6;第2次循環(huán),j=2時,switch(2),執(zhí)行case2,(*p++)是先引用a[4]的值6,輸出ar=6,再將指針P移位指向a[5];第3次循環(huán),j=1時,switch(1),執(zhí)行case1,case1后沒有break語句,接著執(zhí)行case2,(*p++)是先引用a[5]的值13,輸出ar=13,再將指針P移位指向a[6]。
35.11解析:ifelse語句的功能是:若表達(dá)式的值為真,執(zhí)行語句1,并跳過其他語句,執(zhí)行ifelse語句的下一條語句,若表達(dá)式的值為假,跳過語句1,執(zhí)行語句2,依次往下判斷。題中,x=3,y=2,第一個if語句的控制條件x<y就不滿足,又沒有與之配對的else語句,所以直接執(zhí)行printf語句,在整個過程中變量z的值都沒發(fā)生變化。
36.00解析:本題中的for循環(huán)共執(zhí)行了6次,每執(zhí)行一次將相應(yīng)i的值相乘,最后當(dāng)i=-1時停止循環(huán).該for循環(huán)執(zhí)行完后t的值為5*4*3*2*1*0=0,故最后輸出I的值為0。
37.2002Shanxian2002Shanxian解析:本題中第一個if語句將結(jié)構(gòu)體變量a.name和結(jié)構(gòu)體變量b.name中較小的那個賦值給結(jié)構(gòu)體變量d,第二個if語句將結(jié)構(gòu)體變量c.name和結(jié)構(gòu)體變量d.name較大的那個賦給結(jié)構(gòu)體變量d。通過函數(shù)strcmp比較。strcmp()函數(shù)有兩個參數(shù),分別為被比較的兩個字符串。如果第一個字符串大于第二個字符串返回值大于0,若第一個小于第二個返回值小于0,相等時返回值為0。字符串比較大小的標(biāo)準(zhǔn)是從第一個字符開始依次向右比較,遇到某一個字符大,該字符所在的字符串就是較大的字符串,如果遇到某一個字符小,該字符所在的字符串就是較小的字符串。本程序中第一個if語句strcmp(a.name,b.name)>0為真,故將b的值賦給d,第二個if語句strcmp(c.name,d.name)>0為假,故不執(zhí)行后面的語句,最后d的值為b的值,因此d.sno和p->name的值為2002Shangxian。
38.存儲結(jié)構(gòu)
39.66解析:分析程序可知,每循環(huán)一次,x的值加1,然后檢測循環(huán)控制條件(y!=19)&&(x<7),因y的值不變,故滿足x<7時循環(huán)6次。
40.2424解析:本題考查函數(shù)的循環(huán)調(diào)用。p=x*func(x-1),當(dāng)x=4時,不滿足if語句的條件,p=4*func(3),x=3也不滿足條件,則func(3)=3*func(2),func(2)=2*func(1),x=1滿足條件return(1),則輸出結(jié)果為4*3*2*1=24。
41.B解析:因n=0,故!n為真,執(zhí)行語句x-=1得x=x-1=2-1=1;條件!m和!x不成立,所以x=1,正確答案為1。
42.D解析:函數(shù)值的類型應(yīng)當(dāng)是在定義函數(shù)時指定的。在定義函數(shù)時對函數(shù)值說明的類型一般應(yīng)該和return語句中的表達(dá)式類型—致,如果不—致,則以函數(shù)類型為準(zhǔn),即函數(shù)類型決定返回值的類型。
43.A解析:本題考查了用字符指針引用字符數(shù)組中的字符及對字符的操作。函數(shù)abc()的for語句執(zhí)行過程是:從字符指針str所指向的字符數(shù)組的第一個元素開始,逐一判斷字符是否為'c',若不是就執(zhí)行一次數(shù)組元素的賦值過程,若字符為'c'就不執(zhí)行。
44.B
45.A
46.D解析:本題考核的知識點(diǎn)是表達(dá)式的賦值。選項(xiàng)D中將表達(dá)式的值賦給表達(dá)式,在c語言中是不允許給表達(dá)式賦值的,故選項(xiàng)D是非法的表達(dá)式,所以,4個選項(xiàng)中選項(xiàng)D符合題意。
47.B解析:算術(shù)運(yùn)算符的運(yùn)算規(guī)則是:從右到左的原則。所以表達(dá)式中先計算a=a-a*(上標(biāo))a的值是-90,再計算a=a+a的值是-180。
48.BB)【解析】數(shù)據(jù)元素是由多個數(shù)據(jù)項(xiàng)組成,數(shù)據(jù)是能夠被計算機(jī)識別、存儲和加工處理的信息載體,數(shù)據(jù)處理的最小單位是數(shù)據(jù)項(xiàng)。
49.D解析:依據(jù)后序遍歷序列可確定根結(jié)點(diǎn)為c,由中序遍歷序列可知其左子樹由deba構(gòu)成,右子樹為空;又由左子樹的后序遍歷序列可知其根結(jié)點(diǎn)為e,由中序遍歷序列可知其左子樹為d,右子樹由ba構(gòu)成,如圖所示。由此可知該二叉樹的前序遍歷序列為選項(xiàng)D)。
50.B解析:改變文件位置的指針函數(shù)fseek()的調(diào)用形式為:fseek(fp,offset,position);。fseek函數(shù)參數(shù)說明:“fp”是指向該文件的文件型指針;“offset'’為位移量,指從起始點(diǎn)position.到要確定的新位置的字節(jié)數(shù)。也就是以起點(diǎn)為基準(zhǔn),向前移動的字節(jié)數(shù)。ANSIC要求該參數(shù)為長整型量;“position”為起始點(diǎn),指出以文件的什么位置為基準(zhǔn)進(jìn)行移動,position的值用整型常數(shù)表示,“0”表示文件的開頭,“1”表示文件的當(dāng)前位置,“2”表示文件的末尾。
51.A解析:本題考查的重點(diǎn)是對static變量以及全局變量的理解。static變量是函數(shù)或文件中的永久變量。本題中staticinta=2語句定義了一個static局部變量,編譯程序?yàn)槠渖捎谰么鎯卧?,即調(diào)用函數(shù)fun時,其值一直都保存著,而不是使用函數(shù)外所賦的值(盡管開頭定義了一個同名的全局變量)。在主函數(shù)中,for循環(huán)進(jìn)行兩次,第一次循環(huán)得f(3)=3+1+2=6,從而k+=f(3)=6,第二次循環(huán)由于static局部變量a變成了3,從而f(3)的值為7,故k+=f(3)=13,再執(zhí)行k+=a時,此時a的值為全局變量,其值為1,故k的值為14,選項(xiàng)A是正確的。
52.C解析:循環(huán)輔助控制語句有continue;和break;,前者跳過本次循環(huán),進(jìn)行下一次循環(huán),后者跳出整個循環(huán)語句。
53.A解析:在進(jìn)行運(yùn)算時,不同類型的數(shù)據(jù)參加運(yùn)算,需要先將其轉(zhuǎn)換成同一類型的數(shù)據(jù),然后再進(jìn)行運(yùn)算。轉(zhuǎn)換的順序由低到高為:char,short→int→unsigned→long→double←float,故結(jié)果為float型。
54.A解析:文件尾測試函數(shù)feof()的應(yīng)用,讀取文件時,當(dāng)文件中的數(shù)據(jù)全部讀完后,文件位置指針將位于文件的結(jié)尾。此時如果讀數(shù)據(jù),將會出現(xiàn)錯誤。為了保證讀寫數(shù)據(jù)的正確性,需要進(jìn)行文件尾測試,文件尾測試使用函數(shù)feof(),它的功能是測試fp指向的文件是否到達(dá)文件尾。若到達(dá)文件尾,返回值為非0,否則返回值為0。在本題中fP指向的某文件還沒有到了文件尾,因此返回0。
55.B解析:根據(jù)C語言的語法,x++是使用x之后,再將x的值加1,在if語句中,x的值為5,條件不成立,執(zhí)行else后面的語句,因?yàn)閤的值已經(jīng)加1,為6,所以打印結(jié)果為6。
56.C解析:本題考核的知識點(diǎn)是字符型變量的基本概念。用單引號括起來的一個字符稱為字符常量,而選項(xiàng)B和選項(xiàng)D中用的是雙引號,而用雙引號括起來的字符為字符串常量,故選項(xiàng)B和選項(xiàng)D不正確。因?yàn)樵贑語言中,字符常量在存儲時,并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲單元中,所以C語言使字符型數(shù)據(jù)和整形數(shù)據(jù)之間可以通用,選項(xiàng)C正確.而選項(xiàng)A中,給字符型變量賦值時只能賦一個字符,而9,7作為字符時為兩個字符且必須分別為單引號括起來,故選項(xiàng)A不正確,所以,4個選項(xiàng)中選項(xiàng)C符合題意。
57.B
58.CC。【解析】計算機(jī)算法是指解題方案的準(zhǔn)確而完整的描述,它的基本特征分別是:可行性、確定性、有窮性和擁有足夠的情報。
59.DD)【解析】需求分析是軟件定義時期的最后一個階
\n段,它的基本任務(wù)就是詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對象,充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在這些基礎(chǔ)上確定新系統(tǒng)的功能。
60.A解析:函數(shù)定義時如果數(shù)據(jù)類型默認(rèn),則默認(rèn)為int。函數(shù)中如果有“retum(表達(dá)式):”語句,表達(dá)式的類型可能與函數(shù)的類型不一致,但它并不能改變函數(shù)的類型,實(shí)際情況是把表達(dá)式轉(zhuǎn)換為函數(shù)值的類型作為返回值,因此本題的函數(shù)值類型是int。
61.B解析:‘0’代表ASCⅡ碼為48的字符,‘\\0’代表ASCⅡ碼為0的字符,‘1’代表ASCⅡ碼為49的字符,所以只有選項(xiàng)B的表達(dá)式的值為1。
62.D算法是指解題方案的準(zhǔn)確而完整的描述,算法不等于程序,也不等于計算方法,所以A錯誤。設(shè)計算法時不僅要考慮對數(shù)據(jù)對象的運(yùn)算和操作,還要考慮算法的控制結(jié)構(gòu)。故答案為D選項(xiàng)。
63.A++a與a++的區(qū)別是前者先自加再運(yùn)算,后者是先運(yùn)算后自加。
64.B數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等,是一種在操作系統(tǒng)支持下的系統(tǒng)軟件,因此本題答案為B)。
65.B
66.A在while循環(huán)開始前,指針t和s都指向字符串的起始位置。while循環(huán)的判斷條件中,判斷t所指位置是否為字符串的結(jié)束標(biāo)志,同時讓t右移一位。當(dāng)while循環(huán)結(jié)束時,t自減1,此時t指向的位置是字符串的結(jié)束標(biāo)志,故t-s的值是字符串的長度。
67.D
68.B
69.C題目中給出的程序分為兩個部分:主函數(shù)main和函數(shù)f。在主函數(shù)中初始化定義了一個整型數(shù)組a,大小為6,并定義了兩個數(shù)組指針p,q。指針p指向數(shù)組第一個元素的地址,指針q指向數(shù)組最后一個元素的地址。主函數(shù)包含一個while語句,循環(huán)條件為p<q,while語句內(nèi)部先調(diào)用了f函數(shù),p、q指針為該函數(shù)的實(shí)參,隨后進(jìn)行了p++操作和q--,即使p指針指向下一個元素的地址,q指針指向前一個元素的地址。由于是數(shù)組存儲,必然存在初始時,有p<q,當(dāng)p>=q時,while語句結(jié)束。while語句后面是for語句,該語句的作用是輸出數(shù)組a[]中所有的數(shù)據(jù)。
f函數(shù)的形參為整型指針,函數(shù)的功能是使得輸入的指針變量所指向的數(shù)據(jù)進(jìn)行交換,由于使用的是指針變量,故在f函數(shù)中對指針的操作結(jié)果會影響調(diào)用函數(shù)中(main)實(shí)參所指數(shù)據(jù)的改變,題目中f函數(shù)的調(diào)用實(shí)質(zhì)是將main函數(shù)中的p、q指針?biāo)傅臄?shù)據(jù)進(jìn)行交換,也將導(dǎo)致數(shù)組a中相應(yīng)的數(shù)據(jù)進(jìn)行交換。結(jié)合while語句,也就是將數(shù)組a中的第1個數(shù)據(jù)與第6個數(shù)據(jù)進(jìn)行交換,第2個數(shù)據(jù)與第5個數(shù)據(jù)進(jìn)行交換,以此類推,得到結(jié)果10,8,6,4,2,1。
70.B關(guān)系之間的操作分為自然連接、投影、交、并、差等,由圖可知此操作為差操作。
71.B
\n本題主要考查結(jié)構(gòu)指針:P=&data,訪問結(jié)構(gòu)體的成員。它可以通過結(jié)構(gòu)變量訪問,即data,可以用等價的指針形式:(*p).a(chǎn)和P->a來訪問結(jié)構(gòu)體變量中的成員。
\n
72.C解析:EOF是文本文件的文件結(jié)束標(biāo)志,NULL是打開文件錯誤的時候返回值。foef(fp)用來判斷文件位置指針是否在文件末尾,文本文件和二進(jìn)制文件均可以使用此函數(shù)。如果遇到文件結(jié)束就返回1,否則返回0。
73.C隊(duì)列是一種操作受限的線性表。它只允許在線性表的一端進(jìn)行插入操作,另一端進(jìn)行刪除操作。其中,允許插入的一端稱為隊(duì)尾(rear),允許刪除的一端稱為隊(duì)首(front)。隊(duì)列具有先進(jìn)先出的特點(diǎn),它是按“先進(jìn)先出”的原則組織數(shù)據(jù)的。
74.A\n對下標(biāo)為偶數(shù)的元素進(jìn)行降序排序,下標(biāo)為奇數(shù)元素保持不變。
\n
75.B
76.B
77.D
78.C
\n在函數(shù)intfun(intxE],intn)的定義中,變量sum為一個靜態(tài)局部變量。由于在整個程序運(yùn)行期間,靜態(tài)局部變量在內(nèi)存中的靜態(tài)存儲中占據(jù)著永久的存儲單元。函數(shù)intfun(intx[],intn)的功能是求出數(shù)組X[]各個元素的和,所以在j三函數(shù)中,調(diào)用函數(shù)fun(a,5)后,變量sum=1+2+3+4+5=15,當(dāng)再次調(diào)用fun(b,4)后,變量sum=15+6+7+8+9=45,所以S=l5+45=60。
\n
79.C本題的考查點(diǎn)是函數(shù)的形參和實(shí)參的關(guān)系。x作為函數(shù)sub的實(shí)參時,函數(shù)對X值的改變沒有返回主函數(shù),并能使得x的值變化,所以在打印時,x的值始終是0。
80.C分配內(nèi)存空間函數(shù)malloe的調(diào)用形式:類型說明符*)malloe(size)。其功能是在內(nèi)存的動態(tài)存儲區(qū)中分配一塊長度為”size”字節(jié)的連續(xù)區(qū)域,函數(shù)的返回值為該區(qū)域的首地址?!鳖愋驼f明符”表示把該區(qū)域用于何種數(shù)據(jù)類型。
81.錯誤:c=arr[i];
正確:ch=arrEi];
【解析】由函數(shù)定義可知,函數(shù)proc只定義了變量ch,沒有定義變量c。因此,“c=”r[i];”應(yīng)改為“ch=arr[i];”。
82.
【解析】由函數(shù)proc()可知,數(shù)組PP中存放26個字母各自出現(xiàn)的次數(shù),初始化為0。然后判斷字符串tt中每一個字符,每檢查一個字符,將數(shù)組pp中相應(yīng)的元素加1。
2022-2023年廣東省揭陽市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.設(shè)C語言中,一個int型數(shù)據(jù)在內(nèi)存中占2個字節(jié),則unsignedint型數(shù)據(jù)的取值范圍為()。
A.0~255B.0~32767C.0~65535D.0~2147483647
2.以下敘述中正確的是()。A.A.當(dāng)對文件的讀(寫)操作完成之后,必須將它關(guān)閉,否則可能導(dǎo)致數(shù)據(jù)丟失
B.打開一個已存在的文件并進(jìn)行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋
C.在一個程序中當(dāng)對文件進(jìn)行了寫操作后,必須先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù)
D.c語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)
3.設(shè)a,b,c,d,m和n均為int型變量,且a=5,b=6,c=7,d=m=2,n=2,則邏輯表達(dá)式(m=a>b)&&(n=c>d)運(yùn)算后,n的值為()
A.0B.1C.2D.3
4.以下選項(xiàng)中能用作數(shù)據(jù)常量的是()。
A.115LB.0118C.1.5e1.5D.o115
5.有以下程序:#include<stdio.h>main(){inta=1,b=0;if(--a)b++;elseif(a==0)b+=2;elseb+=3:print[("%d\n",b);}程序運(yùn)行后的輸出結(jié)果是()。A.0B.1C.2D.3
6.
7.定義學(xué)生選修課程的關(guān)系模式如下:SC(S#,Sn,C#,Cn,G,Cr)(其屬性分別為學(xué)號、姓名、課程號、課程名、成績、學(xué)分)則對主屬性部分依賴的是()。
A.C#→CnB.(S#,C#)→GC.(S#,C#)→S#D.(S#,C#)→C#
8.在下列關(guān)系運(yùn)算中,不改變關(guān)系表中的屬性個數(shù)但能減少元組個數(shù)的是A.并B.交C.投影D.笛卡兒乘積
9.若一組記錄的排序碼為(7,9,3,5,1,2,10),則利用堆排序的方法建立的初始堆為()
A.10,7,9,3,5,1,2
B.10,9,7,5,1,2,3
C.10,9,7,5,3,2,1
D.10,9,7,3,2,1,5
10.下列敘述中錯誤的是()。A.在程序中凡是以“#”開始的語句行都是預(yù)處理命令行
B.預(yù)處理命令行的最后不能以分號表示結(jié)束
C.#defineMAX是合法的宏定義命令行
D.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的
11.如果要求一個線性表既能較快地查找,又能適應(yīng)動態(tài)變化的要求,可以采用下列哪一種查找方法()
A.分塊B.順序C.折半D.哈希
12.
13.設(shè)有一個棧,元素依次進(jìn)棧的順序?yàn)锳、B、C、D、E。下列()是不可能的出棧序列。
A.A,B,C,D,EB.B,C,D,E,AC.E,A,B,C,DD.E,D,C,B,A
14.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()A.元素按值有序B.構(gòu)采用順序存儲結(jié)C.元素按值有序且采用順序存儲結(jié)構(gòu)D.元素按值有序且采用鏈?zhǔn)酱鎯Y(jié)構(gòu)
15.
16.設(shè)變量已正確定義,則以下能正確計算n!的程序段是______。
A.f=0;for(i=1;i<=n;i++)f*=i;
B.f=1;for(i=1;i<n;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;
17.有以下程序:#include<stdio.h>main(){intk=5;while(--k)printf(“%d”,k-=3);printf(“\n”);}程序運(yùn)行后的輸出結(jié)果是()。
A.1B.2C.4D.死循環(huán)
18.設(shè)”inta=15,b=26;”,則”printf(“%d,%d”,a,b);”的輸出結(jié)果是()。
A.15B.26,15C.15,26D.26
19.下列程序是用來判斷數(shù)組中特定元素的位置所在的。#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun
A.7,431B.6C.980D.6,980
20.下列程序的輸出的結(jié)果是()。main{doubled=3.2;intx,Y;x=1.2;v=(x+3.8)/5.0;printf("%d\n",d*y);}A.3B.3.2C.0D.3.07
二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。
main()
{charc=′z′;
printf("%c",c-25);}
22.有如圖所示的雙鏈表結(jié)構(gòu),請根據(jù)圖示完成結(jié)構(gòu)體的定義:
structaa
{intdata;
【】}node;
23.在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖(DFD)中,利用【】對其中的圖形元素進(jìn)行確切解釋。
24.以下程序用來輸出結(jié)構(gòu)體變量ex所占存儲單元的字節(jié)數(shù),請?zhí)羁铡?/p>
structst
{charname[20];doublescore;};
main()
{structstex;
printf("exsize:%d\n",sizeof(【】));}
25.耦合和內(nèi)聚是評價模塊獨(dú)立性的兩個主要標(biāo)準(zhǔn),其中______反映了模塊內(nèi)各成分之間的聯(lián)系。
26.求任意一個數(shù)(用16位二進(jìn)制碼表示)的補(bǔ)碼。
main()
{
unsignedinta;
【】;
scanf("%o",&a);
printf("%o\n",getbits(a));
}
unsignedintgetbits(value)
unsignedintvalue;
{
unsignedintz;
z=【】;
if(z==0100000)
【】;
else
z=value;
return(z);
}
27.下列程序執(zhí)行輸出的結(jié)果是______。
#include<stdio.h>
f(intA)
{intb=0;
staticc=7;
a=c++;b++;
return(A);
}
main()
{inta=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
printf("%d\n",k);
}
28.軟件生命周期分為軟件定義期、軟件開發(fā)期和軟件維護(hù)期,詳細(xì)設(shè)計屬于______中的一個階段。
29.有以下程序:
main()
{intt=1,i=5;
for(;i>=0;i--)t*=i;
printf("%d\n",t);
}
執(zhí)行后的輸出結(jié)果是【】。
30.以下程序的輸出結(jié)果是【】。
#defineMAX(x,y)(x)>(y)?(x):(y)
main()
{inta=5,b=2,c=3,d=3,t;
t=MAX(a+b,e+d)*10;
printf("%d\n",t);
}
31.下列程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{inta=2,b=-1,C=2;
if(a<B)
if(b<O)c=0;
elsec++;
printf("%d\n",C);
}
32.下列程序的運(yùn)行結(jié)果是______。
#include<stdio.h>
main()
{inta=10,b=3;
printf("%d,",a%b);
printf("%d,",(a-h,a+b));
printf("%d\n",a-b?a-b:a+b);
}
33.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),線性表、棧和隊(duì)列都屬于【】。
34.以下程序的輸出結(jié)果是()。#definePR(ar)printf("ar=%d”,ar)main(){intj,a[]={1,8,3,7,6,13,17,15},*p=a+5;for(j=3;j;j--)switch(j){case1:case2:PR(*p++);break;case3:PR(*(--p));}}
35.下列程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{intx=3,y=2,z=1;
if(x<y)
if(y<0)z=0;
elsez+=1;
printf("%d\n",z);
}
36.有以下程序
main()
{intt=1,i=5;
for(;i>=0;i--)t*=i;
printf("%d\n",t);
}
執(zhí)行后輸出結(jié)果是______。
37.以下程序的運(yùn)行結(jié)果是【】。
#include<string.h>
typeaefstructstudent{
charname[10];
longsno;
floatscore;
{STU;
main()
{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d;
d=a;
if(strcmp(a.name,b.name)>0)d=b;
if(strcmp(C.name,)>0)d=C;
printf("%1d%s\n",d.sno,p->name);
}
38.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。
39.下列的for語句的循環(huán)次數(shù)為______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
40.下列程序的運(yùn)行結(jié)果是______。
#include<stdio.h>
longfunc(intx)
{longp;
if(x==0||x==1)
return(1);
p=x*func(x-1);
return(p);
}
main()
{printf("%d\n",func(4));
}
三、1.選擇題(20題)41.有以下程序:main(){intn=0,m=l,x=2;if(!n)x-=l:if(!m)x-=2;if(!x)x-=3;printf("%d\n",x);}執(zhí)行后的輸出結(jié)果是______。
A.2B.1C.3D.6
42.C語言函數(shù)返回值的類型是由______決定的。
A.return語句中的表達(dá)式類型B.調(diào)用函數(shù)的主調(diào)函數(shù)類型C.調(diào)用函數(shù)時臨時D.定義函數(shù)時所指定的函數(shù)類型
43.下列程序的運(yùn)行結(jié)果為
#include<stdio.h>
voidabc(char*str)
{inta,b;
for(a=b=0;str[a]!='\0';a++)
if(str[a]!='c')
str[b++]=str[a];
str[b]='\0';}
voidmain()
{charstr[]="abcdef";
abc(str);
printf("str[]=%s",str);}
A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab
44.假定所有變量均已正確說明,下列程序段運(yùn)行后x的值是a=d=c=0;x=35;if(!a)x=-1,elseif(b);if(c)x=3;elsex=4;
A.34B.4C.35D.3
45.與十進(jìn)制數(shù)96等值的二進(jìn)制是()
A.1100000B.10010110C.1100001D.1100011
46.以下選項(xiàng)中非法的表達(dá)式是
A.0<=x<100B.i=i==0C.(char)(65+3)D.x+1=x+1
47.若定義inta=10,則表達(dá)式a+=a-=a*=a的值是()。
A.0B.-180C.-100D.-90
48.在數(shù)據(jù)處理中,其處理的最小單位是()。
A.數(shù)據(jù)B.數(shù)據(jù)項(xiàng)C.數(shù)據(jù)結(jié)構(gòu)D.數(shù)據(jù)元素
49.已知、棵二叉樹的后序遍歷序列是dabec,中序遍歷序列是debac,則它的前序遍歷序列是()。
A.acbedB.decabC.deabcD.cedba
50.函數(shù)fseek的正確調(diào)用形式是()。
A.fseek(位移量,起始點(diǎn),文件類型指針);
B.fseek(文件類型指針,位移量,起始點(diǎn));
C.fseek(文件類型指針,起始點(diǎn),位移量);
D.fseek(起始點(diǎn),位移量,文件類型指針);
51.有以下程序:#include<stdio.h>inta=1;intfun(intC){staticinta=2;c=c+1;return(a++)+c;}main(){inti,k=0;for(i=0;i<2;i++){inta=3;k+=f(A);}k+=a;printf("%d\n",k);}程序的運(yùn)行結(jié)果是()。
A.14B.15C.16D.17
52.在C語言的循環(huán)語句for、while、do-while中,用于結(jié)束本次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)的語句是______。
A.switchB.breakC.continueD.goto
53.若有以下類型說明語句:charw;intx;floaty,z;則表達(dá)式w*x+z-y的結(jié)果為______類型。
A.floatB.charC.intD.double
54.若fp已正確定義并指向某個文件,當(dāng)未遇到該文件結(jié)束標(biāo)志時函數(shù)feof(fp)的值為()
A.0B.1C.-1D.一個非0值
55.若執(zhí)行下面程序時從鍵盤上輸入5,main(){intx;scanf("%d",&x);if(x++>5)printf("%d\n",x);elseprintf("%d\n",x-);}則輸出是_______。
A.7B.6C.5D.4
56.已定義c為字符型變量,則下列語句中正確的是()。
A.c='97'B.c="97"C.c=97D.c="a"
57.計算機(jī)軟件一般包括應(yīng)用軟件和____。
A.字處理軟件B.系統(tǒng)軟件C.服務(wù)性軟件D.操作系統(tǒng)
58.在計算機(jī)中,算法是指()。
A.查詢方法B.加工方法C.解題方案的準(zhǔn)確而完整的描述D.排序方法
59.需求分析階段的任務(wù)是()
A.軟件開發(fā)方法B.軟件開發(fā)工具C.軟件開發(fā)費(fèi)用D.軟件系統(tǒng)功能
60.以下函數(shù)值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}
A.intB.不確定C.voidD.float
四、選擇題(20題)61.以下選項(xiàng)中值為1的表達(dá)式是()。
A.
B.
C.
D.
62.下列敘述中正確的是()。
A.算法就是程序B.設(shè)計算法時只需要考慮數(shù)據(jù)結(jié)構(gòu)的設(shè)計C.設(shè)計算法時只需要考慮結(jié)果的可靠性D.以上三種說法都不對
63.有以下程序:
main
{chara='a',b;
printf("%c,",++a);
printf("%c\n",b=a++):
)
程序運(yùn)行后的輸出結(jié)果是()。A.A.b,bB.b,cC.a,bD.a,c
64.數(shù)據(jù)庫管理系統(tǒng)是()。
A.操作系統(tǒng)的一部分B.在操作系統(tǒng)支持下的系統(tǒng)軟件C.一種編譯系統(tǒng)D.一種操作系統(tǒng)
65.
66.有以下函數(shù)intaaa(char*s){char*t=s;while(*t+t);t--:return(t-s);}以下關(guān)于aaa函數(shù)的功能敘述正確的是()。A.求字符串S的長度B.比較兩個串的大小C.將串S復(fù)制到串tD.求字符串S所占字節(jié)數(shù)
67.下列字符串不屬于標(biāo)識符的是()
A.sumB.averageC.day_nightD.M,D.JOHN
68.
69.有如下程序
voidf(int*x,int*y)
{intt;
t=*x;*x=*y;*y=t;
}
main()
{inta[6]={1,2,4,6,8,10},i,*p,*q;
p=a;q=&a[5];
while(p<q)
{f(p,q);p++;q--;}
for(i=0;i<6;i++)
printf("%d,",a[i]);
}
該程序的輸出結(jié)果是
A.1,2,4,6,8,10B.10,8,4,6,2,1
C.10,8,6,4,2,1D.10,2,4,6,8,1
70.有3個關(guān)系R、S和T如下.
則由關(guān)系R和S得到關(guān)系T的操作是()。A.自然連接B.差C.交D.并
71.
已知有如下結(jié)構(gòu)體:
structsk
{inta;
floatb;
}data,*p;
若有P=&data,則對data的成員a引用正確的是()。
A.(*p).data.a(chǎn)B.(*p).a(chǎn);C.p->data.a(chǎn)D.p.data.a(chǎn)
72.若fp是指向某文件的指針,且已讀到文件末尾,則庫函數(shù)feof(fp)的返回值是
A.EOFB.-1C.1D.NULL
73.下列關(guān)于隊(duì)列的敘述中正確的是()。A.在隊(duì)列中只能插人數(shù)據(jù)B.在隊(duì)列中只能刪除數(shù)據(jù)C.隊(duì)列是先進(jìn)先出的線性表D.隊(duì)列是先進(jìn)后出的線性表
74.有以下程序(函數(shù)fun只對下標(biāo)為偶數(shù)的元素進(jìn)行操作):
#include<stdio.h>
voidfun(int*n)
{inti,j,k,t;
for(i=0;i<n-1;i+=2)
{k=i;
for(j=i;j<n;j+=2)if(a[j]>a[k])k=j;
t[a[i];a[i]=a[k];a[k]=t;
}
}
main
{intaa[lO]=[1,2,3,4,5,6,7],a;
fun(aa,7);
for(i=0;i<7;i++)printf("%d,",aa[i]);
printf("n");
}
程序運(yùn)行后的輸出結(jié)果是()。
A.7,2,5,4,3,6,1,
B.1,6,3,4,5,2,7,
C.7,6,5,4,3,2,1,
D.1,7,3,5,6,2,1,
75.
76.
77.
78.
有下列程序:
intfun(intx[],intn)
{staticintsum=0,i:
for(i0;i<n;i++)sum+=x[i];
returnsum;
}
main
{inta[]={1,2,3,4,5),b[]一{6,7,8,9),s=0:
s=fun(a,5)+fun(b,4);printf("%d\n",s):
}
程序執(zhí)行后的輸出結(jié)果是()。
A.45B.50C.60D.55
79.請選出以下程序的輸出結(jié)果()。
A.1234
B.4321
C.0000
D.4444
80.有以下程序:
程序的運(yùn)行結(jié)果是()。
A.0B.10C.20D.出錯
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:利用插入排序法對字符串中的字符按從小到大的順序進(jìn)行排序。插入法的基本方法是:先對字符串中的頭2個元素進(jìn)行排序,然后把第3個字符插入到前2個字符中,插入后前3個字符依然有序;再把第4個字符插人到前3個字符中,待排序的字符串已在主函數(shù)中賦予。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫一個函數(shù)voidproc(char*tt,intpp[]),統(tǒng)計在tt字符串中“a”到“z”26個字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。例如,當(dāng)輸入字符串a(chǎn)bcdefghxyzabcde“e后,程序的輸出結(jié)果應(yīng)該是:222233110000000000000000111。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.C
2.AB)選項(xiàng)中打開一個已存在的文件并進(jìn)行了寫操作后,原有文件中的全部數(shù)據(jù)不一定被覆蓋,也可以對源文件進(jìn)行追加操作等。c)選項(xiàng)中在一個程序中當(dāng)對文件進(jìn)行了寫操作后,不用先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù),可以用fseek()函數(shù)進(jìn)行重新定位即可。D)選項(xiàng)中,C語言中的文件可以進(jìn)行隨機(jī)讀寫。故本題答案為A)。
3.C
4.AA選項(xiàng)中“115L”表示長整型數(shù)據(jù)。B選項(xiàng)是八進(jìn)制常量的表示方法,但是在八進(jìn)制中不能含有數(shù)字8,所以B選項(xiàng)錯誤。C選項(xiàng)中e后面應(yīng)該是整數(shù),而不能是小數(shù)1.5,所以C選項(xiàng)錯誤。D選項(xiàng)中八進(jìn)制常量應(yīng)該是以數(shù)字“0”開始,而不是以字母“o”開始。故本題答案為A選項(xiàng)。
5.D
6.D
7.A關(guān)系SC中的主鍵是(S#,C#),但C#(課程號)單獨(dú)就可以決定Cn(課程名),存在著對主鍵的部分依賴。本題答案為A選項(xiàng)。
8.B并運(yùn)算的含義是:假設(shè)有一個“在校學(xué)生信息表”,它包括這樣一些字段:學(xué)號、姓名、性別、出生日期、籍貫、聯(lián)系電話,這個表的關(guān)系模式可以表示為:校學(xué)生信息表(學(xué)號,姓名,性別,出生日期,籍貫,聯(lián)系電話)。還有一個“新生信息表(學(xué)號,姓名,性別,出生日期,籍貫,聯(lián)系電話)”。若要將9月份進(jìn)校的新生信息加入到“在校學(xué)生信息表”中,這樣進(jìn)行的就是并運(yùn)算。并運(yùn)算不會改變表的字段(又叫屬性)個數(shù),但是會增加記錄(又叫元組)個數(shù)。交運(yùn)算的含義是:兩個表(要求結(jié)構(gòu)要一模一樣)進(jìn)行交運(yùn)算取兩個表中相同的記錄構(gòu)成一個新表,交運(yùn)算不會改變表的字段個數(shù),但是一般會減少記錄個數(shù)。投影運(yùn)算的含義是:從在“校學(xué)生信息表(學(xué)號,姓名,性別,出生日期,籍貫,聯(lián)系電話)”中選取學(xué)生的“姓名”和“聯(lián)系電話”這兩個字段,可以構(gòu)成一個“學(xué)生聯(lián)系表(姓名,聯(lián)系電話)”,這就是一個投影運(yùn)算,所以投影運(yùn)算一般會減少字段(又叫屬性)的個數(shù)。笛卡兒乘積又叫稱乘運(yùn)算,設(shè)有n元關(guān)系R和m元關(guān)系s,他們分別有P、q個元組,則關(guān)系R和關(guān)系s的笛卡兒積表示為R×S,該關(guān)系是一個n+m元關(guān)系,元組個數(shù)是PXq。因此本題的正確答案是B。\r\n
9.B
10.C解析:預(yù)處理命令行是以“#”開始的語句,預(yù)處理命令行的最后不能以分號表示結(jié)束,預(yù)處理命令行。其中宏定義的字符替換的定義格式為:#define標(biāo)識符字符串,預(yù)處理命令行是在系統(tǒng)對源程序進(jìn)行編譯之前進(jìn)行處理的,不是在程序執(zhí)行的過程中。
11.D
12.B
13.C
14.C
15.A
16.D解析:A選項(xiàng),將f賦值為0,結(jié)果得到0,因?yàn)?乘任何數(shù)都為0;B選項(xiàng),i<n,計算的是(n-1)!,C選項(xiàng)將陷入死循環(huán)。
17.A“--k”是先自減再使用,所以第1次判斷條件即while(4),條件為真輸出k的值,k=4-3,結(jié)果為1;第2次判斷條件即while(0),條件為假,結(jié)束循環(huán),輸出回車換行符。故本題答案為A選項(xiàng)。
18.C
19.D解析:本題中直接使用指針變量k,但在使用時要注意對k的指針運(yùn)算。此外,一開始應(yīng)知道*k的值為數(shù)組中的某一下標(biāo)值,即*k=0,本函數(shù)的功能是找出數(shù)組中的最大元素的位置及最大元素的值。
20.C根據(jù)賦值運(yùn)算的類型轉(zhuǎn)換規(guī)則,先將double型的常量l.2轉(zhuǎn)換為int型,因?yàn)閤的類型是int,則X的值為1;執(zhí)行語句y=(K+3.8)/5.0時,即先將整型變量X的值1轉(zhuǎn)換為double型1.0,然后3.8相加得4.8,進(jìn)行除法運(yùn)算4.8/5.0結(jié)果為0.即變量y的值為0,d*Y的值也為0,故選C選項(xiàng)。
21.aa解析:'z'的ASCII碼值為122,經(jīng)過c-25運(yùn)算后,得97,以字符形式輸出是a。
22.structaa*lhead*
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物理化學(xué)期末考試習(xí)題及答案
- 全國公開課一等獎初中化學(xué)九年級上冊(人教2024年新編)《分子和原子》課件
- 二零二五年度苯板防火安全材料買賣協(xié)議3篇
- 二零二五年度鐵路部門員工鐵路勞保用品租賃協(xié)議3篇
- 醫(yī)療險種解析如何選擇最適合家庭的保險
- 二零二五年度新能源充電樁安裝施工與運(yùn)營合作協(xié)議3篇
- 小學(xué)生科技寫作能力的提升路徑與方法
- 2024蔬菜大棚溫室租賃與農(nóng)業(yè)技術(shù)培訓(xùn)合同2篇
- 業(yè)務(wù)精英2024年銷售獎勵協(xié)議版B版
- 商業(yè)投資策略與家庭財富增長
- 森林報測試題
- 刑法涉及安全生產(chǎn)的16宗罪解讀
- 北京高考化學(xué)方程式知識點(diǎn)總結(jié)
- 銅精礦加工費(fèi)簡析
- 機(jī)電拆除專項(xiàng)施工方案
- 平鍵鍵槽的尺寸與公差
- 8S目視化管理實(shí)施計劃表(放大)
- 分式混合運(yùn)算專項(xiàng)練習(xí)158題(有答案)26頁
- 地鐵日常保潔程序及應(yīng)急預(yù)案
- 牛津譯林版四年級英語上冊專項(xiàng)訓(xùn)練排序
- 畢業(yè)設(shè)計(論文)-多軸自動螺栓擰緊機(jī)的設(shè)計
評論
0/150
提交評論