2021-2022年貴州省遵義市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第1頁
2021-2022年貴州省遵義市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第2頁
2021-2022年貴州省遵義市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第3頁
2021-2022年貴州省遵義市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第4頁
2021-2022年貴州省遵義市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第5頁
已閱讀5頁,還剩70頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年貴州省遵義市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.

3.

4.關(guān)于C語言中數(shù)的表示,以下敘述中正確的是()。

A.只有整型數(shù)在允許范圍內(nèi)能精確無誤地表示,實型數(shù)會有誤差

B.只要在允許范圍內(nèi)整型數(shù)和實型數(shù)都能精確地表示

C.只有實型數(shù)在允許范圍內(nèi)能精確無誤地表示,整形數(shù)會有誤差

D.只有用八進(jìn)制表示的數(shù)才不會有誤差

5.以下選項中合法的C語言常量是()。

A.2.0KbB.”C++’C.”\2.0D.1.01

6.與“y=(x>0?1:x<0?-1:0)”;的功能相同的if語句是()。A.A.if(x>0)y=1;elseif(x<0)y=1;else=""y="0;

B."x="">0)y=1;elseif(x<0)y=-l;else=""y="0;"

C.y="-l"x="">O)y=1;elseif(x=-0)y=0;elsey=-l;

D.y=0;if(x>=0)if(x>=0)y=1;elsey=-l;

7.有以下程序段:inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){casel:case3:printf("%d\n",n);break;case2:case4:print?("%d\n",n);continue;case():exit(0);}printf("%d\n",n);}以下關(guān)于程序段執(zhí)行情況的敘述,正確的是()。A.for循環(huán)語句固定執(zhí)行8次

B.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時結(jié)束循環(huán)操作

C.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時不做任何操作

D.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時結(jié)束程序運行

8.若有函數(shù)首部“intfun(doublex[10],int*n)”,則下列針對此函數(shù)的函數(shù)聲明語句中正確的是()。

A.intfun(double,int);

B.intfun(double*,int*);

C.intfun(double*x,intn);

D.intfun(doublex,int*n);

9.

10.在供應(yīng)關(guān)系中,實體供應(yīng)商和實體零件之間的聯(lián)系是()。

A.多對多B.一對一C.多對一D.一對多

11.在下列語句中,其含義為“q是一個函數(shù)指針,該指針指向整型數(shù)據(jù)”的定義語句是()。

A.int**q;B.int(*q);C.int*q;D.int*q;

12.若以下選項中的變量已正確定義,則正確的賦值語句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

13.已知各變量的類型說明如下則以下符合C語言語法的表達(dá)式是()。A.a+=a-=(b=4)*(a=3)B.a=a*3=2C.x%(-3)D.y=f1oat(i)

14.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當(dāng)運行時輸入:a<回車>后,以下敘述正確的是()。

A.變量c1被賦予字符a,c2被賦予回車符

B.程序?qū)⒌却脩糨斎氲?個字符

C.變量c1被賦予字符a,c2中仍是原有字符2

D.變量c1被賦予字符a,c2中將無確定值

15.設(shè)二叉排序樹中有n個結(jié)點,則二叉排序樹的平均查找長度為()。A.O(1)

B.O(log2n)

C.O(n)

D.(n2)

16.

17.第

11

若有定義:char*st="howareyou";下列程序段中正確的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

18.已知各變量的類型說明如下則以下不符合C語言語法的表達(dá)式是()。A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

19.若有以下定義和語句:chars[10]="abcd!",*s2="\nl23\\";Drintf("%d%d\n",strlen(sl),strlen(s2));則輸出結(jié)果是()。A.55B.105C.107D.58

20.下列能正確定義且賦初值的語句是()。

A.intn1=n2=1;

B.charC=99;

C.floatf=f+1;

D.doublex=1.2E5.6;

二、2.填空題(20題)21.在結(jié)構(gòu)化設(shè)計方法中,數(shù)據(jù)流圖表達(dá)了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個______實際上對應(yīng)一個處理模塊。

22.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>

main()

{inti,j,k;

k=0;i=j=【】;

k+=-(i+j);printf("%d\n",k);

}

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

#include<stdio.h>

#defineM5

#defineNM+M

main()

{intk;

k;N*N*5;printf("%d\n"k);

}

24.以下程序的功能是從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>

majn()

{FILE*fp;charch;

fp=fopen(______);

ch=fgetc(fp);

whle(!feof(fp)){putchar(ch);ch=f8etc(fp);}

putchar('\n');fclose(fp);

}

25.近年來形成了軟件開發(fā)的多種模式,大致有3種類型:基于瀑布模型的結(jié)構(gòu)化生命周期方法、基于動態(tài)定義需求的【】方法和基于結(jié)構(gòu)的面向?qū)ο蟮能浖_發(fā)方法。

26.“printf("%d\n",strlen("\t\"\023\xAB\nC"));”語句的輸出結(jié)果是()。

27.以下程序運行后的輸出結(jié)果是______。

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

for(i=0;i<3;i++)printf("%d%d",i,fun(a));

printf("\n");

}

28.以下程序運行后的輸出結(jié)果是______。

voidswap(intx,inty)

{intt;

t=x;x=y;y=t;printf("%d%d",x,y);

}

main()

{inta=3,b=4;

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

}

29.以下程序通過函數(shù)指針p調(diào)用函數(shù)fun,請在填空欄內(nèi)寫出定義變量p的語句。

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

p=fun;p(&a,&b);

……

}

30.開發(fā)軟件所需要的高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象被人們稱之為【】。

31.—個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。

32.下列程序段的運行結(jié)果是______。

charstr[]="ABCD",*p=str;

printf("%d\n",*(p+3));

33.下面的程序是將從終端讀入的20個字符放入字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti;

chars[21],*p;

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

s[i]=getehar();

s[i]=【】;

p=【】;

while(*p)putchar(【】);

}

34.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。

35.表示“整數(shù)x的絕對值大于5”時值為“假”的C語言表達(dá)式是______。

36.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型的動態(tài)存儲單元______。

37.有以下程序:

intfa(intx){returnx*x;}

intfb(intx){returnx*x*x;}

intf(int(*f1)(),int(*f2)(),(intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2);printf("%d\n",i);}

程序運行后,輸出結(jié)果是【】。

38.算法的復(fù)雜度主要包括【】復(fù)雜度和空間復(fù)雜度。

39.設(shè)x和y均為int型變量,且x=1,y=2,則表達(dá)式double(1+x/y)的值為【】。

40.若有下列定義和語句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結(jié)果為______。

三、1.選擇題(20題)41.下列二維數(shù)組初始化語句中,正確且與語句floata[][3]={0,3,8,0,9};等價的是

A.floata[2][]={{0,3,8},{0,9}};

B.floata[][3]={0,3,8,0,9,0};

C.floata[][3]={{0,3},{8,0},{9,0}};

D.floata[2][]={{0,3,8},{0,9,0}};

42.軟件工程的出現(xiàn)是由于()。A.A.程序設(shè)計方法學(xué)的影響B(tài).軟件產(chǎn)業(yè)化的需要C.軟件危機(jī)的出現(xiàn)D.計算機(jī)的發(fā)展

