版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2022-2023年河北省衡水市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.在一個源文件中定義的全局變量的作用域為:()
A.本程序的全部范圍B.本函數(shù)的全部范圍C.從定義該變量的位置開始到本文件結(jié)束D.以上說法都不正確
2.已知有double型變量x=2.5,y=4.7,整型變量a=7,則表達(dá)式x+a%3*(int)(x+y)%2/4的值是()。
A.2.4B.2.5C.2.75D.0
3.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
4.設(shè)有以下說明語句structnum{inta;floatb;}numl;則下面的敘述不正確的是______。
A.struct是結(jié)構(gòu)體類型的關(guān)鍵字
B.structnum是用戶定義的結(jié)構(gòu)體類型
C.numl是用戶定義的結(jié)構(gòu)體類型名
D.a和b都是結(jié)構(gòu)體成員名
5.以下是正確的C語言實型常量的是()。
A..8e+8.B.e+8C.+8e.8D.+8.8e+8
6.設(shè)S為一個長度為n的字符串,其中的字符各不相同,則S中的互異的非平凡子串(非空且不同于S本身)的個數(shù)為()。
A.2n-1B.n2C.(n2/2)+(n/2)D.(n2/2)+(n/2)-1
7.設(shè)二維數(shù)組A[1...m,1...n]按行存儲在數(shù)組B中,則二維數(shù)組元素A[i,j]在一維數(shù)組B中的下標(biāo)為()。A.A.n*(i-1)+jB.n*(i-1)+j-1C.i*(j-1)D.j*m+i-1
8.在一個C語言源程序文件中所定義的全局變量,其作用域為()。
A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍
9.有以下程序(函數(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");}程序運行后的輸出結(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,
10.設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是()。A.x=y+z+5.++yB.int(15.8%5)C.x=y*5=x+zD.x=25%5.0
11.設(shè)長度為n的鏈隊列用單循環(huán)鏈表表示,若只設(shè)頭指針,則入隊操作的時間復(fù)雜度為_______。
A.O(1)B.O(log2n)C.O(n)D.O(n2)
12.待排序的關(guān)鍵碼序列為(33,18,9,25,67,82,53,95,12,70),要按關(guān)鍵碼值遞增的順序排序,采取以第一個關(guān)鍵碼為基準(zhǔn)元素的快速排序法,第一趟排序后關(guān)鍵碼33被放到第()個位置。
A.3B.5C.7D.9
13.
14.第
17
題
若有條件表達(dá)式(exp)?a++:b--,則以下表達(dá)式中能完全等價于表達(dá)式(exp)的是
A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)
15.下列運算符中,運算對象必須是整型的是()。
A./B.%=C.=D.&
16.
17.下列程序段的時間復(fù)雜度為()。A.O(n)B.O(log2n)C.O(n3)D.O(n2)
18.串是一種特殊的線性表,其特殊性體現(xiàn)在()。
A.可以順序存儲B.數(shù)據(jù)元素是一個字符C.可以鏈接存儲D.數(shù)據(jù)元素可以是多個字符
19.有以下程序:#include<stdio.h>#deflneS1(z)4*z+4*(z)#defineS2(x,y)4*(x)*(y)+y*xmain(){inta=1,b=2;printf(“%d,”,S1(a+b));printf(“%d,”,S2(a,b)+S1(3));printf(“%d”,S2(3+a,b+3));}程序運行后的輸出結(jié)果是()。
A.18,34,100B.24,34,92C.24,34,100D.18,34,92
20.下列選項中不合法的十六進(jìn)制數(shù)是()。
A."0"xffB."0"X11C."0"x1gD.”0”Xabc
二、2.填空題(20題)21.設(shè)有如下程序main(){intn1,n2;scanf(“%d”,&n2);while(n2!=0){n1=n2%10;n2=n2/10;printf(“%d”,n1);}}程序運行后,如果從鍵盤上輸入1298,則輸出結(jié)果為
22.以下程序的輔出結(jié)果是【】。
voidfun(ints[])
{inti;
for(i=0;i<10;i++)printf("%d",s[i]);
printf("\n\n");
}
main()
{inta[3][4]={{99,2},{3,4,5},{6,7,8}};
fun(a[0]);
}
23.以下程序的輸出結(jié)果是()。#include<stdio.h>fun(){staticinta=0;a+=3;printf("%d",A);}main(){intcc;for(cc=1;cc<5;cc++)fun();printf("\n");}
24.在進(jìn)行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接碟塊,其中______的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。
25.以下程序段的運行結(jié)果是()。#include<stdio.h>main(){intx=2,y=1:switch(x){case1:switch(y){case0:printf("x=2,y=1\n");break;case1:printf("y=1\n");break;}case2:printf("x=2\n");}}
26.下列程序段的運行結(jié)果是______。
charstr口="ABCD",*p=str;
printf("%d\n",*(p+3));
27.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{ints[]={1,2,3,4},i;
intx=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf("%d",x);}
printf("\n");}
sb(s1,y)
int*s1,y;
{staticinti1=3;
y=s1[i1];
i1--;
return(y);}
28.若fp已正確定義為一個文件指針,d1.dat為二進(jìn)制文件,請?zhí)羁眨员銥椤白x”而打開此文件:
fp=fopen(【】);。
29.下列程序的輸出結(jié)果是16.00,請?zhí)羁眨?/p>
main()
{
inta=9,b=2;
floatx=【】,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
}
30.源程序文檔化要求程序應(yīng)加注釋。注釋一般分為序言性注釋和【】注釋。
31.現(xiàn)有兩個C程序文件T18.c和myfun.c同在TC系統(tǒng)目錄(文件夾)下,其中T18.c文件如下:
#include<stdio.h>
#include"myfun.c"
main()
{fun();printf("\n");}
myfun.c文件如下:
voidfun()
{chars[80],c;intn=0;
while((c=getchar())!=′\n′)s[n++]=c;
n--;
while(n>=0)printf("%c",s[n--]);
}
當(dāng)編譯連接通過后,運行程序T18時,輸入Thank!,則輸出結(jié)果是【】。
32.定義inta=5,b;,則執(zhí)行表達(dá)式b=++a*--a之后,變量b的值為【】。
33.設(shè)有以下結(jié)構(gòu)體類型:
structst
{charname[8];
intnum;
floats[4];
}student[50];
并且結(jié)構(gòu)體數(shù)組student中的元素都已有值。若要將這些元素寫到硬盤文件fp中,請將以下fwrite語句補(bǔ)充完整:
fwrite(student,【】,1,fp);
34.閱讀下面語句,則程序的執(zhí)行結(jié)果是【】。
#include"stdio.h"
main()
{inta=-1,b=1,k;
if((++a<0)&&!(b--<=0))
printf("%d,%d\n",a,b);
elseprintf("%d,%d\n",b,a);}
35.軟件的需求分析階段的工作,可以概括為四個方面:【】、需求分析、編寫需求規(guī)格說明書和需求評審。
36.設(shè)某循環(huán)隊列的容量為50,頭指針front=5(指向隊頭元素的前一位置),尾指針rear=29(指向隊尾元素),則該循環(huán)隊列中共有【】個元素。
37.下面程序的功能:輸出100以內(nèi)能被3整除且個位數(shù)為6的所有整數(shù),請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inti,j;
for(i=0;i<10或i<=9;i++)
{j=i*10+6;
if(【】)continue;
printf("%d",j);
}
}
38.下列程序的輸出結(jié)果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<;y++)
z=(*(ptr+y)<x?*(ptr+y);x;
printf("%d\n",z);
}
39.下面的函數(shù)strcat(str1,str2)實現(xiàn)將字符串str2拼接到字符串str1后面的功能。請?zhí)羁帐怪暾?/p>
char*strcat(str1,str2)
char*str1,*str2;
{char*t=str1;
while(【】)str1++;
while(【】);
return(t);}
40.常用的黑箱測試有等價類劃分法、【】和錯誤推測法3種。
三、1.選擇題(20題)41.對長度為n的線性表進(jìn)行順序查找,在最壞情況下需要比較的次數(shù)為()。
A.125B.n/2C.nD.n+1
42.算法一般都可以用______控制結(jié)構(gòu)組合而成。
A.循環(huán)、分支、遞歸B.順序、循環(huán)、嵌套C.循環(huán)、遞歸、選擇D.順序、選擇、循環(huán)
43.下列程序的輸出結(jié)果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);}
A.2500B.2050C.4D.0
44.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。
A.334HB.30DHC.352HD.31AH
45.下面程序的輸出結(jié)果是()。typedefunion{longx[1];inty[4];charz[10];}M;Mt;main(){printf("%d\n",sizeof(t));}
A.32B.26C.10D.4
46.以下程序片段的輸出結(jié)果是______。charstr[]="abc\n\012\\\"";printf("%d",strlen(str));
A.4B.5C.6D.7
47.下列描述中正確的是()。
A.在C語言程序中預(yù)處理是指完成宏替換和文件包含指定的文件的調(diào)用
B.預(yù)處理指令只能位于C源程序文件的首部
C.預(yù)處理命令可以放在程序中的任何位置
D.預(yù)處理命令結(jié)尾需要加分號
48.冒泡排序在最壞情況下的比較次數(shù)是()。
A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2
49.以下程序的輸出結(jié)果是()longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%d\n",fun(3));}
A.1B.2C.3D.4
50.若有以下定義:chars[20]="programming",*ps=s;則不能代表字符。的表達(dá)式是()
A.ps+2B.s[2]C.ps[2]D.ps+=2,*ps
51.下列特征中不是面向?qū)ο蠓椒ǖ闹饕卣鞯氖?)。
A.多態(tài)性B.繼承C.封裝性D.模塊化
52.在長度為64的有序線性表中進(jìn)行順序查找,最壞情況下需要比較的次數(shù)為A.63B.64C.6D.7
53.以下敘述中正確的是()。
A.用C語言實現(xiàn)的算法必須要有輸入和輸出操作
B.用C語言實現(xiàn)的算法可以沒有輸出但必須要有輸入
C.用C語言程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出
D.用C語言程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出
54.設(shè)整型數(shù)i=5,則printf("%d",i+++++i);的輸出為______。
A.10B.11C.12D.語法錯誤
55.按照“先進(jìn)先出”組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。
A.隊列B.棧C.雙向鏈表D.二叉樹
56.設(shè)x=2.5、a=7、y=4.7,算術(shù)表達(dá)式x+a%3*(int)(x+y)%2/4的值為______。
A.2.5B.7C.4.7D.2.75
57.關(guān)系代數(shù)運算是以______為基礎(chǔ)的運算。
A.關(guān)系運算B.謂詞運算C.集合運算D.代數(shù)運算
58.下列選項可以正確表示字符型常量的是
A.'\r'B.aC.\897D.296
59.以下敘述中不正確的是
A.預(yù)處理命令行都必須以#號開始
B.在程序中凡是以#號開始的語句行都是預(yù)處理命令行
C.宏替換不占用運行時間,只占編譯時間
D.在以下定義是正確的:#definePI3.1415926;
60.下列程序的輸出結(jié)果是()。main(){inti=1,j=2,k=3;if(i++==1&&(++j==3‖k++==3))printf("%d%d%d\n",i,j,k);}
A.123B.234C.223D.233
四、選擇題(20題)61.
62.
63.以下函數(shù)按每行8個輸出數(shù)組中的數(shù)據(jù):
下劃線處應(yīng)填入的語句是()。
A.
B.
C.
D.
64.有以下程序:
程序運行后的輸出結(jié)果是()。
A.4B.10C.14D.6
65.(3)在一棵二叉樹上第5層的結(jié)點數(shù)最多是______。
A.8
B.16
C.32
D.15
66.下面關(guān)于完全二叉樹的敘述中,錯誤的是______。A.A.除了最后一層外,每一層上的結(jié)點數(shù)均達(dá)到最大值
B.可能缺少若干個左右葉子結(jié)點
C.完全二叉樹一般不是滿二叉樹
D.具有結(jié)點的完全二叉樹的深度為[log2n]+1
67.若有如下說明和定義
structtest
{intml;charm2;floatm3;
unionuu{charul[5];intu2[2];}ua;
}myaa;
則sizeof(structtest)的值是
A.12B.16
C.14D.9
68.
69.
70.一名工作人員可以使用多臺計算機(jī),而一臺計算機(jī)可被多名工作人員使用,則實體工作人員與實體計算機(jī)之間的聯(lián)系是()。
A.—對一B.—對多C.多對多D.多對一
71.有如下程序段
int*p,a=10,b=1;
p=&a;a=*p+b;
執(zhí)行該程序段后,a的值為
A.12B.10C.11D.編譯出錯
72.下列選項中,能夠滿足“若字符串sl等于字符串s2,則執(zhí)行ST”要求的是()。
A.if(stremp(s2,s1)==0)ST;
B.if(s1==s2)ST;
C.if(strcpy(sl,s2)==l)ST;
D.if(sl,s2==O)ST;
73.
設(shè)有定義的語句:“charc1=92,c2=92;”,則以下表達(dá)式中的值為零的是()。
A.c1^c2B.c1&c2C.~c2D.c1E.c2
74.用鏈表表示線性表的優(yōu)點是()。
A.便于隨機(jī)存取B.花費的存儲空間較順序存儲少C.便于捅入和刪除操作D.數(shù)據(jù)元素的物理順序與邏輯順序相同
75.有以下程序
fun(int*a,intn)
{inti,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]<a[p])
____;
return(p);
}
在下畫線處應(yīng)填入的是
A.i=pB.a(chǎn)[p]=a[i]
C.p=jD.p=i
76.若有定義語句:
77.設(shè)變量X和y均已正確定義并賦值。以下if語句中,在編譯時將產(chǎn)生錯誤信息的是()。A.if(x++);
B.if(x>y&&y!=0);
C.if(x>y)x--elsey++;
D.if(y<0){;}elsex++;
78.有以下程序:
程序運行后的輸出結(jié)果是()。
A.12
B.15
C.16
D.20
79.有以下程序:
從第一列開始輸入以下數(shù)據(jù)(<CR>代表一個回車符.:
2743<CR>
程序的輸出結(jié)果是()。
A.66877B.668966C.6677877D.6688766
80.若intk=8;,則執(zhí)行下列程序后,變量k的正確結(jié)果是
main()
{intk=8;
switch(k)
{case8:k+=1;
case10:k+=1;
case11:k+=1;break;
default:k+=1;
}
printf("%d\n",k);
}
A.12B.11
C.10D.9
五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:計算并輸出k以內(nèi)最大的10個能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳人,若k的值為600,則函數(shù)的值為5671。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素數(shù)存人XX所指數(shù)組中,非素數(shù)的個數(shù)通過k返回。
例如,若輸入17,則應(yīng)輸出:46891012141516。注意:部分源程序在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
參考答案
1.C
2.B
3.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。
4.C
5.DC語言中,實型常量有兩種表示形式:小數(shù)形式和指數(shù)形式。其中指數(shù)形式的一般形式為:尾數(shù)E(或e)整型指數(shù)。C語言規(guī)定,字母E或e之前必須要有數(shù)字,且E或e后面的指數(shù)必須是整數(shù),所以選項A、B、C錯誤,選項D正確。故本題答案為D選項。
6.D
7.A
8.D
\n全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個源文件結(jié)束止。當(dāng)全局變量定義在后,引用它的函數(shù)在前時,應(yīng)該在引用它的函數(shù)中用extern對此全局變量進(jìn)行說明,以便通知編譯程序該變量是一個已在外部定義了的全局變量,這時全局變量的作用域從extern說明處起,延伸到該函數(shù)末尾。
\n
9.A對下標(biāo)為偶數(shù)的元素進(jìn)行降序排序,下標(biāo)為奇數(shù)元素保持不變。
10.A[解析]B)與D)選項中取模運算符%的左右兩個操作數(shù)均應(yīng)為整數(shù),所以B)、D)錯誤。C)選項中不能將x+z的值賦給表達(dá)式y(tǒng)*5.所以C)錯誤。
11.C
12.BB.【解析】快速排序的基本思想是:從表中選取一個元素(如本題中的33),將表中小于此元素的移到前面,大于此元素的移到后面,結(jié)果把線性表分割成兩部分(兩個子表),此元素插入到其分界線的位置處。然后分別對兩個子表再次分割……本題中33作為分割的中界線,第一趟排序后排在比它小的18、9、25、12后面。
13.C
14.B解析:條件運算符要求有3個操作對象,稱三目(元)運算符,它是C語言中惟一的一個三目運算符。條件表達(dá)式的一般形式為:表達(dá)式17表達(dá)式2:表達(dá)式3其求解順序是:先求解表達(dá)式1,若為非O(真)則求解表達(dá)式2,此時表達(dá)式2的值就作為整個條件表達(dá)式的值。若表達(dá)式1的值為0(假),則求解表達(dá)式3,表達(dá)式3的值就是整個條件表達(dá)式的值。并且注意++、--的用法。
15.B
16.C
17.A
18.B
19.D程序中S1和S2都是宏定義。S1(a+b)宏展開后的表達(dá)式為4*a+b+4*(a+b),即4*1+2+4*(1+2),結(jié)果為18;S2(a,b)宏展開后的表達(dá)式為4*(a)*(b)+b*a,即4*(1)*(2)+2*1,結(jié)果為10;S1(3)宏展開后的表達(dá)式為4*3+4*(3),結(jié)果為24;32(3+a,b+3)宏展開后的表達(dá)式為4*(3+a)*(b+3)+b+3*3+a,即4*(3+1)*(2+3)+2+3*3+1,結(jié)果為92。最終輸出:18,34,92。故本題答案為D選項。
20.C十六進(jìn)制是以“0x、0X”開頭的字符串,字符串中只能含有0~9這l0個數(shù)字和a、b、C、d、e、f這6個字母。
21.89218921
22.9920O345067
23.3691236912解析:本題考查最基本的for循環(huán)。for(cc=1;cc<5;cc++)規(guī)定循環(huán)次數(shù)為4次,每次a+=3,即每次a的值增加3,但因為fun函數(shù)中變量a為static類型,所以每次調(diào)用完子函數(shù)之后,變量a所做的改變都要保存。
24.程序設(shè)計的任務(wù)是診斷和改正程序中的錯誤。程序調(diào)試活動由兩部分組成,其一是根據(jù)錯誤的跡象確定程序中錯誤的確切性、原因和位置;其二是對程序進(jìn)行修改,排除這個錯誤。\r\n\r\n
25.x=2
26.6868解析:本題考查如何用指針引用數(shù)組元素。本題先定義了一個指向字符型數(shù)組str的指針p,指針p指向數(shù)組str的首地址,p+3將指針指向str[3],*(p+3)指的是字符“D”,輸出時是以“%d,格式輸出的,即輸出其相應(yīng)ASCII碼值68。
27.43214321解析:靜態(tài)存儲類的局部變量其生存期為整個程序的運行期間,作用域卻只是定義它的函數(shù)或局部范圍。注意:局部變量和全局變量的作用域。
28.d1.dat"rb"d1.dat,'rb'解析:打開文件的函數(shù)為fopen('文件名','mode'),其中'mode'表示文件的打開方式。如果打開的是二進(jìn)制文件,其mode字符串可以是:'rb'、'wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只讀方式打開。'w'表示以寫方式打開,如果已存在該文件名的文件,文件中的內(nèi)容將被清空。若文件名不存在,則將創(chuàng)建該文件。'a'為追加方式打開。若文件存在時,將打開這個文件并且在文件的末尾進(jìn)行追加。當(dāng)文件不存在,將創(chuàng)建新文件。'r+'打開一個已存在文件用于更新(可讀可寫)。\'w+'創(chuàng)建一個新文件用于更新,如果文件存在,文件被重寫(可讀可寫)。'a+'打開用于追加,當(dāng)文件不存在時,創(chuàng)建新文件,并在文件末尾進(jìn)行追加(可讀可寫)。根據(jù)題意,應(yīng)該填'd1.dat','rb'。
解析:本題,已知結(jié)果z=16.00,即16.0=a/2+b*x/y+1/2,分別把a(bǔ)、b,代入,得到16.0=9/2+2*x/1.1+1/2。因為a=9,a是整型,所以9/2的值在沒有進(jìn)行類型轉(zhuǎn)換時,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。
30.功能性功能性
31.!knahT!knahT解析:此程序是一道次序顛倒題,即輸入'Thank!',則輸出'!knahT'。
32.2525解析:#NAME?
33.sizeof(structst)*50sizeof(structst)*50解析:fwrite函數(shù)的一般調(diào)用形式為:fwrite(buffer,size,count,fp);其中:buffer是一個指針變量,是要輸出數(shù)據(jù)的起始地址;size是要寫的字節(jié)數(shù);count是要寫多少個size字節(jié)的數(shù)據(jù)項;fp是文件指針。
34.101,0解析:與運算兩邊的語句必須同時為真時,結(jié)果才為真,當(dāng)執(zhí)行完if((++a<0)&&!(b--<=0))時,a,b的值已經(jīng)發(fā)生了變化。
35.需求獲取需求獲取解析:軟件的需求分析階段的工作,可以概括為四個方面:需求獲取、需求分析、編寫需求規(guī)格說明書和需求評審。需求獲取的目的是確定對目標(biāo)系統(tǒng)的各方面需求;需求分析是對獲取的需求進(jìn)行分析和綜合,最終給出系統(tǒng)的解決方案和目標(biāo)系統(tǒng)的邏輯模型;編寫需求規(guī)格說明書作為需求分析的階段成果,可以為用戶、分析人員和設(shè)計人員之間的交流提供方便,可以直接支持目標(biāo)軟件系統(tǒng)的確認(rèn),又可以作為控制軟件開發(fā)進(jìn)度的依據(jù);需求評審是對需求分析階段的工作進(jìn)行的復(fù)審,驗證需求文檔的一致性、可行性、完整性和有效性。
36.2424解析:在循環(huán)隊列中因為頭指針指向的是隊頭元素的前一個位置,所以是從第6個位置開始有數(shù)據(jù)元素,所以隊列中的數(shù)據(jù)元素的個數(shù)為29-5=24。
37.j%3!=0或j%3j%3!=0或j%3解析:題目要求輸出100以內(nèi)能被3整除且個位數(shù)為6的所有整數(shù),且通過for循環(huán)實現(xiàn),循環(huán)體內(nèi)j=i*10+6;這也就滿足了個位數(shù)為6的條件,所以第1個空格填入i<10或i<=9;if語句中的continue說明如果條件不成立則不輸出j,所以第2空填j%3!=0或j%3。
38.66解析:條件運算符的優(yōu)選級高于賦值運算符,因此本題先計算關(guān)系表達(dá)式(*ptr+y)<x)*(ptr+y):x的值,再賦給變量z。當(dāng)y=0時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=2,所以z=2;當(dāng)y=1時,*(ptr+y)=4,(*ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=4,所以z=4:當(dāng)y=2時,*(ptr+y)=6,(*(ptr+y)<x條件為真,則整個條件表達(dá)式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。
39.*str1或*str1!='\0'或*str1!=0或*str1!=NUL*str1++=*str2++或*str1++=*str2*str2++*str1或*str1!='\\0'或*str1!=0或*str1!=NUL\r\n*str1++=*str2++或*str1++=*str2,*str2++解析:函數(shù)strcat(str1,str2)實現(xiàn)將字符串str2連接到字符串str1后面,所以首先要找到字符串str1的串尾,根據(jù)C語言的語法規(guī)定,一個串的串尾—定是—個隱含字符“\\0”,而在程序中,對字符串中字符的訪問是通過兩個指針變量來完成的,因此要找到字符串str1的串尾,要判斷:str1是否為“\\0”,要找到字符串str2的串尾,要判斷*str2是否為“\\0”,程序中必須以使字符串中字符逐—順序體現(xiàn),所以在題中我們應(yīng)填寫“*str1”和“*str1++=*str2++”。
40.邊界值分析法邊界值分析法解析:黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測試用例。常用的黑箱測試有等價類劃分、邊界值分析法和錯誤推測法3種。
41.CC?!窘馕觥繉€性表進(jìn)行順序查找時,從表中的第一個元素開始,將給定的值與表中逐個元素的關(guān)鍵字進(jìn)行比較,直到兩者相符,查找到所要找的元素為止。在最壞情況下,要查找的元素是表的最后一個元素或查找失敗,這兩種情況都需要將這個元素與表中的所有元素進(jìn)行比較,因此比較次數(shù)為n。
42.D解析:算法的控制結(jié)構(gòu)給出了算法的基本框架,不僅決定了算法中各操作的執(zhí)行順序,也直接反映了算法的設(shè)計是否符合結(jié)構(gòu)化原則。一個算法一般都可以用順序、選擇、循環(huán)三種基本控制結(jié)構(gòu)組合而成。
43.A解析:本題程序的功能是求1到99之間(包括1和99)所有奇數(shù)之和。程序中的while循環(huán)的終止條件為++i=100,在while循環(huán)體內(nèi),如果i是偶數(shù),則執(zhí)行continue,跳過這一次循環(huán),執(zhí)行下—次循環(huán),否則求和和。最后輸出的值是1到99之間(包括1和99)所有奇數(shù)之和(1+99)*50/2=2500。
44.C解析:解答本題,首先要明白在對指針進(jìn)行加、減運算的時候,數(shù)字“1”不是十進(jìn)制的數(shù)“1”,而是指'1'個存儲單元長度,而1個存儲單元長度占多少存儲空間,應(yīng)該視具體情況而定。如果基本類型是int型,移動1個存儲單元的長度就是位移2個字節(jié),如果基本類型是float型,移動1個存儲單元的長度就是位移4個字節(jié)。所以p+13所指向的數(shù)組元素的地址:300H+(13*上標(biāo))4)H=352H。
45.C解析:“聯(lián)合體”所占用的內(nèi)存空間為最長的成員所占用的空間。題中聯(lián)合體的z[10]成員聯(lián)合體中占空間最長的成員。
46.D解析:abc后的四個字符都是由反斜線引出的轉(zhuǎn)義字符,\\n是換行符,\\012也是換行符,\\\\表示反斜線本身,\\'表示雙引號,因此,一共是7個字符。
47.C解析:本題考查預(yù)處理命令的特點,編譯預(yù)處理命令的特點:①為了區(qū)別一般的語句,預(yù)處理命令行都必須以“#”號開始,結(jié)尾不加分號;②預(yù)處理命令可以放在程序中的任何位置;③在程序中凡是以“#”號開始的語句行都是預(yù)處理命令行。
48.C冒泡排序的基本思想是:將相鄰的兩個元素進(jìn)行比較,如果反序,則交換;對于一個待排序的序列,經(jīng)一趟排序后,最大值的元素移動到最后的位置,其他值較大的元素也向最終位置移動,此過程稱為一趟冒泡。對于有n個數(shù)據(jù)的序列,共需n-1趟排序,第i趟對從l到n-i個數(shù)據(jù)進(jìn)行比較、交換。冒泡排序的最壞情況是待排序序列逆序,第l趟比較n-1次,第2趟比較n-2次。依此類推,最后趟比較1次,一共進(jìn)行n-l趟排序。因此,冒泡排序在最壞情況下的比較次數(shù)是(n-1)+(n-2)+…+l,結(jié)果為n(n-1)/2。本題的正確答案是選項C。
49.A
50.A
51.DD?!窘馕觥棵嫦?qū)ο笤O(shè)計方法與面向過程設(shè)計方法有本質(zhì)的不同,其基本原理是:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。其特點包括:分類性、多態(tài)性、封裝性、模塊獨立性、繼承和多態(tài)性等。模塊化是結(jié)構(gòu)化程序設(shè)計的特點。
52.B解析:在長度為64的有序線性表中,其中的64個數(shù)據(jù)元素是按照從大到小或從小到大的順序排列有序的。在這樣的線性表中進(jìn)行順序查找,最壞的情況就是查找的數(shù)據(jù)元素不性表中或位于線性表的最后。按照線性表的順序查找算法,首先用被查找的數(shù)據(jù)和線性表的第一個數(shù)據(jù)元素進(jìn)行比較,若相等,則查找成功,否則,繼續(xù)進(jìn)行比較,即和線性表的第二個數(shù)據(jù)元素進(jìn)行比較。同樣,若相等,則查找成功,否則,繼續(xù)進(jìn)行比較。依次類推,直到性表中查找到該數(shù)據(jù)或查找到線性表的最后一個元素,算法才結(jié)束。因此,在長度為64的有序線性表十進(jìn)行順序查找,最壞的情況下需要比較64次。因此,本題的正確答案為選項B。
53.C解析:一個算法應(yīng)該具有以下5個特性:有窮性、確定性、可行性、有零個或多個輸入、有一個或多個輸出。因此一個算法可以沒有輸入(程序的功能確定),但必須要有輸出,沒有輸出的算法是沒有意義的。
54.D解析:C語言中有基本的算術(shù)運算符(+、-、*、/)還包括自增自減運算符(++、-),在C語言解析表達(dá)式時,它總是進(jìn)行貪婪咀嚼,這佯,該表達(dá)式就被解析為i+++++i,顯然該表達(dá)式不合C語言語法。
55.A隊列是一種特殊的線性表,只允許在表的一端插八元素,在表的另一端刪除元素,插入元素的一端叫“隊尾”,刪除元素的一端叫“隊頭”。先插入的元素先被刪除,是按“先進(jìn)先出”的原則組織數(shù)據(jù)的。
【知識拓展】“隊列”和“?!倍际且环N特殊的線性表。之所以稱之為“隊列”,其形式如“排隊”。要講究“先來后到”,先進(jìn)先出,后進(jìn)后出。
56.A解析:取模運算只能在整型數(shù)據(jù)之間進(jìn)行,a為整型變量。因為%、*、/這三個運算符的優(yōu)先級別相同,而類型轉(zhuǎn)換符優(yōu)先于*和/運算符。a的值為7,7%3=1,所以(int)(2.5+4.7)=7,1*7=7,7%2=1,1/4=0,所以表達(dá)式x+a%3*(int)(x+y)%2/4=x+0=2.5。
57.C解析:關(guān)系代數(shù)是以集合代數(shù)為基礎(chǔ)女發(fā)展起來的,它是以關(guān)系代數(shù)作為運算對象的一組高級運算的集合。它的基本操作是并、交、差、笛卡爾積,另外還包括針對數(shù)據(jù)庫環(huán)境專門設(shè)計的操作,包括對關(guān)系進(jìn)行垂直分割(投影)、水平分割(選擇)、關(guān)系的結(jié)合(連接)等。
58.A解析:C語言中,一個字符常量代表ASCII字符集中的一個字符,在程序中用單引號括起來作為字符常量,字符常量的范圍是0~127。由于字符常量用單引號括起來,所以選項B),C)錯誤,選項D)超過了字符常量的表示范圍。
59.D解析:帶參數(shù)的宏定義如下:#define宏名(參數(shù))字符串。本題中,宏定義的作用是指定用標(biāo)識符PI來代替“3.1415926”這個字符串,但宏定義不是C語句,不必在行末加分號。
60.D解析:本題考查自增運算符“++”、邏輯與運算符“&&”和邏輯或運算符“‖”。自增運算符“++”,出現(xiàn)在變量之前(如題中的中++n),表示先使變量的值加1,再使用變量的值進(jìn)行運算:出現(xiàn)在變量之后(如題中的n++),表示先使用變量的值進(jìn)行運算,再使變量的值加1。當(dāng)邏輯與運算符“&&”兩邊的運算對象都為真時,邏輯表達(dá)式的值才為真;當(dāng)邏輯或運算符“‖”左邊的運算對象為真時,其值就為真,不用計算其右邊的運算對象的值.所以根據(jù)運算符的優(yōu)先級,題中應(yīng)先計算內(nèi)層括號中的值。++j是先自加后運算,因此運算時j的值等于3,所以表達(dá)式++j=3成立,即表達(dá)式的值為1;由于1與任何數(shù)都為進(jìn)行或(‖)運算,結(jié)果都為1,因此k=3;最后計算“&&”之前的表達(dá)式,i++是先運算后自加,因此運算時i為1,所以i++=1成立,自加1后i=2。if語句的條件為真即“1”,所以輸出i、j、k的值分別是2,3,3。
61.B
62.B
63.C在c語言循環(huán)語句中continue用來跳出當(dāng)次循環(huán),因此B)項和D)項不正確。if(i/8==0)是指當(dāng)i除以8的商等于0,即i的值小于8時,打印換行,因此A)項不正確。if(i%8==0)是指當(dāng)i除以8的余數(shù)等于0,即當(dāng)間隔8個數(shù)時,打印換行,因此選項c)正確。
64.B函數(shù)的功能是求數(shù)組所有元素的和。遞歸表示為a[3]+a[2]+a[1]+a[0]+f(t,0)=10。
65.B根據(jù)二叉樹的性質(zhì),在二叉樹的第K層上,最多有2k-1個結(jié)點。所以,第五層的結(jié)點數(shù)最多為16。
66.B解析:這里考察完全二叉樹與滿二叉樹的定義及二叉樹的性質(zhì)。滿二叉樹指除最后一層外每一層上所有結(jié)點都有兩個子結(jié)點的二叉樹。完全二叉樹指除最后一層外,每一層上的結(jié)點數(shù)均達(dá)到最大值,在最后一層上只缺少右邊的若干子結(jié)點(葉子結(jié)點)的二叉樹。因此選項A是正確的,而選項B是錯誤的。由定義可知,滿二叉樹肯定是完全二叉樹,而完全二叉樹一般不是滿二叉樹,因此選項C是正確的敘述。選項D即二叉樹性質(zhì)(5),也是正確的。
67.A在本題中,首先定義了一個結(jié)構(gòu)體。在該結(jié)構(gòu)體中,定義了一個整型變量成員、一個字符型變量成員和一個浮點型變量成員,并在結(jié)構(gòu)體中定義了一個聯(lián)合體變量成員,聯(lián)合體變量成員中又包含兩個聯(lián)合體成員數(shù)組。題目最后要求計算該結(jié)構(gòu)體變量所占的存儲空間。
在C語言中,聯(lián)合體變量中的所有成員共享存儲空間,聯(lián)合變量的長度等于各成員中最長的長度,因此,本題的聯(lián)合體部分所占的長度為5,但是結(jié)構(gòu)體與聯(lián)合體不一樣的是,結(jié)構(gòu)體不能共享空間,一個結(jié)構(gòu)體變量的總長度是各成員長度之和,因此,該結(jié)構(gòu)體所需的存儲空間為5+1+2+4=12。本題的正確答案選A。
68.C
69.C
70.c因為一名工作人員可以操作多臺計算機(jī),而一臺計算機(jī)又可以被多名工作人員使用,所以兩個實體之間是多對多的關(guān)系,選擇c)。
71.Cp=&a表達(dá)式的含義是將變量a的地址賦給指針變量p;a=*p+b表達(dá)式的含義是將指針變量p所存地址對應(yīng)的值與b的和賦給a。
72.Astrcmp(char*,char*),函數(shù)strcmp用于比較兩個字符串的長度,長者為大,若字符個數(shù)也一樣,則從左至右依次比較相同位上的字符,字符大小按ASCIl表值計算,直到最后一個字符,若還相同,則兩個字符串相等,返回值0。選項A中if(strcmp(s2,sl)==0)ST,若s2等于sl,則返回值0,0等于0,所以邏輯表達(dá)式strcmp(s2,sl)==0為真,執(zhí)行ST。
73.A
\n當(dāng)值相同時按位異或,則為0,按位或與按位與時仍不變,負(fù)數(shù)也為非0。
\n
74.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)查找元素時就需要逐.個元素查找,因此查找的時間相對更長。
75.D本題考查對程序作用的理解。該函數(shù)具有兩個形參a和n,a為數(shù)組名,n為數(shù)組中元素的個數(shù)。函數(shù)的返回值為p,這里p為數(shù)組的下標(biāo)。初始時,i、j、p都為0,for循環(huán)的初始表達(dá)式為i=j,條件表達(dá)式為i<n,也就是當(dāng)i=n時,for循環(huán)結(jié)束。該for循環(huán)表達(dá)的含義為:初始時,令a[i]=a[p]=a[0],隨后i可從0開始遞增,直到n-1,對于每一個a[i],都與a[p]進(jìn)行比較,空白處需要填入語句的部分是if語句滿足條件后要進(jìn)行的操作,表示如果a[i]<a[p],應(yīng)當(dāng)進(jìn)行怎樣的處理。選項A是令i=p,此時整個程序中p的值沒有發(fā)生改變,p=0,即如果a[i]<a[p],則令i=0,回到了初始化的狀態(tài),這樣在for語句中造成了死循環(huán),該選項錯誤。選項B是令a[p]=a[i],整個程序在運行過程中,p的值依然沒有變化,p=0,即如果a[i]<a[0],則令a[0]=a[i],整個程序運行結(jié)束后,a[0]的數(shù)值應(yīng)該為整個數(shù)組的最小值,用return語句返回下標(biāo)0沒有意義。選項C是令p=j,程序在運行過程中,j的值和p的值都沒有發(fā)生改變,整個程序沒有意義。選項D是p=i,該語句的含義是如果a[i]<a[p],則令p=i,程序結(jié)束后則有a[p]為數(shù)組中的最小值,將最小值的下標(biāo)返回。
76.A本題考查的知識點是:二維數(shù)組和指針數(shù)組。無論一個數(shù)組有多少維或者是否含指針類型,該數(shù)組最終都可以被看做一個比較特殊的一維數(shù)組。例如本題中的inta[2][3]可以看作元素為int[3](即包含3個int型元素的一維數(shù)組),包含2個這樣元素的一維數(shù)組;而int*p[31則可以看作元素為int*,包含3個這樣元素的一維數(shù)組。選項C)中,p為數(shù)組名,其值是不能被改變的,故非法;選項B)中,do]的類型是int*,而a是二維數(shù)組名(類型為intfl[3]),兩者無法賦值,故非法;選項A)中,p[01為int型指針,&a[lⅡ2]為元素a[lⅡ2]的地址,所以選項A)符合題意。
77.C本題考查的是if語句。if是c語言關(guān)鍵字,表達(dá)式兩側(cè)的圓括號不可少,最后是一條語句或是用花括號括起來的一組語句。選項A)和B)是在表達(dá)式后跟了一條空語句,選項D)是在表達(dá)式后跟了一組空語句,選項C)中x一一是表達(dá)式而不是語句,所以在編譯時會出現(xiàn)錯誤信息,在X一一后面加上”;”號就對了。
78.A本題的考查點是帶參數(shù)的宏定義。本題的程序中就定義了一個帶參數(shù)的宏,對F(a++,b++)進(jìn)行展開后,宏的返回值為12,注意a++,b++都是先使用變量值,再自增。
79.A本題主要考查了字符輸入輸出函數(shù)get—char和putchar的使用。getchar函數(shù)用來從標(biāo)準(zhǔn)輸入設(shè)備上讀人一個字符,putchar(C)函數(shù)是將字符變量c中的字符輸出到標(biāo)準(zhǔn)輸出設(shè)備上,并且字符可以看作整數(shù)參與運算。
80.B在本題中,程序的作用是通過switch語句改變已經(jīng)被賦初值的變量k的值。程序中首先將變量k賦初值為8,然后使用switch選擇結(jié)構(gòu)。由于k的值為8,在switch結(jié)構(gòu)中找到與之對應(yīng)的塊case8執(zhí)行,完成一次k加1的操作,此時變量k的值變?yōu)?,由于沒有break語句,程序接著往下執(zhí)行,執(zhí)行case10程序塊,再完成一次k加1的操作,此時k的值為10,又由于沒有break語句,程序接著往下執(zhí)行,執(zhí)行case11,再完成一次k加1的操作,此時k的值為11,程序碰到break語句,跳出switch結(jié)構(gòu)。然后執(zhí)行輸出語句,輸出的結(jié)果為11。
81.(1)錯誤:if((k%13=0)||(k%17=0))
正確:if((k%13==0)||(k%17==0))
(2)錯誤:缺少大括號
正確:在“k-=;”后加}
【解析】題目中要求能被13或17整除的自然數(shù),判斷整除條件是取余恒等于0,判斷相等的符號應(yīng)該用“==”,符號“=”是賦值符號,因此“=”應(yīng)改為“==”;在C語言中,括號一定是成對出現(xiàn)的,因此,在語句“k——;”后要加上符號“}”。
82.
【考點分析】
本題考查:如何判斷非素數(shù);循環(huán)判斷結(jié)構(gòu);數(shù)組的引用。
【解題思路】
題目要求將l—m之問的非素數(shù)存人數(shù)組中,應(yīng)使用循環(huán)判斷結(jié)構(gòu)。循環(huán)語句用來遍歷1一m之間的每個數(shù),判斷語句用來判斷該數(shù)是否為素數(shù),若不是素數(shù),則將其存人數(shù)組中。這道題目是考查—個數(shù)是否為素數(shù)的簡單延伸,只要掌握了判斷素數(shù)的方法,問題便能順利解決。
【解題寶典】
判定一個數(shù)是否為素數(shù),即該數(shù)除了能被l和它本身外,不能被任何數(shù)整除。
代碼實現(xiàn)為:
for(j=2;j<i;j++)if(i%j==0)/*如余數(shù)為0,證明i不是素數(shù)·/
此語句需要熟記,很多判斷素數(shù)的題目也可通過此法解決。2022-2023年河北省衡水市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.在一個源文件中定義的全局變量的作用域為:()
A.本程序的全部范圍B.本函數(shù)的全部范圍C.從定義該變量的位置開始到本文件結(jié)束D.以上說法都不正確
2.已知有double型變量x=2.5,y=4.7,整型變量a=7,則表達(dá)式x+a%3*(int)(x+y)%2/4的值是()。
A.2.4B.2.5C.2.75D.0
3.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
4.設(shè)有以下說明語句structnum{inta;floatb;}numl;則下面的敘述不正確的是______。
A.struct是結(jié)構(gòu)體類型的關(guān)鍵字
B.structnum是用戶定義的結(jié)構(gòu)體類型
C.numl是用戶定義的結(jié)構(gòu)體類型名
D.a和b都是結(jié)構(gòu)體成員名
5.以下是正確的C語言實型常量的是()。
A..8e+8.B.e+8C.+8e.8D.+8.8e+8
6.設(shè)S為一個長度為n的字符串,其中的字符各不相同,則S中的互異的非平凡子串(非空且不同于S本身)的個數(shù)為()。
A.2n-1B.n2C.(n2/2)+(n/2)D.(n2/2)+(n/2)-1
7.設(shè)二維數(shù)組A[1...m,1...n]按行存儲在數(shù)組B中,則二維數(shù)組元素A[i,j]在一維數(shù)組B中的下標(biāo)為()。A.A.n*(i-1)+jB.n*(i-1)+j-1C.i*(j-1)D.j*m+i-1
8.在一個C語言源程序文件中所定義的全局變量,其作用域為()。
A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍
9.有以下程序(函數(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");}程序運行后的輸出結(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,
10.設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是()。A.x=y+z+5.++yB.int(15.8%5)C.x=y*5=x+zD.x=25%5.0
11.設(shè)長度為n的鏈隊列用單循環(huán)鏈表表示,若只設(shè)頭指針,則入隊操作的時間復(fù)雜度為_______。
A.O(1)B.O(log2n)C.O(n)D.O(n2)
12.待排序的關(guān)鍵碼序列為(33,18,9,25,67,82,53,95,12,70),要按關(guān)鍵碼值遞增的順序排序,采取以第一個關(guān)鍵碼為基準(zhǔn)元素的快速排序法,第一趟排序后關(guān)鍵碼33被放到第()個位置。
A.3B.5C.7D.9
13.
14.第
17
題
若有條件表達(dá)式(exp)?a++:b--,則以下表達(dá)式中能完全等價于表達(dá)式(exp)的是
A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)
15.下列運算符中,運算對象必須是整型的是()。
A./B.%=C.=D.&
16.
17.下列程序段的時間復(fù)雜度為()。A.O(n)B.O(log2n)C.O(n3)D.O(n2)
18.串是一種特殊的線性表,其特殊性體現(xiàn)在()。
A.可以順序存儲B.數(shù)據(jù)元素是一個字符C.可以鏈接存儲D.數(shù)據(jù)元素可以是多個字符
19.有以下程序:#include<stdio.h>#deflneS1(z)4*z+4*(z)#defineS2(x,y)4*(x)*(y)+y*xmain(){inta=1,b=2;printf(“%d,”,S1(a+b));printf(“%d,”,S2(a,b)+S1(3));printf(“%d”,S2(3+a,b+3));}程序運行后的輸出結(jié)果是()。
A.18,34,100B.24,34,92C.24,34,100D.18,34,92
20.下列選項中不合法的十六進(jìn)制數(shù)是()。
A."0"xffB."0"X11C."0"x1gD.”0”Xabc
二、2.填空題(20題)21.設(shè)有如下程序main(){intn1,n2;scanf(“%d”,&n2);while(n2!=0){n1=n2%10;n2=n2/10;printf(“%d”,n1);}}程序運行后,如果從鍵盤上輸入1298,則輸出結(jié)果為
22.以下程序的輔出結(jié)果是【】。
voidfun(ints[])
{inti;
for(i=0;i<10;i++)printf("%d",s[i]);
printf("\n\n");
}
main()
{inta[3][4]={{99,2},{3,4,5},{6,7,8}};
fun(a[0]);
}
23.以下程序的輸出結(jié)果是()。#include<stdio.h>fun(){staticinta=0;a+=3;printf("%d",A);}main(){intcc;for(cc=1;cc<5;cc++)fun();printf("\n");}
24.在進(jìn)行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接碟塊,其中______的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。
25.以下程序段的運行結(jié)果是()。#include<stdio.h>main(){intx=2,y=1:switch(x){case1:switch(y){case0:printf("x=2,y=1\n");break;case1:printf("y=1\n");break;}case2:printf("x=2\n");}}
26.下列程序段的運行結(jié)果是______。
charstr口="ABCD",*p=str;
printf("%d\n",*(p+3));
27.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{ints[]={1,2,3,4},i;
intx=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf("%d",x);}
printf("\n");}
sb(s1,y)
int*s1,y;
{staticinti1=3;
y=s1[i1];
i1--;
return(y);}
28.若fp已正確定義為一個文件指針,d1.dat為二進(jìn)制文件,請?zhí)羁?,以便為“讀”而打開此文件:
fp=fopen(【】);。
29.下列程序的輸出結(jié)果是16.00,請?zhí)羁眨?/p>
main()
{
inta=9,b=2;
floatx=【】,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
}
30.源程序文檔化要求程序應(yīng)加注釋。注釋一般分為序言性注釋和【】注釋。
31.現(xiàn)有兩個C程序文件T18.c和myfun.c同在TC系統(tǒng)目錄(文件夾)下,其中T18.c文件如下:
#include<stdio.h>
#include"myfun.c"
main()
{fun();printf("\n");}
myfun.c文件如下:
voidfun()
{chars[80],c;intn=0;
while((c=getchar())!=′\n′)s[n++]=c;
n--;
while(n>=0)printf("%c",s[n--]);
}
當(dāng)編譯連接通過后,運行程序T18時,輸入Thank!,則輸出結(jié)果是【】。
32.定義inta=5,b;,則執(zhí)行表達(dá)式b=++a*--a之后,變量b的值為【】。
33.設(shè)有以下結(jié)構(gòu)體類型:
structst
{charname[8];
intnum;
floats[4];
}student[50];
并且結(jié)構(gòu)體數(shù)組student中的元素都已有值。若要將這些元素寫到硬盤文件fp中,請將以下fwrite語句補(bǔ)充完整:
fwrite(student,【】,1,fp);
34.閱讀下面語句,則程序的執(zhí)行結(jié)果是【】。
#include"stdio.h"
main()
{inta=-1,b=1,k;
if((++a<0)&&!(b--<=0))
printf("%d,%d\n",a,b);
elseprintf("%d,%d\n",b,a);}
35.軟件的需求分析階段的工作,可以概括為四個方面:【】、需求分析、編寫需求規(guī)格說明書和需求評審。
36.設(shè)某循環(huán)隊列的容量為50,頭指針front=5(指向隊頭元素的前一位置),尾指針rear=29(指向隊尾元素),則該循環(huán)隊列中共有【】個元素。
37.下面程序的功能:輸出100以內(nèi)能被3整除且個位數(shù)為6的所有整數(shù),請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inti,j;
for(i=0;i<10或i<=9;i++)
{j=i*10+6;
if(【】)continue;
printf("%d",j);
}
}
38.下列程序的輸出結(jié)果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<;y++)
z=(*(ptr+y)<x?*(ptr+y);x;
printf("%d\n",z);
}
39.下面的函數(shù)strcat(str1,str2)實現(xiàn)將字符串str2拼接到字符串str1后面的功能。請?zhí)羁帐怪暾?/p>
char*strcat(str1,str2)
char*str1,*str2;
{char*t=str1;
while(【】)str1++;
while(【】);
return(t);}
40.常用的黑箱測試有等價類劃分法、【】和錯誤推測法3種。
三、1.選擇題(20題)41.對長度為n的線性表進(jìn)行順序查找,在最壞情況下需要比較的次數(shù)為()。
A.125B.n/2C.nD.n+1
42.算法一般都可以用______控制結(jié)構(gòu)組合而成。
A.循環(huán)、分支、遞歸B.順序、循環(huán)、嵌套C.循環(huán)、遞歸、選擇D.順序、選擇、循環(huán)
43.下列程序的輸出結(jié)果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);}
A.2500B.2050C.4D.0
44.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。
A.334HB.30DHC.352HD.31AH
45.下面程序的輸出結(jié)果是()。typedefunion{longx[1];inty[4];charz[10];}M;Mt;main(){printf("%d\n",sizeof(t));}
A.32B.26C.10D.4
46.以下程序片段的輸出結(jié)果是______。charstr[]="abc\n\012\\\"";printf("%d",strlen(str));
A.4B.5C.6D.7
47.下列描述中正確的是()。
A.在C語言程序中預(yù)處理是指完成宏替換和文件包含指定的文件的調(diào)用
B.預(yù)處理指令只能位于C源程序文件的首部
C.預(yù)處理命令可以放在程序中的任何位置
D.預(yù)處理命令結(jié)尾需要加分號
48.冒泡排序在最壞情況下的比較次數(shù)是()。
A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2
49.以下程序的輸出結(jié)果是()longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%d\n",fun(3));}
A.1B.2C.3D.4
50.若有以下定義:chars[20]="programming",*ps=s;則不能代表字符。的表達(dá)式是()
A.ps+2B.s[2]C.ps[2]D.ps+=2,*ps
51.下列特征中不是面向?qū)ο蠓椒ǖ闹饕卣鞯氖?)。
A.多態(tài)性B.繼承C.封裝性D.模塊化
52.在長度為64的有序線性表中進(jìn)行順序查找,最壞情況下需要比較的次數(shù)為A.63B.64C.6D.7
53.以下敘述中正確的是()。
A.用C語言實現(xiàn)的算法必須要有輸入和輸出操作
B.用C語言實現(xiàn)的算法可以沒有輸出但必須要有輸入
C.用C語言程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出
D.用C語言程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出
54.設(shè)整型數(shù)i=5,則printf("%d",i+++++i);的輸出為______。
A.10B.11C.12D.語法錯誤
55.按照“先進(jìn)先出”組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。
A.隊列B.棧C.雙向鏈表D.二叉樹
56.設(shè)x=2.5、a=7、y=4.7,算術(shù)表達(dá)式x+a%3*(int)(x+y)%2/4的值為______。
A.2.5B.7C.4.7D.2.75
57.關(guān)系代數(shù)運算是以______為基礎(chǔ)的運算。
A.關(guān)系運算B.謂詞運算C.集合運算D.代數(shù)運算
58.下列選項可以正確表示字符型常量的是
A.'\r'B.aC.\897D.296
59.以下敘述中不正確的是
A.預(yù)處理命令行都必須以#號開始
B.在程序中凡是以#號開始的語句行都是預(yù)處理命令行
C.宏替換不占用運行時間,只占編譯時間
D.在以下定義是正確的:#definePI3.1415926;
60.下列程序的輸出結(jié)果是()。main(){inti=1,j=2,k=3;if(i++==1&&(++j==3‖k++==3))printf("%d%d%d\n",i,j,k);}
A.123B.234C.223D.233
四、選擇題(20題)61.
62.
63.以下函數(shù)按每行8個輸出數(shù)組中的數(shù)據(jù):
下劃線處應(yīng)填入的語句是()。
A.
B.
C.
D.
64.有以下程序:
程序運行后的輸出結(jié)果是()。
A.4B.10C.14D.6
65.(3)在一棵二叉樹上第5層的結(jié)點數(shù)最多是______。
A.8
B.16
C.32
D.15
66.下面關(guān)于完全二叉樹的敘述中,錯誤的是______。A.A.除了最后一層外,每一層上的結(jié)點數(shù)均達(dá)到最大值
B.可能缺少若干個左右葉子結(jié)點
C.完全二叉樹一般不是滿二叉樹
D.具有結(jié)點的完全二叉樹的深度為[log2n]+1
67.若有如下說明和定義
structtest
{intml;charm2;floatm3;
unionuu{charul[5];intu2[2];}ua;
}myaa;
則sizeof(structtest)的值是
A.12B.16
C.14D.9
68.
69.
70.一名工作人員可以使用多臺計算機(jī),而一臺計算機(jī)可被多名工作人員使用,則實體工作人員與實體計算機(jī)之間的聯(lián)系是()。
A.—對一B.—對多C.多對多D.多對一
71.有如下程序段
int*p,a=10,b=1;
p=&a;a=*p+b;
執(zhí)行該程序段后,a的值為
A.12B.10C.11D.編譯出錯
72.下列選項中,能夠滿足“若字符串sl等于字符串s2,則執(zhí)行ST”要求的是()。
A.if(stremp(s2,s1)==0)ST;
B.if(s1==s2)ST;
C.if(strcpy(sl,s2)==l)ST;
D.if(sl,s2==O)ST;
73.
設(shè)有定義的語句:“charc1=92,c2=92;”,則以下表達(dá)式中的值為零的是()。
A.c1^c2B.c1&c2C.~c2D.c1E.c2
74.用鏈表表示線性表的優(yōu)點是()。
A.便于隨機(jī)存取B.花費的存儲空間較順序存儲少C.便于捅入和刪除操作D.數(shù)據(jù)元素的物理順序與邏輯順序相同
75.有以下程序
fun(int*a,intn)
{inti,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]<a[p])
____;
return(p);
}
在下畫線處應(yīng)填入的是
A.i=pB.a(chǎn)[p]=a[i]
C.p=jD.p=i
76.若有定義語句:
77.設(shè)變量X和y均已正確定義并賦值。以下if語句中,在編譯時將產(chǎn)生錯誤信息的是()。A.if(x++);
B.if(x>y&&y!=0);
C.if(x>y)x--elsey++;
D.if(y<0){;}elsex++;
78.有以下程序:
程序運行后的輸出結(jié)果是()。
A.12
B.15
C.16
D.20
79.有以下程序:
從第一列開始輸入以下數(shù)據(jù)(<CR>代表一個回車符.:
2743<CR>
程序的輸出結(jié)果是()。
A.66877B.668966C.6677877D.6688766
80.若intk=8;,則執(zhí)行下列程序后,變量k的正確結(jié)果是
main()
{intk=8;
switch(k)
{case8:k+=1;
case10:k+=1;
case11:k+=1;break;
default:k+=1;
}
printf("%d\n",k);
}
A.12B.11
C.10D.9
五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:計算并輸出k以內(nèi)最大的10個能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳人,若k的值為600,則函數(shù)的值為5671。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素數(shù)存人XX所指數(shù)組中,非素數(shù)的個數(shù)通過k返回。
例如,若輸入17,則應(yīng)輸出:46891012141516。注意:部分源程序在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
參考答案
1.C
2.B
3.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。
4.C
5.DC語言中,實型常量有兩種表示形式:小數(shù)形式和指數(shù)形式。其中指數(shù)形式的一般形式為:尾數(shù)E(或e)整型指數(shù)。C語言規(guī)定,字母E或e之前必須要有數(shù)字,且E或e后面的指數(shù)必須是整數(shù),所以選項A、B、C錯誤,選項D正確。故本題答案為D選項。
6.D
7.A
8.D
\n全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個源文件結(jié)束止。當(dāng)全局變量定義在后,引用它的函數(shù)在前時,應(yīng)該在引用它的函數(shù)中用extern對此全局變量進(jìn)行說明,以便通知編譯程序該變量是一個已在外部定義了的全局變量,這時全局變量的作用域從extern說明處起,延伸到該函數(shù)末尾。
\n
9.A對下標(biāo)為偶數(shù)的元素進(jìn)行降序排序,下標(biāo)為奇數(shù)元素保持不變。
10.A[解析]B)與D)選項中取模運算符%的左右兩個操作數(shù)均
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職旅游(旅游文化常識)試題及答案
- 2026年成本會計(費用核算)試題及答案
- 2025年高職食品加工技術(shù)應(yīng)用(應(yīng)用實操訓(xùn)練)試題及答案
- 2025年中職數(shù)字媒體藝術(shù)設(shè)計(新媒體設(shè)計技巧)試題及答案
- 【歷史】中國特色社會主義事業(yè)取得新成就(課件)2025-2026學(xué)年統(tǒng)編版八年級歷史下冊
- 近五年甘肅中考物理試題及答案2025
- 養(yǎng)老院家屬溝通制度
- 信息保密制度
- 工行借記卡介紹
- 2026年公共關(guān)系基礎(chǔ)知識與實務(wù)考試題目含答案
- 中老年人喝茶指南
- 光伏發(fā)電安全管理制度匯編
- 【語文】陜西省西安市西工大附小小學(xué)二年級上冊期末試題
- 長期照護(hù)師操作考核試卷及答案
- 橫向課題申報書示范
- 外貿(mào)跟單員年度工作總結(jié)
- 肝癌破裂出血課件
- 材料租賃經(jīng)營方案(3篇)
- 超星爾雅學(xué)習(xí)通《科學(xué)與文化的足跡(東南大學(xué))》2025章節(jié)測試附答案
- 女性腫瘤患者生育力保存
- 多發(fā)性骨折護(hù)理
評論
0/150
提交評論