計算機等級考試二級C語言考前密卷_第1頁
計算機等級考試二級C語言考前密卷_第2頁
計算機等級考試二級C語言考前密卷_第3頁
計算機等級考試二級C語言考前密卷_第4頁
計算機等級考試二級C語言考前密卷_第5頁
已閱讀5頁,還剩122頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

計算機等級考試二級C語言考前密卷(1)

(1)校和隊列的共同特點是

A)都是先進先出B)都是先進后出

C)只允許在端點處插入和刪除元素D)沒有共同點

(2)已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是

A)acbcdB)decabC)deabcD)cedba

(3)鏈表不具有的特點是

A)不必事先估計存儲空間B)可隨機訪問任一元素

C)插入刪除不需要移動元素D)所需空間與線性表長度成正比

(4)結(jié)構(gòu)化程序設(shè)計的3種結(jié)構(gòu)是

A)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)

B)分支結(jié)構(gòu)、等價結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

C)多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價結(jié)構(gòu)

D)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

(5)為了提高測試的效率,應(yīng)該

A)隨機選取測試數(shù)據(jù)

B)取一,切可能的輸入數(shù)據(jù)作為測試數(shù)據(jù)

C)在完成編碼以后制定軟件的測試計劃

D)集中對付那些錯誤群集的程序

(6)算法的時間復(fù)雜度是指

A)執(zhí)行算法程序所需要的時間

B)算法程序的長度

C)算法執(zhí)行過程中所需要的基本運算次數(shù)

D)算法程序中的指令條數(shù)

(7)軟件生命周期中所花費用最多的階段是

A)詳細設(shè)計B)軟件編碼

C)軟件測試D)軟件維護

(8)數(shù)據(jù)庫管理系統(tǒng)DBMS中用來定義模式、內(nèi)模式和外模式的語言為

A)CB)BasicC)DDLD)DML

(9)下列有關(guān)數(shù)據(jù)庫的描述,正確的是

A)數(shù)據(jù)庫是一個DBF文件B)數(shù)據(jù)庫是一個關(guān)系

C)數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合D)數(shù)據(jù)庫是一組文件

(10)下列有關(guān)數(shù)據(jù)庫的描述,正確的是

A)數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程

B)數(shù)據(jù)的物理獨立性是指當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)改變時,數(shù)據(jù)的存儲結(jié)構(gòu)不變

C)關(guān)系中的每一列稱為元組,一個元組就是一個字段

D)如果一個關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個關(guān)系的關(guān)鍵字,

則稱其為本關(guān)系的外關(guān)鍵字

(11)以下敘述中正確的是

A)C語言比其他語言高級

B)C語言可以不用編譯就能被計算機識別執(zhí)行

C)C語言以接近英語國家的自然語言和數(shù)學(xué)語言作為語言的表達形式

D)C語言出現(xiàn)的最晚,具有其他語言的一切優(yōu)點

(12)C語言中用于結(jié)構(gòu)化程序設(shè)計的3種基本結(jié)構(gòu)是

A)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)B)if^switch,break

C)for,while,do-whileD)if^fbr,continue

(13)C語言中最簡單的數(shù)據(jù)類型包括

A)整型、實型、邏輯型B)整型、實型、字符型

C)整型、字符型、邏輯型D)字符型、實型、邏輯型

(14)若變量已正確定義并賦值,以下符合C語言語法的表達式是

A)a:=b+lB)a=b=c+2C)int18.5%3D)a=a+7=c+b

(15)下列可用于C語言用戶標識符的一組是

A)void,define,WORDB)a3_b3,_123,Car

C)For,-abc,IFCaseD)2a,DO,sizeof

(16)C語言中運算對象必須是整型的運算符是

A)%=B)/C)=D)<=

(17)若變量a,i已正確定義,且i已正確賦值,合法的語句是

A)a==1B)++i;C)a=a++=5;D)a=int(i);

(18)已知

intt=0;

while(t=l)

{-}

則以下敘述正確的是

A)循環(huán)控制表達式的值為0B)循環(huán)控制表達式的值為1

C)循環(huán)控制表達式不合法D)以上說法都不對

(19)若變量已正確說明為float型,要通過語句scanf("%f%f%f",&a,&b,&c);給a賦予

10.0,b賦予22.0,c賦予33.0,下列不正確的輸入形式是

A)10〈回車>22〈回車>33<回車〉

B)10.0,22.0,33.0<回車>

C)10.0〈回車>22.033.0〈回車〉

D)1022〈回車>33〈回車〉

(20)有如下程序:

main()

{

intx=l,a=0,b=0;

switch(x)

(

case0:b++;

case1:a++;

case2:a++;b++;

)

printf("a=%d,b=%d\n",a,b);}

該程序的輸出結(jié)果是

A)a=2,b=lB)a=l,b=lC)a=l,b=0D)a=2,b=2

(21)有以下程序

main()

{inti=l,j=l,k=2;

if((j++||k++)&&i++)

printf(M%d,%d,%d\n",i,j,k);

執(zhí)行后輸出結(jié)果是

A)1,1,2B)2,2,1C)2,2,2D)2,2,3

(22)有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=1.0/x;

elsey=1.0;

printf("%f\n",y);}

該程序的輸出結(jié)果是