43.以下程序的輸出結(jié)果是______。main(){char*s="121";intk=0,a=0,b=0;do{k++;if(k%2==0){a=a+s[k]-'\0';continue;}b=b+s[k]-'\0';a=a+s[k]-'\0';}while(s[k+1]);printf("k=%da=%db=%d\n",k,a,b);}

A.k=3a=98b=49

B.k=3a=99b=50

C.k=2a=99b=50

D.k=2a=98b=49

44.在計算機(jī)中,算法是指()。

A.查詢方法B.加工方法C.解題方案的準(zhǔn)確而完整的描述D.排序方法

45.有以下程序main(){union{unsignedintn;unsignedcharC;}ul;u1.C='A';printf("%c\n",u1.n);}執(zhí)行后輸出結(jié)果是

A.產(chǎn)生語法錯B.隨機(jī)值C.AD.65

46.有下列程序main(){intt,a=1,b=5,c=-2;while(a>b>c){t=a;a=b;b=t;c++;}printf("%d,%d,%d",a,b,c);}程序輸出的結(jié)果是()。

A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2

47.結(jié)構(gòu)化分析方法是面向()的自頂向下、逐步求精進(jìn)行需求分析的方法

A.對象B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)流D.目標(biāo)

48.若有說明inta[3][4];,則a數(shù)組元素的非法引用是()A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]

49.設(shè)變量均已正確定義,若要通過scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式正確的是(注:□代表空格字符)()。

A.10□X□20□Y<回車>

B.10□X20□Y<回車>

C.10□X<回車>

D.10X<回車>20□Y<回車>20Y<回車>

50.下列程序是用來判斷數(shù)組中特定元素的位置所在。如果輸入如下整數(shù):876675896101301401980431451777#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,45l,777},k;clrscr();fun(a,10,&k);printf("%d,%d\n",k,a[k]);}則輸出結(jié)果為

A.7,431B.6C.980D.6,980

51.以下選項中非法的表達(dá)式是()。

A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1

52.以下正確的說法是

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

B.return后邊的值不能為表達(dá)式

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

D.如果形參與實參類型不一致,以實參類型為準(zhǔn)

53.對于下述說明,不能使變量p->b的值增1的表達(dá)式是______。structexm{inta;intb;floatc}*p;

A.++p->bB.++(p++)->bC.p->b++D.(++p)->b++

54.有下列函數(shù):intfun(char*s){char*t=s;while(*t++);return(t-s);}該函數(shù)的功能是()。

A.比較兩個字符串的大小

B.計算s所指字符串占用內(nèi)存字節(jié)的個數(shù)

C.計算s所指字符串的長度

D.將s所指字符串復(fù)制到字符串t中

55.已有定義:inti,a[10],*p;則合法的賦值語句是()。

A.p=100;B.p=a[5];C.p=a[2]+2;D.p=a+2;

56.設(shè)有定義:int(*ptr)();則以下敘述中正確的是()

A.ptr是指向一維數(shù)組的指針變量

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int數(shù)據(jù)

D.prt是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針

57.在結(jié)構(gòu)化程序設(shè)計方法中,下面哪種內(nèi)聚性最弱?

A.邏輯內(nèi)聚B.時間內(nèi)聚C.偶然內(nèi)聚D.過程內(nèi)聚

58.設(shè)有以下語句inta=1,b=2,c;c=a^(b<<2);執(zhí)行后,c的值為______。A.6B.7C.8D.9

59.在數(shù)據(jù)庫的兩級映射中,從概念模式到內(nèi)模式的映射一般由______實現(xiàn)。

A.數(shù)據(jù)庫系統(tǒng)B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫管理員D.數(shù)據(jù)庫操作系統(tǒng)

60.對長度為n的線性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為()。

A.log2nB.n/2C.nD.n+1

四、選擇題(20題)61.若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是

A.’a’<=c<=’z’B.(c>=’a’)||(c<=’z’)

C.(’a’<=c)and(’z’>=c)D.(c>=’a’)&&(c<=’z’)

62.分布式數(shù)據(jù)庫系統(tǒng)不具有的特點是

A.?dāng)?shù)據(jù)的物理分布性和邏輯整體性B.位置透明性和復(fù)制透明性

C.事物管理的集中性D.?dāng)?shù)據(jù)冗余

63.以下是正確C語言實型常量的是()。

A..e—1B.e一1C.一1eD.1e一1

64.若有定義和語句:

int*(*pp),*P,a=20,b=10;

pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,**PP);

則輸出結(jié)果是()。A.A.20,10B.20,20C.10,20D.10,10

65.有以下程序

A.357B.753C.369D.751

66.若函數(shù)調(diào)用時的實參為變量時,以下關(guān)于函數(shù)形參和實參的敘述中正確的是()。

A.函數(shù)的形參和實參分別占用不同的存儲單元

B.形參只是形式上的存在,不占用具體存儲單元

C.同名的實參和形參占同一存儲單元

D.函數(shù)的實參和其對應(yīng)的形參共占同一存儲單元

67.下面不屬于軟件設(shè)計原則的是()。

A.抽象B.模塊化C.自底向上D.信息隱蔽

68.若有說明:inta[3][4]={0};,則下面正確的敘述是

A.只初始化了第一個元素,即a[0][0]可得到初值0

B.此初始化語句不正確

C.?dāng)?shù)組a中各元素都可得到初值,但其值不一定為0

D.?dāng)?shù)組a中每個元素均可得到初值0

69.有以下程序

#include<stdio.h>

#defineP24;

#defineS(x)P*x+x;

main()

{inta=2,b=2;

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

}

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

A.程序編譯運行時報錯,無法輸出B.54

C.96D.100

70.以下選項中與

71.

72.HTTP協(xié)議的消息有()兩種類型。

A.發(fā)送消息和接收消息B.請求消息和響應(yīng)消息C.消息頭和消息體D.實體消息和控制消息

73.

若有下列定義(設(shè)int類型變量占2個字節(jié)):

inti=8,j=9;

則下列語句:

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

輸出的結(jié)果是()。

A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9

74.

75.

76.C語言中的標(biāo)識符分為關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符,以下敘述正確的是()。

A.預(yù)定義標(biāo)識符(如庫函數(shù)中的函數(shù)名)可用做用戶標(biāo)識符,但失去原有含義

B.用戶標(biāo)識符可以由字母和數(shù)字任意順序組成

C.在標(biāo)識符中大寫字母和小寫字母被認(rèn)為是相同的字符

D.關(guān)鍵字可用做用戶標(biāo)識符,但失去原有含義

77.下列敘述中正確的是()。

A.為了建立一個關(guān)系,首先要構(gòu)造數(shù)據(jù)的邏輯關(guān)系

B.表示關(guān)系的二維表中各元組的每一個分量還可以分成若干數(shù)據(jù)項

C.一個關(guān)系的屬性名表稱為關(guān)系模式

D.一個關(guān)系可以包括多個二維表

78.有以下程序:

fun(inta[],intm,intn)

{inti;

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

a[i+1]=a[i]+3;

returna[i+1];

}

voidmain()

{

inti,a[6]={2,4,6,8,10,12};

fun(a,2,5);

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

printf("%d",a[i]);

}

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

A.24691315B.24691215C.249121518D.249121415

79.

有下列程序:

main

{intk=5,n=0;

while(k>0)

{switch(k)

{dcfault:break;

case1:n=n+k;

case2:

case3:n+=k;

}

k--;

}

printf("%d\n".n);

}

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

A.0B.4C.6D.7

80.以下結(jié)構(gòu)體類型說明和變量定義中正確的是()。

A.

B.

C.

D.

五、程序改錯題(1題)81.給定程序中,函數(shù)proc()的功能是:使數(shù)組中的元素的值增加10倍。修改其中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),其功能是:利用以下所示的簡單迭代方法求方程cos(x)-x=0的一個實根。

xn+1=COS(xn)

迭代步驟如下:

(1)取x1初始值為0.0;

(2)x0=x1,把?X1的值賦給x0;

(3)x1=cos(xO),求出一個新的x1;

(4)若x0-x1的絕對值小于0.000001,則執(zhí)行步驟

(5),否則執(zhí)行步驟(2);

(5)所求x1就是方程cos(x)-x=0的一個實根,作為函數(shù)值返回。

程序?qū)⑤敵鼋Y(jié)果root=0.739085。

注意:部分源程序給出如下。

請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。

試題程序:

參考答案

1.D

2.A

3.C

4.A當(dāng)數(shù)據(jù)類型是實數(shù)時,在存儲過程中,當(dāng)小數(shù)部分無限長時,會存在小數(shù)部分的截斷,會存在誤差,所以答案選擇A。

5.DC語言中,常量有整型常量、實型常量、字符常量和字符串常量等。整型常量和實型常量又稱為數(shù)值型常量。其中整型常量只能用數(shù)字表示,不帶小數(shù)點。實型常量必須用帶小數(shù)點的數(shù)表示,所以選項A錯誤,選項D正確;字符型常量是用單引號標(biāo)注的單個字符,字符串常量是用雙引號標(biāo)注的若干個字符,選項B、C錯誤。故本題答案為D選項。

6.By=(x=)071:x<0?-1:0)中有兩個三目運算符,因此按從右到在的順序運算,可寫成y=(x>071:(x<0?-1:0)),故選擇8選項。

7.A程序中的if循環(huán)是固定地執(zhí)行8次,屬于計數(shù)器,程序是從中隨機(jī)抽取一個數(shù),然后對5進(jìn)行求余再輸出,共抽取8個數(shù)。所以答案為A。

8.B函數(shù)聲明有兩種形式:①類型說明符函數(shù)名(類型形參,類型形參……);②類型說明符被調(diào)函數(shù)名(類型,類型……)。由于函數(shù)首部為“intfun(doublex[10],int*n)”。故本題答案為B選項。

9.D

10.A一家供應(yīng)商可提供多種零件,一種零件也可被多家供應(yīng)商提供。所以實體供應(yīng)商和實體零件之間的聯(lián)系是多對多。本題答案為A選項。

11.B本題考查指針函數(shù)。其定義的基本格式為:類型說明符(*函數(shù)名)?!邦愋驼f明符”表示返回的指針值指向的數(shù)據(jù)類型。

12.C解析:賦值的一般形式為:變量名:表達(dá)式;,賦值的方向為由右向左,即將:右側(cè)表達(dá)式的值賦給:左側(cè)的變量,執(zhí)行步驟是先計算再賦值。選項A中運算符%的運算對象必須為整數(shù),而選項A中26.8不為整數(shù),故選項A不正確;選項B將一個變量賦值給一個常量,這在C語言中是不允許的,故選項B不正確;選項D中也是將一個常量3賦值給一個常量,故選項D不正確;所以,4個選項中選項C符合題意。

13.A

14.A解析:本題考查的是getchar()函數(shù)。getchar()函數(shù)執(zhí)行時將從鍵盤緩沖區(qū)中讀取用戶的輸入,而不管輸入的是否可打印字符,所以當(dāng)輸入a<回車>后,鍵盤緩沖區(qū)被輸入的實際上是兩個字符:'a'和'\\n'。故選項A的說法是正確的。

15.B

16.A

17.A本題綜合考查字符數(shù)組的賦值和strcpy函數(shù)的用法。C語言不允許用賦值表達(dá)式對字符數(shù)組賦值,如下面的語句就是非法的:str1='China',如果想把“China”這5個字符放到數(shù)組str1中,除了逐個輸入外,還能使用strcpy函數(shù),該函數(shù)的功能是將一個字符串復(fù)制到一字符數(shù)組中。例如,strcpy(str1,'China');或strcpy(str1,str2);注意,不能企圖用以下語句來實行賦值(將str2的值傳給str1):str1=str2;不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。

strcpy函數(shù)的結(jié)構(gòu)是:strcpy(字符數(shù)組1,字符串2)

其中,需要注意的是,字符數(shù)組1的長度不應(yīng)小于字符串2的長度,“字符數(shù)組1”必須寫成數(shù)組名形式,如(str1),“字符串2”可以是字符數(shù)組名,也可以是字符串常量,不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。

18.A

19.A\\n和\\\\分別為轉(zhuǎn)義字符,各占據(jù)一個字符的位置。

20.B在c語言規(guī)定中,可以在定義變量的同時給變量賦初值,選項A中n2沒有定義;選項C中不能在賦值表達(dá)式的右邊出現(xiàn)變量本身,選項D中字母E后面的數(shù)應(yīng)該為整數(shù),所以不對。

21.加工加工解析:數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。其中的每一個加工對應(yīng)一個處理模塊。

22.-2-2解析:題目中定義并初始化了變量k為0,最后輸出k的值,要求為4,而在此期間只有k+=-(i+j);這條語句改變了k的值,即要求表達(dá)式-(i+j)的值為4。所以,答案應(yīng)該為-2,因為只有i=j=-2時,表達(dá)式-(i+j)的值才為4。

23.5555解析:宏替換不是函數(shù)調(diào)用,所以不能因為M被定義為5,而N被定義為M+M而武斷地認(rèn)為N的值就是5+5=10。宏替換就是簡單的字符串替換,以本題為例:因為N被定義為M+M,所以k=N*N*5;語句展開后為k=M+M*M+M*5;。又因為M被定義為5,所以再展開后為k=5+5*5+5*5;。現(xiàn)在不難計算出,這個表達(dá)式的結(jié)果為k=55。故最終輸出結(jié)果是55。

24.

25.原型化原型化

26.66解析:strlen()函數(shù)的作用是計算字符串的長度并作為函數(shù)的返回值,這里的長度不包括串尾的結(jié)束標(biāo)志\'\\0\'。\'\\t\'是轉(zhuǎn)義字符,代表橫向跳若干格;\'\\'\'是轉(zhuǎn)義字符,代表雙引號:\'\\023\'也只代表一個字符,而不管轉(zhuǎn)義字符后面有幾個符;\'\\xAB\'是以兩位十六進(jìn)制數(shù)AB表示的ASCII碼字符,只代表一個字符;\'\\n\'是轉(zhuǎn)義字符,代表回車換行。題中語句中的字符串有5個字符常量各代表一個字符,再加上字母C,所以返回的長度是6。

27.010111212010111212解析:本題考查的是靜態(tài)局部變量的運用。靜態(tài)局部變量的作用域與普通局部變量一樣,但它的生存期將延長到程序運行結(jié)束。本題的主函數(shù)中使用一個for循環(huán)輸出循環(huán)變量i和fun(a)的值,由于a的值一直沒被修改過,所以三次調(diào)用的都是fun(5)。第1次調(diào)用,b=0,c=3,所以返回值為5+1+4=10;第2次調(diào)用,因為c是靜態(tài)局部變量,它仍然保存著上次調(diào)用結(jié)束時的值4,而b重新被創(chuàng)建和初始化為0,所以返回值為5+1+5=11;同理,第3次調(diào)用返回的是12。所以,程序最終輸出為:010111212。