A)0.000000B)0.250000C)0.500000D)1.000000

(23)有如下程序:

main()

{intn=9;

while(n>6){n--;printf(”%d”,n);}

}

該程序的輸出結(jié)果是

A)987B)876C)8765D)9876

(24)在下列選項中,沒有構(gòu)成死循環(huán)的是

A)inti=100;

while(I)

{i=i0+1;

if(i>100)break;

B)for(;;);

C)intk=10000;

do{k+4-;}while(k>10000);

D)ints=36;

while(s)—s;

(25)設(shè)intx=l,y=l;表達式(!x||y-)的值是

A)0B)1C)2D)-1

(26)若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯誤的是

A)函數(shù)調(diào)用可以作為獨立的語句存在

B)函數(shù)調(diào)用可以作為一個函數(shù)的實參

C)函數(shù)調(diào)用可以HI現(xiàn)在表達式中

D)函數(shù)調(diào)用可以作為一個函數(shù)的形參

(27)有以下程序

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

}

程序運行后的輸出結(jié)果是

A)編譯出錯

B)9

C)21

D)9.0

(28)若有以下調(diào)用語句,則不正確的fun函數(shù)的首部是

main()

inta[50],n;

fun(n,&a[9]);

}

A)voidfun(intm,intx[])

B)voidfun(ints,inth[41])

C)voidfun(intp,int*s)

D)voidfun(intn,inta)

(29)fiseek函數(shù)的正確調(diào)用形式是

A)fseek(文件指針,起始點,位移量)

B)fseek(文件指針,位移量,起始點)

C)fseek(位移量,起始點,文件指針)

D)fseek(起始點,位移量,文件指針)

(30)若小是指向某文件的指針,且已讀到文件末尾,則函數(shù)feof(fp)的返回值是

A)EOF

B)-1

C)1

D)NULL

(31)若有說明語句:charc=\72;則變量c

A)包含1個字符

B)包含2個字符

C)包含3個字符

D)說明不合法,c的值不確定

(32)若有說明inta[3][4];則a數(shù)組元素的非法引用是

A)a[0][2*1]

B)aLl][3]

C)a[4-2][0

]

D)aL0][4](33)設(shè)有以下說明語句

structstu

{inta;

floatb;

}stutype;

則下面的敘述不正確的是

A)struct是結(jié)構(gòu)體類型的關(guān)鍵字

B)structstu是用戶定義的結(jié)構(gòu)體類型

C)stutype是用戶定義的結(jié)構(gòu)體類型名

D)a和b都是結(jié)構(gòu)體成員名

(34)在C語言中,引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型允許是

A)整型常量

B)整型表達式

C)整型常量或整型表達式

D)任何類型的表達式

(35)若運行時給變量x輸入12,則以下程序的運行結(jié)果是

main()

{intx,y;

scanf("%d",&x);

y=x>12?x+10:x-12;

printf("%d\n",y);

}

A)0

B)22

C)12

D)10(

(36)以下說法正確的是

A)C語言程序總是從第一個的函數(shù)開始執(zhí)行

B)在C語言程序中,要調(diào)用函數(shù)必須在main()函數(shù)中定義

C)C語言程序總是從main()函數(shù)開始執(zhí)行

D)C語言程序中的main()函數(shù)必須放在程序的開始部分

(37)表達式0x13八0x17的值是

A)0x04

B)0x13

C)0xE8

D)0x17

(38)有以下程序

#defineF(X,Y)(X)*(Y)

main()

{inta=3,b=4;

printf("%d\n",F(a++,b++));

)

程序運行后的輸出結(jié)果是

A)12

B)15

C)16

D)20

(39)下列程序執(zhí)行后的輸出結(jié)果是

voidfunc(int*a,intb[])

{b[0]=*a+6;}

main()

{inta,b[5];

a=0;b[0]=3;

func(&a,b);printf("%d\n(b[0]);

}

A)6

B)7

C)8

D)9

(40)若有下面的程序段:

chars[]="chinan;char*p;p=s;

則下列敘述正確的是

A)s和p完全相同

B)數(shù)組s中的內(nèi)容和指針變量p中的內(nèi)容相等

C)s數(shù)組長度和p所指向的字符串長度相等

D)*p與s[0]相等

(41)以下程序中函數(shù)sort的功能是對a數(shù)組中的數(shù)據(jù)進行由大到小的排序

voidsort(inta[],intn)

{inti,j,t;

for(i=0;ifor(j=i+l;jif(a[i])

main()

{intaa[10]={1,2,3,4,5,6,7,8,9,10}/;

sort(&aa[31,5);

for(i=0;i<10;i++)printf(H%d,n,aa[i]);

printf(H\nn);

}

程序運行后的輸出結(jié)果是

A)1,2,3,4,5,6,7,8,9,10,

B)10,9,8,7,6,5,4,3,2,1,

C)1,2,3,8,7,6,5,4,9,10,

D)1,2,10,9,8,7,6,5,4,3,

(42)以下程序的運行結(jié)果是

#include"stdio.h"

main()

{structdate

{intyear,month,day;}today;

printf("%d\n",sizeof(structdate));

)

A)6

B)8

C)10

D)12

(43)若有語句int*point,a=4;和point=&a;下面均代表地址的一組選項是