28.4334

29.void(*p)();void(*p)();解析:要定義p為指向函數(shù)的指針變量,需寫成void(*p)();,注意*p兩側(cè)的括弧不可以省略,表示P先與*結(jié)合,是指針變量,再與后面的()結(jié)合,表示此指針變量指向函數(shù),這個函數(shù)無返回值(同fun()函數(shù))。

30.軟件危機(jī)軟件危機(jī)

31.可重用性可重用性解析:繼承的優(yōu)點:相似的對象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從而大大減少了程序中的冗余,提高軟件的可重用性。

32.6868解析:本題考查如何用指針引用數(shù)組元素。本題先定義了一個指向字符型數(shù)組str的指針p,指針p指向數(shù)組str的首地址,p+3將指針指向str[3],*(p+3)指的是字符“D”,輸出時是以“%d”格式輸出的,即輸出其相應(yīng)ASCII碼值68。

33.\0s*p++\\0\r\ns\r\n*p++解析:本題先通過for循環(huán)從鍵盤讀入20個字符,然后賦值'\\0'作為字符串結(jié)束標(biāo)志,再使指針p指向字符串的首地址,最后通過while循環(huán)對字符串進(jìn)行掃描并輸出。

34.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DBMS)

35.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本題考查基本邏輯表達(dá),“整數(shù)x的絕對值大于5”時值為“假”,即整數(shù)x的絕對值小于等于5,也就是整數(shù)x要大于等于-5且要小于等于5。這里“且”用“與(&&)”表示,所以C語言表達(dá)式為:(x>-5)&&(x<5)。

36.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函數(shù)只有一個參數(shù),該參數(shù)指定了需要分配多少字節(jié)的內(nèi)存。然后將分配好的內(nèi)存塊的首地址作為void*(未知類型指針)返回.故標(biāo)準(zhǔn)的調(diào)用形式應(yīng)該寫成:

p(double*)malloc(sizeof(double));

37.44解析:在主函數(shù)中調(diào)用函數(shù)f,函數(shù)f有三個參數(shù),形參f1與f2分別是兩個指向函數(shù)的指針。在f中執(zhí)行f2(x)-f1(x),實際上是執(zhí)行了fb(2)-fa(2),故執(zhí)行i=(fa,fb,2)后i的值為23-22=4。

38.時間時間解析:算法的復(fù)雜度主要指時間復(fù)雜度和空間復(fù)雜度。所謂算法的時間復(fù)雜度,是指執(zhí)行算法所需要的計算工作量;算法的空間復(fù)雜度,一般是指執(zhí)行這個算法所需要的內(nèi)存空間。

39.11解析:本題考查兩個知識點:一是x/y的值為整型,即為0;二是數(shù)1是double類型。

40.44解析:strcpy(s1,s2)函數(shù)的作用是將字符串s2中的內(nèi)容拷貝到字符串s1中的內(nèi)容覆蓋。strlen()函數(shù)是求字符串的長度。本題實際上是要求s2字符串的長度,即是4。

41.B解析:在選項B)中,因為數(shù)組的第一維的數(shù)目不明確,所以理解會有歧義,可以理解為1行3列,或者2行3列等。所以選項B)錯誤。注意:數(shù)組中元素的引用。

42.C解析:軟件工程的基本概念。軟件工程概念的出現(xiàn)源自于軟件危機(jī)。為了消除軟件危機(jī),通過認(rèn)真研究解決軟件危機(jī)的方法,認(rèn)識到軟件工程是使計算機(jī)軟件走向工程科學(xué)的途徑,逐步形成了軟件工程的概念。

43.C解析:第1次循環(huán)中,k=1,不執(zhí)行if分支,s[k]=‘2’,因此b=2,a=2因s[k+1]=‘1’進(jìn)入第2次循環(huán),k=2,執(zhí)行if分支,s[k]=‘1’,使a=3,進(jìn)而提前結(jié)束本次循環(huán),s[k+1]=‘\\0’,則退出循環(huán),所以k=2,a=3,b=2。

44.CC?!窘馕觥坑嬎銠C(jī)算法是指解題方案的準(zhǔn)確而完整的描述,它的基本特征分別是:可行性、確定性、有窮性和擁有足夠的情報。

45.C解析:在定義共用體的同時,定義了一個共用體型變量u1,共占兩個字節(jié),有兩個成員n和c,兩個成員的首地址是相同的.因此給u1.c賦一個“A”,其實就是給無符號整型成員u1.n的低字節(jié)賦一個“A”,輸出u1.n的時候是以字符型的形式輸出,只輸出它的低地址的一個字節(jié),因此為“A”。所以,C選項為所選。

46.A解析:本題考查while循環(huán)。先判斷while循環(huán)的控制表達(dá)式是否成亢,發(fā)現(xiàn)a>b>c不成立,所以不執(zhí)行循環(huán)。直接輸出a、b、c的值。

47.CC?!窘馕觥拷Y(jié)構(gòu)化分析方法是面向數(shù)據(jù)流進(jìn)行需求分析的方法,采用自頂向下、逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。

48.D解析:本題定義a為3行×4列的數(shù)組,它可用的行下標(biāo)最大為2,列下標(biāo)最大為3。注意:a[0][4]超過了數(shù)組的范圍。注意:數(shù)組的下標(biāo)是從0開始的。

49.D解析:當(dāng)從鍵盤輸入字符,并且在格式說明中未制定寬度時,輸入字符(包括空格符、回車符、Tab符)將按順序賦予各輸入項。也就是說,輸入字符之間沒有間隔符,所以選項D是正確的。

50.D解析:本題中直接使用指針變量k,但在使用時要注意對k的指針運算。此外,一開始應(yīng)知道*k的值為數(shù)組中的某一下標(biāo)值,即*k=0,本函數(shù)的功能是找出數(shù)組中的最大元素的位置及最大元素的值。

51.D解析:選項A)在C語言中是一個合法的關(guān)系表達(dá)式,但它并不代表數(shù)學(xué)式o<=x<100。計算0<=x<100時,從左到右結(jié)合,先計算0<=x,其結(jié)果只能是0或1,然后再比較0<100或1<100。根據(jù)運算符的優(yōu)先級,選項B)先判斷j==0是否成立,其結(jié)果只能是0或1,然后再將0或1賦給i。選項C)中,(char)(65+3)為類型強(qiáng)制轉(zhuǎn)換,將整數(shù)型數(shù)據(jù)轉(zhuǎn)換為字符型。選項D)是將一個數(shù)據(jù)賦給一個表達(dá)式,等號左邊不合要求,所以錯誤。

52.C解析:選項A)中定義函數(shù)時,形參的類型說明應(yīng)該放在形參表列內(nèi)說明。老版本C語言中,對形參類型的聲明是放在函數(shù)定義的第2行,也就是不在第1行的括號內(nèi)指定形參的類型,而在括號外單獨指定。選項B)中return后面的值可以是一個表達(dá)式。選項D)中實參與形參的類型應(yīng)相同或賦值兼容。如果實參為整型而形參為實型,或者相反,則按不同類型數(shù)值的賦值規(guī)則進(jìn)行轉(zhuǎn)換,以形參類型為準(zhǔn)。

53.D解析:p->b應(yīng)作為一個整體看待,++p->b和p->b++都使變量b增1,++(p++)->b先使b增1,再使p后移,D中表達(dá)式的含義是使p+1所指結(jié)構(gòu)體變量中的成員b的值增1。

54.C解析:在函數(shù)fun(char*s)中,首先用字符指針變量t指向s,而循環(huán)語句while(*t++);的功能是使指針變量t指向字符串變量s的末尾,這時退出循環(huán),因而語句return(t-s);返回的就是字符串s所指字符串的長度。

55.D解析:本題考核的知識點是指針變量的賦值。本題中定義了一個整型數(shù)組a和一個整型指針變量P。選項A中將一個整型數(shù)賦值給一個指針變量,C語言規(guī)定,只能特地址賦給指針指針變量,故選項A不正確:選項B中a[5]為一數(shù)組元素,同樣不是一個地址,故選項B不正確;選項c中a[2]為一數(shù)組元素,同樣是一個整型數(shù)據(jù),不是個地址,故選項C不正確:選項D中數(shù)蛆名a代表數(shù)組首地址加2,代表第三個元素的地址,故選項D正確,所以,4個選項中選項D符合題意。

56.C

57.C解析:內(nèi)聚有很多種類,其中內(nèi)聚性由弱到強(qiáng)的順序為:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚。

58.D解析:此題考核的是C語言的位運算,有括號的先算括號內(nèi)的數(shù)據(jù),所以先對b進(jìn)行左移運算:b換算成二進(jìn)制0000\u30000010,左移后變?yōu)?000\u30001000,然后再與a進(jìn)行異或運算(參與運算的兩個對應(yīng)位相同,則為0,相異則為1)結(jié)果為0000\u30001001,換算成是進(jìn)制數(shù)結(jié)果為9。對于左移運算也可直接用此規(guī)則:左移1位相當(dāng)于該數(shù)乘以2,左移2位相當(dāng)于該數(shù)乘以22(上標(biāo))=4,依此類推。所以答案選D。

59.B解析:從概念模式到內(nèi)模式的映射一般由數(shù)據(jù)庫管理系統(tǒng)(DBMS)實現(xiàn)。

60.C本題考查的是順序查找。在進(jìn)行順序查找過程中,如果線性表中的第一個元素就是被查找元素,則只需做一次比較就查找成功,查找效率最高;但如果被查找的元素是線性表中的最后一個元素,或者被查找的元素根本就不在線性表中,則為了查找這個元素需要與線性表中所有的元素進(jìn)行比較,這是順序查找的最壞情況。所以對長度為n的線性表進(jìn)行順序查找,在最壞情況下需要比較n次。故本題答案為C。

61.D在本題中,首先定義了一個字符型變量c,然后要求找出能判斷c中字符為小寫字母的表達(dá)式。

選項A的表達(dá)式′a′<=c<=′z′是一個錯誤的表達(dá)式,系統(tǒng)在編譯時,會因為該語句報錯。

選項B的表達(dá)式(c>=′a′)||(c<=′z′)是判定變量c的字符是大于等于字符a的字符或者小于等于z的字符,這其實相當(dāng)于ASCII碼中所有的字符,不能完成題目的要求。

選項C的表達(dá)式(′a′<=c)and(′z′>=c)是一個錯誤的表達(dá)式,在C語言中,沒有定義一個and關(guān)鍵字,系統(tǒng)在編譯時會報錯。

選項D的表達(dá)式(c>=′a′)&&(c<=′z′)是判定變量c的字符同時具有大于等于字符a和小于等于z的特點,很顯然,這樣的字符是小寫字母。

通過上面的分析,我們可以知道本題正確的答案是D。

62.C分布式數(shù)據(jù)庫是一種將數(shù)據(jù)分布存儲,但數(shù)據(jù)在邏輯上保持整體性的一種數(shù)據(jù)庫。分布式數(shù)據(jù)庫系統(tǒng)具有以下幾個特點:

(1)數(shù)據(jù)的物理分布性。分布式數(shù)據(jù)庫的數(shù)據(jù)不是存儲在一個場地上,不是集中存儲,而是存儲在計算機(jī)網(wǎng)絡(luò)上多個場的設(shè)備上。

(2)數(shù)據(jù)的邏輯整體性。雖然數(shù)據(jù)分布在各個場地,但邏輯上是一個整體,它們被所有的用戶共享,并由一個DDBMS統(tǒng)一管理。

(3)位置透明性和復(fù)制透明性。位置透明性是指用戶不必關(guān)心數(shù)據(jù)的邏輯分區(qū),不必關(guān)心數(shù)據(jù)物理位置分布的細(xì)節(jié);而復(fù)制透明性是指用戶不用關(guān)心數(shù)據(jù)庫在網(wǎng)絡(luò)中各個結(jié)點的復(fù)制情況,被復(fù)制的數(shù)據(jù)的更新都由系統(tǒng)自動完成。

(4)場地自治性。各場地的數(shù)據(jù)由本地DBMS管理,具有自治處理能力,能執(zhí)行局部的應(yīng)用請求。

(5)數(shù)據(jù)冗余及冗余透明性。與集中式數(shù)據(jù)庫系統(tǒng)追求低冗余度不同,DDBS通過數(shù)據(jù)的適當(dāng)冗余來提高系統(tǒng)的可靠性、可用性和改善系統(tǒng)性能。但這種冗余對用戶是透明的,即用戶不必知道冗余的存在,冗余副本之間的數(shù)據(jù)一致性問題由系統(tǒng)負(fù)責(zé)。

(6)事務(wù)管理的分布性。數(shù)據(jù)的分布性必然造成事務(wù)執(zhí)行和管理的分布性,即一個全局事務(wù)的執(zhí)行可分解為在若干場地上子事務(wù)(局部事務(wù))的執(zhí)行。事務(wù)的原子性、一致性、隔離性、持久性以及事務(wù)的恢復(fù)也都具有分布性特點。

63.D所謂常量是指在程序運行過程中,其值不能被改變的量。在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。實型常量有兩種表示形式:十進(jìn)制小數(shù)形式、指數(shù)形式。指數(shù)形式中e后面的指數(shù)必須是整數(shù),階碼標(biāo)志e之前需要有數(shù)字,由此可知選項A,B,C錯誤。答案為D選項

64.D本題考查指針變量的賦值。**PP是定義一個指針變量,語句pp=&p是將pp指向指針P,*P和**PP都是指針P所指的內(nèi)存空間的內(nèi)容,即b的值。

65.A二維數(shù)組定義行數(shù)可以省略,列數(shù)不能省略,所以答案選擇A)。

66.A本題重點考察的是函數(shù)的形參和實參。I在定義函數(shù)時函數(shù)名后面括弧中的變量名稱為“形式參數(shù)”l(簡稱形參),在主調(diào)函數(shù)中調(diào)用一個函數(shù)時,函數(shù)名后面括弧1中的參數(shù)(可以是—個表達(dá)式)稱為“實際參數(shù)”(簡稱實參)。fC語言規(guī)定,實參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內(nèi)存中,實參單元與形參單元是不同的單元。因此A選項正確。