A)a,point,*&a

B)&*a,&a,*point

C)*&point,*point,&a

D)&a,&*point,point

(44)在調(diào)用函數(shù)時,如果實參是簡單的變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是

A)地址傳遞

B)單向值傳遞

C)由實參傳形參,再由形參傳實參

D)傳遞方式由用戶指定

(45)已定義以下函數(shù)

fun(char*p2,char*pl)

while((*p2=*pl)!-\O'){pl++;p2++;}

函數(shù)的功能是

A)將pl所指字符串復(fù)制到p2所指內(nèi)存空間

B)將pl所指字符串的地址賦給指針p2

C)對pl和p2兩個指針所指字符串進行比較

D)檢查pl和p2兩個指針所指字符串中是否有'(T

(46)若執(zhí)行下述程序時,若從鍵盤輸入6和8時,結(jié)果為

main()

{inta,b,s;

scanf("%d%d",&a,&b);

if(as=b;

s*=s;

printf("%d",s);

A)36

B)64

C)48

D)以上都不對

(47)自canf函數(shù)的正確調(diào)用形式是

A)fscanf(巾,格式字符串,輸出表列);

B)fi;canf(格式字符串輸出表列,用);

C)fscanf(格式字符串,文件指針,輸出表列);

D)fscanf(文件指針,格式字符串,輸入表列);

(48)下列關(guān)于C語言數(shù)據(jù)文件的敘述中正確的是

A)文件由ASCII碼字符序列組成,C語言只能讀寫文本文件

B)文件由二進制數(shù)據(jù)序列組成,C語言只能讀寫二進制文件

C)文件由記錄序列組成,可按數(shù)據(jù)的存放形式分為二進制文件和文本文件

D)文件由數(shù)據(jù)流形式組成,可按數(shù)據(jù)的存放形式分為二進制文件和文本文件

(49)有以下程序

voidss(char*s,chart)

{while(*s)

{if(*s==t)*s=t-,a,+'A,;

s++;

main()

{charstrl[100]=,,abcddfefdbd",c='d,;

ss(strl,c);printf("%s\nu,strl);

}

程序運行后的輸出結(jié)果是

A)ABCDDEFEDBD

B)abcDDfefDbD

C)abcAAfefAbA

D)Abcddfefdbd

(50)若以下定義:

structlink

{intdata;

structlink*next;

}a,b,c,*p,*q;

且變量a和b之間J有如下圖所示的鏈表結(jié)構(gòu):

指針p指向變量a,q指向變量c。則能夠把c插入到a和b之間并形成新的鏈表的語句

組是:

A)a.next=c;c.next=b;

B)p.next=q;q.next=p.next;

C)p->next=&c;q->next=p->next;

D)(*p).next=q;(*q),next=&b;

二、填空題

(1)算法的基本特征是可行性、確定性、【1】和擁有足夠的情報。

解析:算法是指解題方案的準確而完整的描述。它有4個基本特征,分別是可行性、確定

性、有窮性和擁有足夠的情報。

(2)在長度為n的有序線性表中進行二分查找。最壞的情況下,需要的比較次數(shù)為【2】。

解析:對于長度為n的有序線性表,在最壞情況下,二分查找只需要比較log2n次,而順

序查找需要比較n次。

(3)在面向?qū)ο蟮某绦蛟O(shè)計中,類描述的是具有相似性質(zhì)的一組【3】。

解析:將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象

的集合。

(4)通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為【4】o

解析:軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生

命周期。一般包括可行性研究與需求分析、設(shè)計、實現(xiàn)、測試、交付使用以及維護等活動。

(5)數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和【5】3種。

解析:數(shù)據(jù)庫管理系統(tǒng)是位于用戶與操作系統(tǒng)之間的一層系統(tǒng)管理軟件,是一種系統(tǒng)軟件,

是用戶與數(shù)據(jù)庫之間的一個標準接口。其總是基于某種數(shù)據(jù)模型,可以分為層次模型、網(wǎng)狀

模型和關(guān)系模型。

(6)設(shè)y是int型,請寫出y為奇數(shù)的關(guān)系表達式【6】。

答案(y%2尸=1

(7)設(shè)inta=5,b=6,表達式(++a=b—)?++a:--b的值是[7]。

解析:此表達式為三目運算符,++a的值為6,b——的值為6,則整個表達式的值為++a

的值,++a的值為7。請注意前綴++,-和后綴++,—的區(qū)別。

(8)下列程序的輸出結(jié)果是[8L

maim()

{charb[]="Helloyou";

b[5]=0;

printf("%s\n",b);}

解析:語句b[5]=0:相當(dāng)于語句b[5]='\0',且''0'為字符串結(jié)束標志,輸出時

遇到''0'就停止輸出。

(9)當(dāng)調(diào)用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳遞的是[91

解析:在函數(shù)中,可以通過指針變量來引用調(diào)用函數(shù)中對應(yīng)的數(shù)組元素,此操作是通過傳

遞數(shù)組的首地址來實現(xiàn)。

(10)以下程序的輸出結(jié)果是【10】。

inta=1234;

printf("-\n",a);

解析:在%與格式符之間插入一個整形數(shù)來指這輸出寬度,并不影響數(shù)據(jù)的完整性,當(dāng)插

入的寬度小于實際的寬度時,則實際的寬度輸出。

(11)用高級語言編寫的程序稱為【11】程序,它可以通過解釋程序翻譯一句執(zhí)行一句的

方式執(zhí)行,也可以通過編譯程序一次翻譯產(chǎn)生目標程序,然后執(zhí)行。

解析:用高級語言編寫的程序稱為源程序,源程序不能在計算機上直接運行,運行源程序

有兩種方式:一種是通過解釋程序,對源程序逐句解釋執(zhí)行;另一種是先讓編譯程序?qū)⒃闯?/p>

序一次翻譯產(chǎn)生目標程序(目標程序是計算機可直接執(zhí)行的機器語言程序,它是一種二進制

代碼程序),然后執(zhí)行目標程序。

(12)以下程序的輸出結(jié)果是【12】。

main()

{inta=0;

a+=(a=8);

printf("%d\n",a);}

解析:賦值表達式的值就是所賦值變量的值,本題中a+=8相當(dāng)于a=a+8,對表達式逐步進

行求解:

a+=(a=8)此時,a的值由于賦值為8,而不是0

a+=8

a=a+8

a=16

(13)函數(shù)voidfun(float*sn,intn)的功能是:根據(jù)以下公式計算S,計算結(jié)果通過形參指

針sn傳回;n通過形參傳入,n的值大于等于0。請?zhí)羁铡?/p>

1―1

S

voidfun(float*sn,intn)

{floats=0.0,w,f=-1.0;

inti=0;

for(i=0;i<=n;i++)

{4[13]*f;

w=f7(2*i+l);

s+=w;}

[14]=s;}

解析:C語言中實參變量和形參變量的數(shù)據(jù)傳遞是單向的“值傳遞”方式。指針變量作函

數(shù)也要遵循這一規(guī)則。調(diào)用函數(shù)不可能改變實參指針變量的值,但可以改變實參指針變量所

指變量的值。

(14)函數(shù)ftin的功能是:根據(jù)以下公式求p的值,結(jié)果由函數(shù)值返回。m與n為兩個正數(shù)

且要求m>no

F=

。!(m-n)I

例如:m=12,n=8時,運行結(jié)果應(yīng)該是495.000000。請在題目的空白處填寫適當(dāng)?shù)某绦蛘Z

句,將該程序補充完整。

#include

#include

floatfiin(intm,intn)

{inti;

doublep=1.0;

for(i=l;i<=m;i-H-)【15】;

for(i=l;i<=n;i-H-)[16];

for(i=l;i<=m-n;i++)p=p/i;

returnp;}

main()

{clrscr();

printf("p=%f\n\fun(12,8));}

解析:本題中,欲求p的值,需要先求m,n,m?n的階乘值,可用循環(huán)語句實現(xiàn)。

(15)該程序運行的結(jié)果是【17】。

#include

#include

#defineM100

voidfun(intm,int*a,int*n)

{inti,j=0;

for(i=l;i<=m;i-H-)

if(i%7==0||i==0)

a[j++]=i;

*n=j;}

main()

{intaa[M],n,k;

clrscr();

ftin(10,aa,&n);

for(k=0;kif((k+1)==0)printf("\n");

elseprintf(nMH,aa[k]);

printf("\nn);}

解析:解答本題的關(guān)鍵是要讀懂程序,試題要找出能被7或11整除的所有整數(shù),注意數(shù)學(xué)

中的“或”和C語言中的“或”的區(qū)別,但在此處,if條件語句中用了“『'運算符,若要

找能同時被7和11整除的所有整數(shù)則在if()中應(yīng)用“&&”運算符。

當(dāng)然,如果m的值輸入50,即表達式firn(10,aa,&n);為ftin(50,aa,&n);時輸入結(jié)果為:

711142122283335424449。

(16)下列程序的功能是:求出ss所指字符串中指定字符的個數(shù),并返回此值。

例如,若輸入字符串123412132,輸入字符1,則輸出3,請?zhí)羁铡?/p>

#include

#include

#defineM81

intfun(char*ss,charc)

{inti=0;

for(;【18];ss++)

if(*ss==c)i-HF;

returni;}

main()

{chara[M],ch;

clrscr();

printf("\nPleaseenterastring:");gets(a);

printf("\nPleaseenterachar:");ch=getchar();

printf("\nThenumberofthecharis:%d\n",fun(a,ch));}

解析:從字符串ss中找出子字符串的方法是:從第1個字符開始,對字符串進行遍歷;若

SS串的當(dāng)前字符等于t串的第1個字符,兩字符串的指針自動加1,繼續(xù)比較下一個字符;

若比較至字符串的結(jié)尾,則跳出循環(huán);若SS串的字符和C串的字符對應(yīng)不同,繼續(xù)對SS串

的下一個字符進行處理。本程序是采用逐一比較的方式找出出現(xiàn)的次數(shù)。循環(huán)的作用是在串

中從左到右逐一走動,if()的作用是進行判斷是否相同,若與C相同則表示又出現(xiàn)一次。

(17)下面程序把從終端讀入的文本(用@作為文本結(jié)束標志)輸出到一個名為bi.dat的新

文件中,請?zhí)羁铡?/p>

#include"stdio.h"

FILE*fp;

{charch;

if((fp=fbpen([19]))=NULL)exit(0);

while((ch=getchar())fputc(ch,fp);

fclose(fp);}

解析:fbpen函數(shù)的調(diào)用方式通常為:

FILE*fp

fp=fopen(文件名,使用文件方式);

(18)設(shè)有如下宏定義

#defineMYSWAP(z,x,y)

{z=x;x=y;y=z;}

以下程序段通過宏調(diào)用實現(xiàn)變量a,b內(nèi)容交換,請?zhí)羁铡?/p>

floata=5,b=16,c;

MYSWAP([20],a,b);

解析:該題考查兩個知識點:

(1)用一個指定的標識符(即名字)來代表一個字符串,它的?般形式為#define標識符字

符串

(2)在MYSWAP宏定義中,利用中間變量z來交換x和y的值,所以要實現(xiàn)a和b的交

換,只需通過中間變量即可,所以,此處應(yīng)填c。

計算機等級考試二級C語言考前密卷答案(1)

選擇題

01-05CDBDD06-10CDCCB

11-15CABBB16-20ABBBA

21-25CCADB26-30DBDBC

31-35ADCCA36-40CAAAD

41-45CABBA46-50BDDBD

計算機等級考試二級C語言考前密卷(2)

一、選擇題

(1)已知一棵二叉樹前序遍歷和中序遍歷分別為ABDEGCFH和DBGEACHF,則該二叉樹

的后序遍歷為

A)GEDHFBCA

B)DGEBHFCA