67.C解析:軟件設(shè)計遵循軟件工程的基本目標(biāo)和原則,建立了適用于在軟件設(shè)計中應(yīng)該遵循的基本原理和與軟件設(shè)計有關(guān)的概念。①抽象是一種思維工具,就是把事物本質(zhì)的共同特性抽出來而不考慮其他細(xì)節(jié)。②模塊是指可以單獨命名且可編址的元素。如高級語言中的過程、函數(shù)、子程序等。③信息隱蔽是指在一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。④模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。因此,本題的正確答案是C。

68.D二維數(shù)組進(jìn)行初始化時可以按照分段進(jìn)行賦值,將每一行看成一段,每一段的個數(shù)為列數(shù)。也可以按行連續(xù)賦值,不用分段,將所有的數(shù)值寫成一行,系統(tǒng)會在數(shù)組每一行的元素個數(shù)與列數(shù)相同時,從下一行開始繼續(xù)賦值。也可以對部分?jǐn)?shù)組賦初值,未賦初值的元素自動取0。題目中可以看成是對數(shù)組按行進(jìn)行連續(xù)賦值,并且只給出了第一行第一列的數(shù)值0,對于未賦值的元素,系統(tǒng)自動取0,故整個數(shù)組中的每個元素都可以取初值0。

69.A本題主要考查宏的定義。宏定義用一個標(biāo)識符來表示一個字符串,這個字符串可以是常量、變量或表達(dá)式。在宏調(diào)用中將用該字符串代換宏名。宏定義中,我們主要需要注意以下幾點:

(1)同一宏名不能重復(fù)定義,除非這兩個宏定義命令行完全一致。

(2)定義宏時,記得其結(jié)尾處不要用分號隔開。

(3)替換帶參數(shù)的宏名時,一對圓括號必不可少,圓括號中實參個數(shù)應(yīng)該與形參個數(shù)相同,若有多個參數(shù),它們之間用逗號隔開。

(4)宏定義中的字符串應(yīng)加括號,字符串中出現(xiàn)的形式參數(shù)兩邊也應(yīng)加括號。

在本題中,定義宏時,出現(xiàn)了一個明顯的錯誤,即在宏的定義后面用分號表示結(jié)束,這顯然是不對的。程序編譯時,系統(tǒng)會報錯,無法完成輸出。因此,本題的正確答案是A。

70.A如果a==1則執(zhí)行a=b;否則a++;選項A)不符,所以選擇A)。

71.D

72.B

73.B解析:本題考查printf函數(shù)的格式。在printf函數(shù)中,如果格式說明符中有兩個%說明,則將第1個%后面的字符原樣輸出,并不輸出其對應(yīng)的變量值。

74.C

75.D

76.A用戶標(biāo)識符不能以數(shù)字開頭,C語言中標(biāo)識符是區(qū)分大小寫的,關(guān)鍵字不能用做用戶標(biāo)識符。

77.C解析:在格式化模型中,要事先根據(jù)應(yīng)用的需要,確定數(shù)據(jù)之間的邏輯關(guān)系,即先對數(shù)據(jù)進(jìn)行結(jié)構(gòu)化。在關(guān)系模型中,不需要事先構(gòu)造數(shù)據(jù)的邏輯關(guān)系,只要將數(shù)據(jù)按照一定的關(guān)系存入計算機(jī),也就是建立關(guān)系。所以選項A錯誤。對于一個表示關(guān)系的二維表,其最基本的要求是表中元組的每一個分量必須是不可分的數(shù)據(jù)項,即不允許表中再有表。所以,選項B、D說法是錯誤的。一個關(guān)系的屬性名表稱為關(guān)系模式,也就是二維表的表框架,相當(dāng)于記錄型。因此,選項C說法正確。

78.B函數(shù)的功能是將數(shù)組的某個區(qū)域內(nèi)的元素加3,賦給后一個元素,然后返回;題目是從a[2]到a[5]調(diào)用函數(shù),a[2]=6,所以a[3]=6+3=9,a[4]=9+3=12,a[5]=12+3=15,所以結(jié)果為B

79.D

\n本題主要考查while循環(huán)語句和switchcase語句的使用方法。其執(zhí)行步驟為:k=5時,跳出switch語句,然后k自減1;當(dāng)k=4時,跳出switch語句,然后k自減1;當(dāng)k=3時,n=13+k=0+3=3,跳出switch語句,然后k自減1;當(dāng)k=2時n=n+k=3+2=5,跳出switch語句,然后k自減l;當(dāng)k=1時,case1:n=n+k一5+1=6,沒有break繼續(xù)執(zhí)行CaSe3;n=n+k=6+1=7,跳出switch語句,然后k自減1;當(dāng)k=0時,退出循環(huán),所以輸出結(jié)果為7。

\n

80.A本題考查的是typedef的用法和結(jié)構(gòu)體變量的定義方法。typedef可用于聲明結(jié)構(gòu)體類型,其格式為“typedefstruct{結(jié)構(gòu)元素定義}結(jié)構(gòu)類型;”。本題正確答案為A)。

81.錯誤:printf(”%3d”,mEj]*10);

正確:printf(”%3d”,m[j]=mLi]*10);

【解析】按照題目中要求,數(shù)組中的元素值增加10倍,應(yīng)該讓數(shù)組中的每一個元素乘以10放入原來的位置。因此,“printf(”%3d”。m[i]*10);”應(yīng)改為“printf(”%3d”,m[j]=m[j]*10);”。

82.

【解析】本題比較簡單,因為題目中已經(jīng)給出了算法,只要把題目中的說法轉(zhuǎn)換成C語言表達(dá)式基本上就出來了,本題最好用do-while循環(huán)來做,但要注意循環(huán)終止的條件。

2021-2022年貴州省遵義市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.

3.

4.關(guān)于C語言中數(shù)的表示,以下敘述中正確的是()。

A.只有整型數(shù)在允許范圍內(nèi)能精確無誤地表示,實型數(shù)會有誤差

B.只要在允許范圍內(nèi)整型數(shù)和實型數(shù)都能精確地表示

C.只有實型數(shù)在允許范圍內(nèi)能精確無誤地表示,整形數(shù)會有誤差

D.只有用八進(jìn)制表示的數(shù)才不會有誤差

5.以下選項中合法的C語言常量是()。

A.2.0KbB.”C++’C.”\2.0D.1.01

6.與“y=(x>0?1:x<0?-1:0)”;的功能相同的if語句是()。A.A.if(x>0)y=1;elseif(x<0)y=1;else=""y="0;

B."x="">0)y=1;elseif(x<0)y=-l;else=""y="0;"

C.y="-l"x="">O)y=1;elseif(x=-0)y=0;elsey=-l;

D.y=0;if(x>=0)if(x>=0)y=1;elsey=-l;

7.有以下程序段:inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){casel:case3:printf("%d\n",n);break;case2:case4:print?("%d\n",n);continue;case():exit(0);}printf("%d\n",n);}以下關(guān)于程序段執(zhí)行情況的敘述,正確的是()。A.for循環(huán)語句固定執(zhí)行8次

B.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時結(jié)束循環(huán)操作

C.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時不做任何操作

D.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時結(jié)束程序運行

8.若有函數(shù)首部“intfun(doublex[10],int*n)”,則下列針對此函數(shù)的函數(shù)聲明語句中正確的是()。