C)ABCDEFGH

D)ACBFEDHG

(2)樹是結(jié)點的集合,它的根結(jié)點數(shù)目是

A)有且只有1

B)1或多于1

C)0或1

D)至少2

(3)如果進棧序列為el,e2,e3,e4,則可能的出棧序列是

A)e3,el,e4,e2

B)e2,e4,e3,el

C)e3,e4,el,e2

D)任意順序

(4)在設(shè)計程序時,應(yīng)采納的原則之一是

A)不限制goto語句的使用

B)減少或取消注解行

C)程序越短越好

D)程序結(jié)構(gòu)應(yīng)有助于讀者理解

(5)程序設(shè)計語言的基本成分是數(shù)據(jù)成分、運算成分、控制成分和

A)對象成分

B)變量成分

C)語句成分

D)傳輸成分

(6)下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是

A)便于用戶、開發(fā)人員進行理解和交流

B)反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)

C)作為確認測試和驗收的依據(jù)

D)便于開發(fā)人員進行需求分析

(7)下列不屬于軟件工程的3個要素的是

A)工具

B)過程

C)方法

D)環(huán)境

(8)單個用戶使用的數(shù)據(jù)視圖的描述稱為

A)外模式

B)概念模式

C)內(nèi)模式

D)存儲模式

(9)將E-R圖轉(zhuǎn)換到關(guān)系模式時,實體與聯(lián)系都可以表示成

A)屬性

B)關(guān)系

C)鍵

D)域

(10)SQL語言又稱為

A)結(jié)構(gòu)化定義語言

B)結(jié)構(gòu)化控制語言

C)結(jié)構(gòu)化查詢語言

D)結(jié)構(gòu)化操縱語言

(11)下列敘述中正確的是

A)C語言編譯時不檢查語法

B)C語言的子程序有過程和函數(shù)兩種

C)C語言的函數(shù)可以嵌套定義

D)C語言的函數(shù)可以嵌套調(diào)用

(12)在C語言中,退格符是

A)\n

B)\t

C)\f

D)\b

(13)以下敘述中正確的是

A)構(gòu)成C程序的基本單位是函數(shù)

B)可以在一個函數(shù)中定義另一個函數(shù)

C)main()函數(shù)必須放在其他函數(shù)之前

D)所有被調(diào)用的函數(shù)一定要在調(diào)用之前進行定義

(14)在C程序中,判邏輯值時,用''非0”表示邏輯值“真”,又用“0”表示邏輯值“假”。

在求邏輯值時,用()表示邏輯表達式值為“真",又用()表示邏輯表達式值為“假”。

A)10

B)01

C)非0非0

D)11

(15)在C語言中,運算對象必須是整型數(shù)的運算符是

A)%

B)\

C)%和\

D)**

(16)字符型數(shù)據(jù)在機器中是用ASCH碼表示的,字符“5”和“7”在機器中表示為

A)10100011和01110111

B)01000101和01100011

C)00110101和00110111

D)01100101和01100111

(17)若已定義:inta=25,b=14,c=19;以下三目運算符(?:)所構(gòu)成語句的執(zhí)行后

a<=25&&b-<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf

("###a=%d,b=%d,c=%d\n",a,b,c);程序輸出的結(jié)果是

A)***a=25,b=13,c=19

B)***a=26,b=14,c=19

C)###a=25,b=13,c=19

D)###a=26,b=14,c=19

(18)若有定義:inta=7;floatx=2.5,y=4.7;則表達式x+a%3*(int)(x+y)%2/4的值是

A)2.500000

B)2.750000

C)3.500000

D)0.000000

(19)下列程序段的輸出結(jié)果是:

inta=1234;

floatb=123.456;

doublec=12345.54321;

printf("?,%2.1f,%2.1P,a,b,c);

A)無輸出

B)12,123.5,12345.5

C)1234,123.5,12345.5

D)1234,123.4,1234.5

(20)若運行以下程序時,從鍵盤輸入ADescriptor(表示回車),則下面程序的運行結(jié)果是

#include

main()

{charc;

intv0=l,vl=0,v2=0;

do{switch(c=getchar())

{case1a':caseA':

case'e':case'E’:

case'i':case'1':

case1o':case'O’:

case'u':caserU':vl+=l;

default:v0+=1;v2+=1;}

}while(c!='\n');

printf("v0=%d,v1=%d,v2=%d\nn,v0,v1,v2);}

A)v0=7,vl=4,v2=7

B)v0=8,vl=4,v2=8

C)v0=ll,vl=4,v2=ll

D)v0=13,vl=4,v2=12

(21)設(shè)有以下程序段

intx=0,s=0;

while(!x!=0)s+=++x;

printf("%d",s);

A)運行程序段后輸出0

B)運行程序段后輸出1

C)程序段中的控制表達式是非法的

D)程序段執(zhí)行無限次

(22)有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x>10.0)y=1.0/x;

elsey=1.0;

printf("%f\n",y);}

該程序的輸出結(jié)果是

A)0.000000

B)0.250000

C)0.500000

D)1.000000

(23)執(zhí)行下面的程序段后,變量k中的值為

intk=3,s[2];

s[0]=k;k=s[1]*10;

A)不定值

B)33

C)30

D)10

(24)以下程序段的描述,正確的是

x=-l;

do

{x=x*x;}

while(!x);

A)是死循環(huán)

B)循環(huán)執(zhí)行兩次

C)循環(huán)執(zhí)行一次

D)有語法錯誤

(25)以下選項錯誤的是

A)main()

{intx,y,z;

x=0;y=x-l;

z=x+y;}

B)main()

{intx,y,z;

x=0,y=x+l;

z=x+y;}

C)main()

{intx;int

inty;

x=0,y=x+l;

z=x+y;}

D)main()

{intx,y,z;

x=0;y=x+l;

z=x+y,}

(26)有如下程序段

inta=14,b=15,x;

charc=1A’;

x=(a&&b)&&(c<‘B');

執(zhí)行該程序段后,x的值為

A)ture

B)false

C)0

D)1

(27)下列程序執(zhí)行后的輸出結(jié)果是

voidfund(inti);

voidfunc2(inti);

charst[]="hello,friend!H;

voidfund(inti)

{printf(M%c",st[i]);

if(i<3){i+=2;fonc2(i);}}

voidfunc2(inti)

{printf("%c",stEi]);

if(i<3){i+=2;funcl(i);}}

main()

{inti=0;fund(i);printf(M\nH);}

A)hello

B)hel

C)hlo

D)him

(28)以下函數(shù)返回a所指數(shù)組中最大值所在的下標值

fun(int*a,intn)

{inti,j=O,p;

P=j;

for(i=j;iif(a[i]>a[p]);

return(p);}

在下劃線處應(yīng)填入的內(nèi)容是

A)i=p

B)a[p]=a[i]

C)p=j

D)p=I

(29)下面說明不正確的是

A)chara[10]="china";

B)charaL10],*p=a;p="china"

C)char*a;a-*china";

D)chara[10],*p;p=a=nchina"

(30)以下程序的輸出結(jié)果是

#include

voidprt(int*x,int*y,int*z)

{printf(n%d,%d,%d\nn,-H-*x,-H-*y,*(z++));}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);

prt(&a,&b,&c);}

A)11,42,31

12,22,41

B)11,41,20

12,42,20

C)11,21,40

11,21,21

D)11,41,21

12,42,22

(31)若有函數(shù)內(nèi)部說明:inta[3][4];則數(shù)組a中各元素

A)可在程序的運行階段得到初值0

B)可在程序的編譯階段得到初值0

C)不能得到確定的初值

D)可在程序的編譯或運行階段得到初值0

(34)定義如下變量和數(shù)組:

intk;

inta[3][3]={9,8,7,6,5,4,321};

則下面語句的輸出結(jié)果是

fbr(k=0;k〈3;k++)printf("%d”,a[k][k]);

A)753

B)951

C)963

D)741

(35)下列程序執(zhí)行后的輸出結(jié)果是

main()

{chararr[2][4];

strcpy(arr,"you");strcpy(arr[1]Jme“);

arr[0][3]=';

printf("%s\n”,arr);}

A)you&me

B)you

C)me

D)err

(36)有以下函數(shù)

charfiin(char*p)

{returnp;}

該函數(shù)的返回值是

A)無確切的值

B)形參p中存放的地址值

C)一個臨時存儲單元的地址

D)形參p自身的地址值

(37)以下正確的說法是

A)定義函數(shù)時,形參的類型說明可以放在函數(shù)體內(nèi)

B)return后邊的值不能為表達式

C)如果函數(shù)值的類型與返回值類型不一致,以函數(shù)值類型為準

D)如果形參與實參類型不一致,以實參類型為準

(38)有以下程序

intf(intn)