A.intfun(double,int);

B.intfun(double*,int*);

C.intfun(double*x,intn);

D.intfun(doublex,int*n);

9.

10.在供應(yīng)關(guān)系中,實體供應(yīng)商和實體零件之間的聯(lián)系是()。

A.多對多B.一對一C.多對一D.一對多

11.在下列語句中,其含義為“q是一個函數(shù)指針,該指針指向整型數(shù)據(jù)”的定義語句是()。

A.int**q;B.int(*q);C.int*q;D.int*q;

12.若以下選項中的變量已正確定義,則正確的賦值語句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

13.已知各變量的類型說明如下則以下符合C語言語法的表達(dá)式是()。A.a+=a-=(b=4)*(a=3)B.a=a*3=2C.x%(-3)D.y=f1oat(i)

14.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當(dāng)運行時輸入:a<回車>后,以下敘述正確的是()。

A.變量c1被賦予字符a,c2被賦予回車符

B.程序?qū)⒌却脩糨斎氲?個字符

C.變量c1被賦予字符a,c2中仍是原有字符2

D.變量c1被賦予字符a,c2中將無確定值

15.設(shè)二叉排序樹中有n個結(jié)點,則二叉排序樹的平均查找長度為()。A.O(1)

B.O(log2n)

C.O(n)

D.(n2)

16.

17.第

11

若有定義:char*st="howareyou";下列程序段中正確的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

18.已知各變量的類型說明如下則以下不符合C語言語法的表達(dá)式是()。A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

19.若有以下定義和語句:chars[10]="abcd!",*s2="\nl23\\";Drintf("%d%d\n",strlen(sl),strlen(s2));則輸出結(jié)果是()。A.55B.105C.107D.58

20.下列能正確定義且賦初值的語句是()。

A.intn1=n2=1;

B.charC=99;

C.floatf=f+1;

D.doublex=1.2E5.6;

二、2.填空題(20題)21.在結(jié)構(gòu)化設(shè)計方法中,數(shù)據(jù)流圖表達(dá)了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個______實際上對應(yīng)一個處理模塊。

22.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>

main()

{inti,j,k;

k=0;i=j=【】;

k+=-(i+j);printf("%d\n",k);

}

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

#include<stdio.h>

#defineM5

#defineNM+M

main()

{intk;

k;N*N*5;printf("%d\n"k);

}

24.以下程序的功能是從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>

majn()

{FILE*fp;charch;

fp=fopen(______);

ch=fgetc(fp);

whle(!feof(fp)){putchar(ch);ch=f8etc(fp);}

putchar('\n');fclose(fp);

}

25.近年來形成了軟件開發(fā)的多種模式,大致有3種類型:基于瀑布模型的結(jié)構(gòu)化生命周期方法、基于動態(tài)定義需求的【】方法和基于結(jié)構(gòu)的面向?qū)ο蟮能浖_發(fā)方法。

26.“printf("%d\n",strlen("\t\"\023\xAB\nC"));”語句的輸出結(jié)果是()。

27.以下程序運行后的輸出結(jié)果是______。

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

for(i=0;i<3;i++)printf("%d%d",i,fun(a));

printf("\n");

}

28.以下程序運行后的輸出結(jié)果是______。

voidswap(intx,inty)

{intt;

t=x;x=y;y=t;printf("%d%d",x,y);

}

main()

{inta=3,b=4;

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

}

29.以下程序通過函數(shù)指針p調(diào)用函數(shù)fun,請在填空欄內(nèi)寫出定義變量p的語句。

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

p=fun;p(&a,&b);

……

}

30.開發(fā)軟件所需要的高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象被人們稱之為【】。

31.—個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。

32.下列程序段的運行結(jié)果是______。

charstr[]="ABCD",*p=str;

printf("%d\n",*(p+3));

33.下面的程序是將從終端讀入的20個字符放入字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti;

chars[21],*p;

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

s[i]=getehar();

s[i]=【】;

p=【】;

while(*p)putchar(【】);

}

34.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。

35.表示“整數(shù)x的絕對值大于5”時值為“假”的C語言表達(dá)式是______。

36.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型的動態(tài)存儲單元______。

37.有以下程序:

intfa(intx){returnx*x;}

intfb(intx){returnx*x*x;}

intf(int(*f1)(),int(*f2)(),(intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2);printf("%d\n",i);}

程序運行后,輸出結(jié)果是【】。

38.算法的復(fù)雜度主要包括【】復(fù)雜度和空間復(fù)雜度。

39.設(shè)x和y均為int型變量,且x=1,y=2,則表達(dá)式double(1+x/y)的值為【】。

40.若有下列定義和語句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結(jié)果為______。

三、1.選擇題(20題)41.下列二維數(shù)組初始化語句中,正確且與語句floata[][3]={0,3,8,0,9};等價的是

A.floata[2][]={{0,3,8},{0,9}};

B.floata[][3]={0,3,8,0,9,0};

C.floata[][3]={{0,3},{8,0},{9,0}};

D.floata[2][]={{0,3,8},{0,9,0}};

42.軟件工程的出現(xiàn)是由于()。A.A.程序設(shè)計方法學(xué)的影響B(tài).軟件產(chǎn)業(yè)化的需要C.軟件危機(jī)的出現(xiàn)D.計算機(jī)的發(fā)展

43.以下程序的輸出結(jié)果是______。main(){char*s="121";intk=0,a=0,b=0;do{k++;if(k%2==0){a=a+s[k]-'\0';continue;}b=b+s[k]-'\0';a=a+s[k]-'\0';}while(s[k+1]);printf("k=%da=%db=%d\n",k,a,b);}

A.k=3a=98b=49

B.k=3a=99b=50

C.k=2a=99b=50

D.k=2a=98b=49

44.在計算機(jī)中,算法是指()。

A.查詢方法B.加工方法C.解題方案的準(zhǔn)確而完整的描述D.排序方法

45.有以下程序main(){union{unsignedintn;unsignedcharC;}ul;u1.C='A';printf("%c\n",u1.n);}執(zhí)行后輸出結(jié)果是

A.產(chǎn)生語法錯B.隨機(jī)值C.AD.65

46.有下列程序main(){intt,a=1,b=5,c=-2;while(a>b>c){t=a;a=b;b=t;c++;}printf("%d,%d,%d",a,b,c);}程序輸出的結(jié)果是()。

A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2

47.結(jié)構(gòu)化分析方法是面向()的自頂向下、逐步求精進(jìn)行需求分析的方法

A.對象B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)流D.目標(biāo)

48.若有說明inta[3][4];,則a數(shù)組元素的非法引用是()A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]

49.設(shè)變量均已正確定義,若要通過scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式正確的是(注:□代表空格字符)()。

A.10□X□20□Y<回車>

B.10□X20□Y<回車>

C.10□X<回車>

D.10X<回車>20□Y<回車>20Y<回車>

50.下列程序是用來判斷數(shù)組中特定元素的位置所在。如果輸入如下整數(shù):876675896101301401980431451777#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,45l,777},k;clrscr();fun(a,10,&k);printf("%d,%d\n",k,a[k]);}則輸出結(jié)果為

A.7,431B.6C.980D.6,980

51.以下選項中非法的表達(dá)式是()。

A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1