{if(n==l)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=O;

for(i=l;i〈3;i++)j+=f(i);

printf("%d\n\j);}

程序運行后的輸出結(jié)果是

A)4

B)3

C)2

D)1

(39)設(shè)有如下定義:

strucksk

{inta;

floatb;

}data;

int*p;

若要使P指向data中的a域,正確的賦值語句是

A)p=&a;

B)p=data.a;

C)p=&data.a;

D)*p=data.a;'

(40)以下對結(jié)構(gòu)體類型變量的定義中,不正確的是

A)typedefstructaa

{intn;

floatm;

}AA;

AAtdl;

B)#defineAAstructaa

AA{intn;

floatm;

}tdl;

C)struct

{intn;

floatm;

}aa;

structaatdl;

D)struct

{intn;

floatm;

}tdl;

(41)若說明int*p,n;則通過語句scanf能夠正確讀入數(shù)據(jù)的程序段是

A)p=&n;scanf("%d”,&p);

B)p=&n;scanf("%d",*p);

C)scanf(u%d",n);

D)p=&n;scanf(n%dn,p);

(42)在下述程序中,判斷i刁共執(zhí)行的次數(shù)是

main()

{inti=0,j=10,k=2,s=0;

for(;;)

{i+=k;

if(i>j)

{printf(”%d”,s);

break;

}s+=i;

}

)

A)4

B)7

C)5

D)6

(43)以下4個選項中,不能看做一條語句的是

A);

B)a=5,b=2.5,c=3.6;

C)if(a<5);

D)if(b!=5)x=2;y=6;

(44)在C語言中,變量的隱含存儲類別是

A)auto

B)static

C)extern

D)無存儲類別

(45)若有以下程序

//include

voidf(intn);

main()

{voidf(intn);

f(5);

}

voidf(intn)

{printf(n%d\nH,n);}

則以下敘述中不正確的是

A)若只在主函數(shù)中對函數(shù)f進行說明,則只能在主函數(shù)中正確調(diào)用函數(shù)f

B)若在主函數(shù)前對函數(shù)f進行說明,則在主函數(shù)和其后的其他函數(shù)中都可以正確調(diào)用

函數(shù)f

C)對于以上程序,編譯時系統(tǒng)會提示出錯信息:提示對f函數(shù)重復(fù)說明

D)函數(shù)f無返回值,所以可用void將其類型定義為無返回值型

(46)若有下面的說明和定義

structtest

{intml;charm2;floatm3;

unionuu{charul[5];intu2[2];}ua;

}myaa;

則sizeof(structtest)的值是

A)12

B)16

C)14

D)9

(47)以下程序的輸出是

structst

{intx;int*y;}*p;

intdt[4]={10,20,30,40};

structstaa[4]={50,&dt[0],60,&dt[0],60,&dtL0],60,&dt[0]};

main()

{P=aa;

printf("%d\n",++(p->x));

)

A)10

B)11

C)51

D)60

(48)若有運算符w,sizeof,八,&=,則它們按優(yōu)先級由高至低的正確排列次序是

A)sizeof,&=,?,A

B)sizeof,?,A,&=

C)A,?,sizeof,&=

D)?,A,&=,sizeof

(49)函數(shù)代eek(pf,OL,SEEK_END)中的SEEK_END代表的起始點是

A)文件開始

B)文件末尾

C)文件當(dāng)前位置

D)以上都不對

(50)有以下程序

#include

main()

{FILE*fp;inti=20,j=30,k,n;

fp=fopen(ndl.datn,"wn);

fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);

fclose(fp);

fp=fopen("dl.dat","r");

fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);

fclose(fp);

)

程序運行后的輸出結(jié)果是

A)2030

B)2050

C)3050

D)3020

二、填空題

(1)數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【1】。

解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指反映數(shù)據(jù)元素之間邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu);數(shù)據(jù)的存儲結(jié)構(gòu)是指

數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式。在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅要存放各數(shù)據(jù)

元素的信息,還需要存放各數(shù)據(jù)元素之間的前后件關(guān)系的信息。

(2)在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機制稱為【2】。

解析:類是面向?qū)ο笳Z言中必備的程序語言結(jié)構(gòu),用來實現(xiàn)抽象數(shù)據(jù)類型。類與類之間的

繼承關(guān)系實現(xiàn)了類之間的共享屬性和操作,一個類可以在另一個已定義的類的基礎(chǔ)上定義,

這樣使該類型繼承了其超類的屬性和方法,當(dāng)然,也可以定義自己的屬性和方法。

(3)耦合和內(nèi)聚是評價模塊獨立性的兩個主要標準,其中【3】反映了模塊內(nèi)各成分之間

的聯(lián)系。

解析:內(nèi)聚性是一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度的度量,內(nèi)聚是從功能角度

來度量模塊內(nèi)的聯(lián)系;耦合性是模塊間互相連接的緊密程度的度量。

(4)一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體"項目主管"與實

體"項目"的聯(lián)系屬于【4】的聯(lián)系。

解析:兩個實體集間的聯(lián)系實際上是實體集間的函數(shù)關(guān)系,這種函數(shù)關(guān)系可以有3種,即

一對一(1:1)的聯(lián)系、一對多(1:N)或多對一(N:1)的聯(lián)系和多對多(N:N)的聯(lián)

系。