52.以下正確的說法是

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

B.return后邊的值不能為表達(dá)式

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

D.如果形參與實參類型不一致,以實參類型為準(zhǔn)

53.對于下述說明,不能使變量p->b的值增1的表達(dá)式是______。structexm{inta;intb;floatc}*p;

A.++p->bB.++(p++)->bC.p->b++D.(++p)->b++

54.有下列函數(shù):intfun(char*s){char*t=s;while(*t++);return(t-s);}該函數(shù)的功能是()。

A.比較兩個字符串的大小

B.計算s所指字符串占用內(nèi)存字節(jié)的個數(shù)

C.計算s所指字符串的長度

D.將s所指字符串復(fù)制到字符串t中

55.已有定義:inti,a[10],*p;則合法的賦值語句是()。

A.p=100;B.p=a[5];C.p=a[2]+2;D.p=a+2;

56.設(shè)有定義:int(*ptr)();則以下敘述中正確的是()

A.ptr是指向一維數(shù)組的指針變量

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int數(shù)據(jù)

D.prt是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針

57.在結(jié)構(gòu)化程序設(shè)計方法中,下面哪種內(nèi)聚性最弱?

A.邏輯內(nèi)聚B.時間內(nèi)聚C.偶然內(nèi)聚D.過程內(nèi)聚

58.設(shè)有以下語句inta=1,b=2,c;c=a^(b<<2);執(zhí)行后,c的值為______。A.6B.7C.8D.9

59.在數(shù)據(jù)庫的兩級映射中,從概念模式到內(nèi)模式的映射一般由______實現(xiàn)。

A.數(shù)據(jù)庫系統(tǒng)B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫管理員D.數(shù)據(jù)庫操作系統(tǒng)

60.對長度為n的線性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為()。

A.log2nB.n/2C.nD.n+1

四、選擇題(20題)61.若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是

A.’a’<=c<=’z’B.(c>=’a’)||(c<=’z’)

C.(’a’<=c)and(’z’>=c)D.(c>=’a’)&&(c<=’z’)

62.分布式數(shù)據(jù)庫系統(tǒng)不具有的特點是

A.?dāng)?shù)據(jù)的物理分布性和邏輯整體性B.位置透明性和復(fù)制透明性

C.事物管理的集中性D.?dāng)?shù)據(jù)冗余

63.以下是正確C語言實型常量的是()。

A..e—1B.e一1C.一1eD.1e一1

64.若有定義和語句:

int*(*pp),*P,a=20,b=10;

pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,**PP);

則輸出結(jié)果是()。A.A.20,10B.20,20C.10,20D.10,10

65.有以下程序

A.357B.753C.369D.751

66.若函數(shù)調(diào)用時的實參為變量時,以下關(guān)于函數(shù)形參和實參的敘述中正確的是()。

A.函數(shù)的形參和實參分別占用不同的存儲單元

B.形參只是形式上的存在,不占用具體存儲單元

C.同名的實參和形參占同一存儲單元

D.函數(shù)的實參和其對應(yīng)的形參共占同一存儲單元

67.下面不屬于軟件設(shè)計原則的是()。

A.抽象B.模塊化C.自底向上D.信息隱蔽

68.若有說明:inta[3][4]={0};,則下面正確的敘述是

A.只初始化了第一個元素,即a[0][0]可得到初值0

B.此初始化語句不正確

C.?dāng)?shù)組a中各元素都可得到初值,但其值不一定為0

D.?dāng)?shù)組a中每個元素均可得到初值0

69.有以下程序

#include<stdio.h>

#defineP24;

#defineS(x)P*x+x;

main()

{inta=2,b=2;

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

}

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

A.程序編譯運行時報錯,無法輸出B.54

C.96D.100

70.以下選項中與

71.

72.HTTP協(xié)議的消息有()兩種類型。

A.發(fā)送消息和接收消息B.請求消息和響應(yīng)消息C.消息頭和消息體D.實體消息和控制消息

73.

若有下列定義(設(shè)int類型變量占2個字節(jié)):

inti=8,j=9;

則下列語句:

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

輸出的結(jié)果是()。

A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9

74.

75.

76.C語言中的標(biāo)識符分為關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符,以下敘述正確的是()。

A.預(yù)定義標(biāo)識符(如庫函數(shù)中的函數(shù)名)可用做用戶標(biāo)識符,但失去原有含義

B.用戶標(biāo)識符可以由字母和數(shù)字任意順序組成

C.在標(biāo)識符中大寫字母和小寫字母被認(rèn)為是相同的字符

D.關(guān)鍵字可用做用戶標(biāo)識符,但失去原有含義

77.下列敘述中正確的是()。

A.為了建立一個關(guān)系,首先要構(gòu)造數(shù)據(jù)的邏輯關(guān)系

B.表示關(guān)系的二維表中各元組的每一個分量還可以分成若干數(shù)據(jù)項

C.一個關(guān)系的屬性名表稱為關(guān)系模式

D.一個關(guān)系可以包括多個二維表

78.有以下程序:

fun(inta[],intm,intn)

{inti;

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

a[i+1]=a[i]+3;

returna[i+1];

}

voidmain()

{

inti,a[6]={2,4,6,8,10,12};

fun(a,2,5);

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

printf("%d",a[i]);

}

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

A.24691315B.24691215C.249121518D.249121415

79.

有下列程序:

main

{intk=5,n=0;

while(k>0)

{switch(k)

{dcfault:break;

case1:n=n+k;

case2:

case3:n+=k;

}

k--;

}

printf("%d\n".n);

}

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

A.0B.4C.6D.7

80.以下結(jié)構(gòu)體類型說明和變量定義中正確的是()。

A.

B.

C.

D.

五、程序改錯題(1題)81.給定程序中,函數(shù)proc()的功能是:使數(shù)組中的元素的值增加10倍。修改其中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),其功能是:利用以下所示的簡單迭代方法求方程cos(x)-x=0的一個實根。

xn+1=COS(xn)

迭代步驟如下:

(1)取x1初始值為0.0;

(2)x0=x1,把?X1的值賦給x0;

(3)x1=cos(xO),求出一個新的x1;

(4)若x0-x1的絕對值小于0.000001,則執(zhí)行步驟

(5),否則執(zhí)行步驟(2);

(5)所求x1就是方程cos(x)-x=0的一個實根,作為函數(shù)值返回。

程序?qū)⑤敵鼋Y(jié)果root=0.739085。

注意:部分源程序給出如下。

請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。

試題程序:

參考答案

1.D

2.A

3.C

4.A當(dāng)數(shù)據(jù)類型是實數(shù)時,在存儲過程中,當(dāng)小數(shù)部分無限長時,會存在小數(shù)部分的截斷,會存在誤差,所以答案選擇A。

5.DC語言中,常量有整型常量、實型常量、字符常量和字符串常量等。整型常量和實型常量又稱為數(shù)值型常量。其中整型常量只能用數(shù)字表示,不帶小數(shù)點。實型常量必須用帶小數(shù)點的數(shù)表示,所以選項A錯誤,選項D正確;字符型常量是用單引號標(biāo)注的單個字符,字符串常量是用雙引號標(biāo)注的若干個字符,選項B、C錯誤。故本題答案為D選項。

6.By=(x=)071:x<0?-1:0)中有兩個三目運算符,因此按從右到在的

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論