(5)數(shù)據(jù)庫設(shè)計分為以下6個設(shè)計階段:需求分析階段、【5】、邏輯設(shè)計階段、物理設(shè)

計階段、實施階段、運行和維護階段。

解析:數(shù)據(jù)庫設(shè)計分為以下6個設(shè)計階段:需求分析階段、概念設(shè)計階段、邏輯設(shè)計階段、

物理設(shè)計階段、實施階段及數(shù)據(jù)庫運行和維護階段。

(6)以下程序的運行結(jié)果是【6】。

#defineMAX(a,b)(a>b?a:b)+1

main()

{inti=6J=8,k;

printf("%d\n",MAX(i,j));

解析:本題考查宏定義與三目運算符的綜合用法,宏定義是原樣替換,本題中,如果a>b

成立,則a+1的值為整個表達式的值,否則為b+1的值為整個表達式的值,(應(yīng)注意后面的

加1)?

(7)以下程序的功能是從健盤輸入若干學(xué)生的成績,并輸出最高成績和最低成績,當(dāng)輸入

負數(shù)時結(jié)束。請?zhí)羁铡?/p>

main()

{floatx,amax,amin;

scanf("%f,,&x);

amax=x;

amin=x;

while([7])

{if(x>amax)

amax=x;

else

if[8]

amin=x;

elsescanf("%f\&x);

}

printf("\namax=%f\namin=%f\nu,amax,aiTiin);

}

解析:本題先從鍵盤接受數(shù)值,并分別賦給amax(用于保存最高成績)和amin(用干保

存最低成績),然后通過while循環(huán)控制是否結(jié)束輸入,并且通過if語句來給amax和amin

賦值和進行下一次的輸入。

(8)在對文件操作的過程中,若要求文件的位置指針回到文件的開始處,應(yīng)當(dāng)調(diào)用的函數(shù)

是【9】。

答案;rewind()

(9)在計算機中,字符的比較是對它們的【10】進行比較。

解析:C語言中,字符也可以進行比較運算,且是按照ASCH碼值進行的。

(10)在內(nèi)存中,存儲字符'X,要占用1個字節(jié),存儲字符串"X"要占用【111個字節(jié)。

解析:計算機存儲--個字符用1個字節(jié),存儲字符串時,每個字符用占用1個字節(jié),另在

字符串的有效字符之后存儲1個字符串的結(jié)束標記符。所以存儲字符串“X”要占用2個字

節(jié),存儲字符‘X,只要1個字節(jié)。

(11)下列程序的輸出結(jié)果是16.00,請?zhí)羁铡?/p>

main()

{inta=9,b=2;

floatx=[12],y=l.l,z;

z=a/2+b*x/y+l/2;

printf("%5.2f\n",z);

解析:本題最后一條語句,表示以浮點格式輸出z的值,寬度為5,其中所含2位小數(shù),

應(yīng)該注意的是,兩個整型運算結(jié)果仍為整型,如1/2的結(jié)果為0,對本題可逐步求解:

16.00=9/2+2*x/l.1+1/2

16.00=4+2*x/l.l+0

12.00=2*x/l.l

所以,x的值為6.6o

(12)設(shè)在主函數(shù)中有以下定義和函數(shù)調(diào)用語句,且fim函數(shù)為void類型;請寫出ftm函數(shù)

的首部【13]。要求形參名為b。

main()

{doubles[10][22];

intn;?

?

?

fun(s);

解析:本題中,為了明確表示“不帶回值”,可以用“void”定義“無類型”(或稱“空類

型”)。這系統(tǒng)就保證不使函數(shù)帶回任何值,二維數(shù)組的第一維可以省略。

(13)下列程序的功能是輸入?個整數(shù),判斷是否是素數(shù),若為素數(shù)輸出1,否則輸出0,

請?zhí)羁铡?/p>

main()

{inti,x,y=l;

scanf("%d",&x);

for(i=2;i<=x/2;i++)

if[14]{y=0;break;}

printf("%d\n",y);

}

解析:為判數(shù)x是否是素數(shù),預(yù)置變量y的值為1(x可能是素數(shù)),然后用循環(huán),用2至

x/2的整數(shù)i測試對x的整除性,若能被其中的某個整數(shù)整除,則x是合數(shù),置y的值為0

(x不是素數(shù)),結(jié)束測試循環(huán)。若都不能整除,則x為素數(shù)。i能否整除x,可用求余運算

x%i等于0來判定。所以程序中的空框可填x%i==0。測試x為素數(shù)的代碼可寫成:y=1;

for(i=2;i<=x/2;i++)

if(x%i=0){y=0;break;}

(14)下面程序的功能是將一個字符串str的內(nèi)容顛倒過來,請?zhí)羁铡?/p>

#include

main()

{intij,[15];charstr[]={"1234567");

for(i=Oj=strlen(str)[16];i{k=str[i];strEi]=str[j];strEj]=k;}

printf("%s\n",str);

}

解析:顛倒一個字符串中的字符,就是首尾對應(yīng)的元素兩兩交換。簡單地可用兩個游標變

量i和j,i是前端元素的下標,j是后端元素的下標,交換以這兩個變量值為下標的元素str

[i]和str[jL開始時,i的值為0,j的值為字符串末元素的F

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論