2022年甘肅省平?jīng)鍪腥珖嬎銠C等級考試C語言程序設(shè)計_第1頁
2022年甘肅省平?jīng)鍪腥珖嬎銠C等級考試C語言程序設(shè)計_第2頁
2022年甘肅省平?jīng)鍪腥珖嬎銠C等級考試C語言程序設(shè)計_第3頁
2022年甘肅省平?jīng)鍪腥珖嬎銠C等級考試C語言程序設(shè)計_第4頁
2022年甘肅省平?jīng)鍪腥珖嬎銠C等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩107頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022年甘肅省平?jīng)鍪腥珖嬎銠C等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.執(zhí)行下列程序后,輸出的結(jié)果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/S(k+m):printf("%d",a);}A.1B.4C.9D.0

2.在長度為n的順序表的第i個位置上插入一個元素(1≤i≤n+1),元素的移動次數(shù)為:()。

A.n–i+1B.n–iC.iD.i–1

3.棧和隊列的共同點是()。

A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同特點

4.若有定義:“inta=4,b=5;floatx=3.4,y=2.1;”,則下列表達式的值為()。(float)(a+b)/2+(int)x%(int)y;

A.5.5B.55C.5.500000D.55.00000

5.在黑盒測試方法中,設(shè)計測試用例的主要根據(jù)是()。

A.程序外部功能B.程序內(nèi)部邏輯C.程序數(shù)據(jù)結(jié)構(gòu)D.程序流程圖

6.

7.鏈表不具備的特點是()

A.所需空間與其長度成正比B.不必事先估計存儲空間C.插入刪除不需要移動元素D.可隨機訪問任一節(jié)點

8.下列選項不符合良好程序設(shè)計風(fēng)格的是()。

A.源程序要文檔化B.數(shù)據(jù)說明的次序要規(guī)范化C.避免濫用goto語句D.模塊設(shè)計原則是高耦合、高內(nèi)聚

9.有以下程序:#include<stdio.h>main(){charx,a=‘A’,b=‘B’,c=‘C’,d=‘D’;x=(a<b)?a:b;x=(x>c)?c:x;x=(d>x)?x:d;printf(“%c\n”,x);}程序運行后的輸出結(jié)果是()。

A.DB.BC.CD.A

10.if語句的基本形式是:if(表達式)語句,以下關(guān)于“表達式”值的敘述中正確的是A.A.必須是邏輯值

B.必須是整數(shù)值

C.必須是正數(shù)

D.可以是任意合法的數(shù)值

11.對于長度為n的線性表,在最壞情況下,下列各種排序法所對應(yīng)的比較次數(shù)中正確的是(

A.冒泡排序為n/2B.冒泡排序為nC.快速排序為nD.快速排序為n(n-1)/2

12.若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,則對a數(shù)組元素不正確的引用是______。

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

13.對于棧操作數(shù)據(jù)的原則是()。

A.先進先出B.后進先出C.后進后出D.不分順序

14.下列關(guān)系模型中,能使經(jīng)運算后得到的新關(guān)系中屬性個數(shù)多于原來關(guān)系中屬性個數(shù)的是

A.選擇B.連接C.投影D.并

15.

16.以下程序輸出的結(jié)果是#include<stdio.h>#include<string.h>main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;for(k=1;k<3;k++)printf("%s\n",&w[k][k]);}

A.ABCDFGHKLB.ABCEFGUMC.EFGJKOD.FGHKL

17.檢查軟件產(chǎn)品是否符合需求定義的過程稱為______。

A.確認測試B.集成測試C.驗證測試D.驗收測試

18.順序查找法適合于存儲結(jié)構(gòu)為()的線性表。

A.散列存儲B.順序存儲或鏈式存儲C.壓縮存儲D.索引存儲

19.有三個關(guān)系R,S和T如下:

其中關(guān)系T由關(guān)系R和s通過某種操作得到,該操作為()。

A.選擇B.交C.投影D.并

20.將線性表中的結(jié)點信息組織成平衡的二叉樹,其優(yōu)點之一是總能保證任意檢索長度均為log2n量級(n為線性表中的結(jié)點數(shù)目)()

A.對B.錯

二、2.填空題(20題)21.下面的函數(shù)fun的功能是將形參x的值轉(zhuǎn)換成二進制數(shù),所得二進制數(shù)的每一位放在一維數(shù)組中返回,二進制的最低位放在下標為0的元素中,其他依次類推,請?zhí)羁铡?/p>

fun(intx,intb[])

{intk=0,r;

do{

r=x%【】;

b[k++]=r;

x/=【】;

}while(x);}

22.注釋一般分為序言性注釋和______注釋。

23.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進行測試。

24.數(shù)據(jù)模型按不同的應(yīng)用層次分為三種類型,它們是______數(shù)據(jù)模型、邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型。

25.判定表和判定樹是以圖文形式描述數(shù)據(jù)流圖的【】

26.下列循環(huán)的循環(huán)次數(shù)是______。

intk=2;

while(k=0)

printf["%d",k);

k--;

printf("\n");

27.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

28.fun函數(shù)的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大的數(shù),再求這N個最大值中的最小的那個數(shù)作為函數(shù)值返回。請?zhí)羁铡?/p>

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

{

introw,col,max,min;

for(row=0;row<N;row++

{

for(max=a[row][0],col=1;col<N;col++)

if(【】)max=a[row][col];

if(row==0)min=max;

elseif(【】)min=max;

}

returnmin;

}

29.以下函數(shù)用于求出一個2×4矩陣中的最大元素值。

max_value(arr)

intarr[][4];

{

inti,j,max;

max=arr[O][0];

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

for(j=0;【】;j++)

if(【】>max)max=【】;

return(max);

}

30.若變量n中的值為24,則prnt函數(shù)共輸出【】行。

voidprnt(intn,intaa[])

{inti;

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

{printf("%6d",aa[i]);

if!(i%5))printf("\n");

}

printf("\n");

}

31.在軟件開發(fā)中,結(jié)構(gòu)化方法包括結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計方法和結(jié)構(gòu)化程序設(shè)計方法。詳細設(shè)計階段所采用的是【】方法。

32.下面fun函數(shù)的功能是將形參x的值轉(zhuǎn)換成二進制數(shù),所得二進制數(shù)的每一位數(shù)放在數(shù)組中返回,二進制數(shù)的最低位放在下標為0的元素中,其他依此類推。請?zhí)羁铡?/p>

Fun(intx,intb[])

{intk=0,r;

do

{r=x%2;

()=r;

x/=2;

}while(x);

}

33.在先左后右的原貝嚇,根據(jù)訪問根結(jié)點的次序,二叉樹的遍歷可以分為三種:前序遍歷、【】遍歷和后序遍歷。

34.下列語句的輸出結(jié)果是【】。

chara=3;printf("%d,%o,%x,%u\n",a,a,a,a);

35.以下程序的定義語句中,x[1]的初值是【】,程序運行后輸出的內(nèi)容是【】。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,161},*p[4],i;

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

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");

}

36.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達式【】。

37.派生類對基類繼承控制訪問有三種。派生類可以定義其基類中不具備的【】。

38.已有定義如下:

structnode

{intdata;

structnode*next;

}*p;

以下語句調(diào)用malloc函數(shù),使指針p指向一個具有structnode類型的動態(tài)存儲空間。請?zhí)羁铡?/p>

p=(structnode*)malloc(【】);

39.下面程序的運行結(jié)果是______。

voidswap(int*a,int*B)

{

int*t;

t=a;a=b;b=t;

}

main()

{

intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

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

}

40.以下程序運行時若從鍵盤輸入:102030<回車>。輸出結(jié)果是【】。

#include<stdio.h>

main()

{

inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);

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

}

三、1.選擇題(20題)41.有如下程序main(){intx=1,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=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

42.按照“先進先出”組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

43.下列運算符中,不屬于關(guān)系運算符的是______。

A.+=B.!=C.<=D.==

44.利用fseek函數(shù)可實現(xiàn)的操作是()。

A.實現(xiàn)文件的順序讀寫B(tài).改變文件的位置指針C.實現(xiàn)文件的隨機讀寫D.以上答案均正確

45.下列程序的輸出結(jié)果是______。#include<stdio.h>main(){inti,j,k,a=3,b=2;i=(--a==b++)?--a;++b;j=a++;k=b;printf("i=%d,j=%d,k=%d\n",i,j,k);}

A.i=2,j=1,k=3B.i=1,j=1,k=2C.i=4,j=2,k=4D.i=1,j=1,k=3

46.在結(jié)構(gòu)化程序設(shè)計中,模塊劃分的原則是()。

A.各模塊應(yīng)包括盡量多的功能

B.各模塊的規(guī)模應(yīng)盡量大

C.各模塊之間的聯(lián)系應(yīng)盡量緊密

D.模塊內(nèi)具有高內(nèi)聚度,模塊間具有低耦合度

47.以下程序運行后,輸出結(jié)果是

#definePT5.5

#defineS(x)PT*x*x

#include<stdio.h>

main()

{inta=1,b=2;

printf("%4.1f\n",S(a+b));}

A.49.5B.9.5C.22D.45

48.定義int*swap()指的是______。

A.—個返回整型值的函數(shù)swap()

B.一個返回指向整型值指針的函swap()

C.一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值

D.以上說法均錯

49.下列程序執(zhí)行后的輸出結(jié)果是______。main(){intx='f';printf("%c\n",'A'+(x-'a'+l));}

A.GB.HC.ID.J

50.下列程序的輸出結(jié)果是()。#include<stdio.h>intfun(intx){inta;if(x==0‖x==1)return3;elsea=x-fun(x-2);returna;}voidmain(){printf("%d",fun(7));}

A.2B.8C.9D.5

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

A.125B.n/2C.nD.n+1

52.下列敘述中,不屬于測試的特征的是

A.測試的挑剔性B.完全測試的不可能性C.測試的可靠性D.測試的經(jīng)濟性

53.對于n個結(jié)點的單向鏈表(無表頭結(jié)點),需要指針單元的個數(shù)至少為______。

A.n-1B.nC.n+1D.2n

54.某一微機的地址總線為20位,其可訪問的最大空間地址為()

A.220

B.219

C.2(20+1)

D.2(20-1)

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

A.在模塊化程序設(shè)計中,一個模塊應(yīng)該盡量多的包括與其他模塊聯(lián)系的信息

B.在自頂向下、逐步細化的設(shè)計過程中,首先應(yīng)設(shè)計解決問題的第一個細節(jié)

C.在模塊化程序設(shè)計中,一個模塊內(nèi)部的控制結(jié)構(gòu)也要符合結(jié)構(gòu)化原則

D.在程序設(shè)計過程中,不能同時采用結(jié)構(gòu)化程序設(shè)計方法與模塊化程序設(shè)計方法

56.C語言中用于結(jié)構(gòu)化程序設(shè)計的三種基本結(jié)構(gòu)是A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

B.if、switch、break

C.for、while、do-while

D.if、for、continue

57.設(shè)有以下聲明語句structex{intx;floaty;charz;}example;則下面的敘述中不正確的是______。

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

B.example是結(jié)構(gòu)體類型名

C.x,y,z都是結(jié)構(gòu)體成員名

D.structex是結(jié)構(gòu)體類型

58.下列關(guān)于棧的描述中錯誤的是()

A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

59.有以下程序#include<stdio.h>sub1(chara,charB){charc;c=a;a=b;b=c;}sub2(char*a,charB){charc;c=*a;*a=b;b=c;}sub3(char*a,char*B){charc;c=*a;*a=*b;*b=c;}main(){cha,a,b;a='A';b='B';sub3(&a,&b)putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);putchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}程序運行后的輸出結(jié)果是()

A.BABBABB.ABBBBAC.BABABAD.BAABBA

60.以下有4組用戶標識符,其中合法的—組是______。

A.FOR-subCase

B.4dDOSize

C.f2_G3IFabc

D.WORDvoiddefine

四、選擇題(20題)61.有下列程序

voidfunc1(inti);

voidfunc2(inti);

charst[]="hello,friend!";

voidfunc1(inti)

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

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

}

voidfunc2(inti)

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

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

}

main()

{inti=0;func1(i);

printf("\n");

}

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

A.helloB.hel

C.hloD.hlm

62.下列說法不正確的是()。

A.調(diào)用函數(shù)時,實參可以是表達式

B.調(diào)用函數(shù)時,實參與形參可以共用內(nèi)存單元

C.調(diào)用函數(shù)時,將實參的值復(fù)制給形參,使實參變量和形參變量在數(shù)值上相等

D.調(diào)用函數(shù)時,實參與形參的類型必須一致

63.

64.在JavaScript語言中,擁有onsubmit事件的對象是()。

A.documentB.eventC.windowD.form.

65.軟件生命周期中花費時間最多的階段是

A.詳細設(shè)計B.軟件維護C.軟件編碼D.軟件測試

66.

67.

68.有以下程序執(zhí)行后的輸出結(jié)果是()。

A.1B.2C.4D.死循環(huán)

69.下列選項中不會引起二義性的宏定義是()。

A.#defineS(x)x*x

B.#defineS(x)(x)*(x)

C.#defineS(x)(x*x)

D.#defineS(x)((x)*(x))

70.關(guān)系數(shù)據(jù)庫管理系統(tǒng)所管理的關(guān)系是()。A.若干個二維表B.一個DBF文件C.一個DBC文件D.若干個DBC文件

71.有以下程序

main()

{

inta[]={1,2,3,4,5,6,7,8,9,0},*p;

for(p=a;p<a+10;p++)

printf("%d,",*p);

}

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

A.1,2,3,4,5,6,7,8,9,0,B.2,3,4,5,6,7,8,9,10,1,

C.0,1,2,3,4,5,6,7,8,9,D.1,1,1,1,1,1,1,1,1,1,

72.設(shè)有定義:charp[]={1,2,3),*q=p;,以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達式是()。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

73.for(i=1;i<=10;i=i+3)for(j=2;j<6;j++){··…·}的循環(huán)次數(shù)是()。

A.16B.18C.14D.12

74.

75.下砸結(jié)構(gòu)體的定義語句中,錯誤的是()。

76.下列選項中,均屬于通用軟件的是()。

A.WindowsXP、AutoCAD、PowerPoint

B.VisualFoxPro、Excel、SPSS

C.Word、Photoshop、Excel

D.C++、CorelDraw、Firefox2.0

77.

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

main

{intx=0.5;charz=a;

printf("%d\n",(x&1)&&(z<2));}

A.0B.1C.2D.3

78.以下程序的功能是計算:s=1+12+123+1234+12345

A.tB.t*10C.t*100D.t+10

79.有以下程序

#include<stdio.h>

#include<stdlib.h>

intfun(intt)

{int*p;

p=(int*)malloc(sizeof(int));

*p=t;return*p;

}

main()

{inta;

a=fun(8);

printf("%d\n",a+fun(10));

}

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

A.0B.10

C.18D.出錯

80.下列定義變量的語句中錯誤的是()。

A.intjnt;B.doubleint_;C.charFor;D.floatUS$;

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是根據(jù)整型形參n,計算如下公式的值:

Y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn)

例如,n中的值為l0,則應(yīng)輸出0.817962。

請修改程序中的錯誤,使它能得到正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdiOh>

doubleproc(intn)

{

doubley=1.0;

//****found****

intJ=1;.

inti;

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

{

j=-l*j;//****found****

y+=1/(i*i);

}

return(y);

}

voidmain

{

intn=10:

system("CLS"):

printf("\nTheresultis%1f\n",proc(n));

}

六、程序設(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本題主要考查帶參數(shù)的宏定義,過程如下:由于定義為define(x)x*x沒有括號優(yōu)先級,所以:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。

2.A

3.C解析:棧和隊列都是操作受限制的線性表,只允許在端點插入和刪除。不同點是:棧只允許在表的一端進行插入和刪除操作,而隊列允許在表的一端進行插入操作,而在另一端進行刪除操作。

4.C在計算(float)(a4-b)/2時,由于通過強制類型轉(zhuǎn)換將(a+b)轉(zhuǎn)換成了float型,所以應(yīng)先將2轉(zhuǎn)換成float型,再進行計算,得4.500000。在計算(int)x%(int)y時,先將x和y通過強制類型轉(zhuǎn)換成int型,再進行求余運算,結(jié)果為1。又因為4.500000是float型,所以將1和它相加時,先將1換成float型,再計算,得到5.500000。類型轉(zhuǎn)換的一般規(guī)則是:低級類型從高級類型,并進行相應(yīng)的轉(zhuǎn)換。數(shù)據(jù)類型的級別由低到高的排序表示為:char→int→unsigned→log→float→double。

5.A【答案】:A

【知識點】:黑盒測試

【解析】:黑盒測試也稱功能測試或數(shù)據(jù)驅(qū)動測試,它完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特征,只著眼于程序的外部結(jié)構(gòu),主要用來檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用。故選A。

6.A

7.D

8.D在程序設(shè)計中,對于軟件設(shè)計中的模塊設(shè)計要保證高內(nèi)聚和低耦合,源程序要有文檔說明,同時對程序中數(shù)據(jù)的說明要規(guī)范化。而goto語句破壞程序的結(jié)構(gòu),要盡量避免使用。所以選項D不正確。

9.D題干中,字符變量a、b、c、d都是大寫字母字符。C語言中,大寫字母的ASCII值是按照字母順序連續(xù)遞增的,所以a小于b,b小于c,c小于d。則表達式“x=(a<b)?a:b”等價于“x=a”;“x=(x>c)?c:x”等價于“x=(a>c)?c:a”,等價于“x=a”;“x=(d>x)?x:d”等價于“x=(d>a)?a:d”,等價于“x=a”;所以程序輸出x的值為A。故本題答案為D選項。

10.D

11.D在最壞情況下,冒泡排序和快速排序的比較次數(shù)都是n(n一1)/2。【知識拓展】所謂冒泡排序,就是將相鄰的兩個數(shù)據(jù)比較,如前面的數(shù)據(jù)大于后面的,則位置互換。這樣不停地比較、互換,其實就是把大的數(shù)往后排,小的數(shù)往前排(就像冒泡一樣冒出來了)。

12.D解析:通常,引用一個數(shù)組元素可以用下標法,如a[P-a]形式,或指針法,如*(&a[i])的形式。本題中a[9]=9,a[10]顯然超出了數(shù)組范圍,注意,數(shù)組的下標是從0開始的。

13.B

14.B解析:本題主要考查關(guān)系模型中幾種運算的特征。經(jīng)過選擇或投影運算得到的新關(guān)系的屬性個數(shù)最多不會超過原關(guān)系中的屬性個數(shù)。經(jīng)過連接運算得到的新關(guān)系最多不少于原關(guān)系中屬性的個數(shù)。故選項B正確。

15.C

16.D當k=1時,引用的是二維數(shù)組元素w[1][1],值為字符串“FGH”;當k=2時,引用的是數(shù)組元素w[2][2],即字符串“KL”;當k=3時,結(jié)束程序的執(zhí)行。注意:字符串數(shù)組的定義。

17.A本題主要考查軟件測試的基本知識。軟件測試的步驟可分為單元測試(模塊測試)、集成測試、確認測試和系統(tǒng)測試。

(1)單元測試是針對每個模塊進行的測試,它可從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計測試用例,多個模塊可以平行、對立地測試。單元測試主要用于發(fā)現(xiàn)詳細設(shè)計和編程時犯下的錯誤。單元測試多采用白盒測試,輔之以黑盒測試。

(2)集成測試是在單元測試的基礎(chǔ)上,根據(jù)模塊結(jié)構(gòu)圖將各個模塊連接起來,必須精心計劃,應(yīng)提交集成測試計劃、集成測試規(guī)格說明和集成測試分析報告。主要目標是發(fā)現(xiàn)與接口有關(guān)的問題。集成測試可以發(fā)現(xiàn)概要設(shè)計時犯的錯誤。

(3)確認測試用于驗證軟件的功能和性能及其他特性是否與用戶的要求一致。確認測試主要用于發(fā)現(xiàn)需求分析時犯下的錯誤,一般使用黑盒法測試,以表明軟件符合需求說明書的要求,應(yīng)該仔細設(shè)計測試用例和測試過程。確認測試必須有用戶參加,或以用戶為主,用戶應(yīng)參與設(shè)計測試用例,通常情況下,主要使用生產(chǎn)中的實際數(shù)據(jù)進行測試,測試數(shù)據(jù)通過用戶接口輸入。

(4)系統(tǒng)測試是將已經(jīng)通過確認測試的軟件,作為整個計算機系統(tǒng)的元素與計算機硬件、外設(shè)和網(wǎng)絡(luò)等其他因素結(jié)合在一起,進行一系列的組裝測試和確認測試。系統(tǒng)測試的目的是通過與系統(tǒng)的需求定義做比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合的地方。系統(tǒng)測試可以發(fā)現(xiàn)問題定義時犯下的錯誤。

18.B

19.D\n兩個相同結(jié)構(gòu)關(guān)系的并是由屬于這兩個關(guān)系的元組組成的集合。

\n

20.A

21.222\r\n2解析:深刻理解+進制轉(zhuǎn)化為二進制的方法,即取余法;數(shù)組名作為實參,在函數(shù)內(nèi)部可以直接修改調(diào)用函數(shù)中定義的數(shù)組的值。注意:掌握兩個數(shù)據(jù)進行交換的算法原理。

22.功能性功能性解析:注釋一般分為序言性注釋和功能性注釋。序言性注釋通常位于每個程序的開頭部分,給出程序的整體說明;功能性注釋一般嵌在源程序體之中,主要描述其后的語句或程序做什么,

23.結(jié)構(gòu)結(jié)構(gòu)解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結(jié)構(gòu)進行測試。

24.概念概念

25.判定樹、判定表判定樹、判定表

26.00解析:解答本題需要注意表達式“k=0”,它是賦值表達式而不是關(guān)系表達式,不論k為何值,表達式k=0總會使k為0,所以不能進入循環(huán)。

27.10410\r\n4解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和。每個成員分別占有其自己的內(nèi)存單元。int占2個字節(jié),float占4個字節(jié),共用體變量所占的內(nèi)存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。

28.a[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)max<min或min>max或max<=min或min>=maxa[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)\r\nmax<min或min>max或max<=min或min>=max解析:本題有兩層for循環(huán),主函數(shù)中定義了整型變量row、col、max和min,其中row用來存放外循環(huán)中的循環(huán)次數(shù),col用來存放內(nèi)循環(huán)中的次數(shù),max記錄每行中的最大值,min記錄所有行中最大值中的最小值。在內(nèi)循環(huán)中,首先給max賦初值為每行的第0列元素值,然后從第一列開始依次與max進行比較。如果大于max則將其值賦給max,當每一行循環(huán)結(jié)束,max記錄了每一行的最大值。所以第一個空應(yīng)該填a[row][col]>max或a[row][col]>=max。退出內(nèi)循環(huán),在第一次退出內(nèi)循環(huán)時,將min賦初值為第0行的max,然后在每次退出內(nèi)循環(huán)時,將min和每行的max比較,如果大于max,則將max值賦min,所以第二個空應(yīng)該填max>min或mm>max,當退出外循環(huán)時,min為所有行中的最大值的最小值。

29.j<4arr[i][j]arr[i][j]j<4\r\narr[i][j]\r\narr[i][j]解析:2*4矩陣實際上就是一個二維數(shù)組,結(jié)合本題應(yīng)為arr[2][4],所以在第一個循環(huán)中應(yīng)當填寫“4”;第二個橫線處是要判斷當前的數(shù)組元素值是否大于max,所以應(yīng)填寫arr[i][j];第三個橫線處是要將當前大于max的數(shù)組元素的值賦給變量max,所以應(yīng)當填寫“arr[i][j]”。

30.55解析:本題的關(guān)鍵在于if(!(i%5))printf('\\n),這句,即如果i可被5整除時,則換行。i值為24,可以被5整除4次,并余4,因此,prnt函數(shù)共輸出5行,最后一行有4個數(shù)。

31.結(jié)構(gòu)化設(shè)計結(jié)構(gòu)化設(shè)計解析:在軟件開發(fā)中,結(jié)構(gòu)化方法包括結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計方法和結(jié)構(gòu)化程序設(shè)計方法。詳細設(shè)計階段所采用的是結(jié)構(gòu)化設(shè)計方法。

32.b[k++]b[k++]解析:本題的考查點是do-while語句。形參x默認為十進制,要想將一個十進制的數(shù)轉(zhuǎn)換成二進制,可以使用整除求余法,題中的程序段也表明了將使用這種方法,將一個十進制的數(shù)轉(zhuǎn)換成二進制要用這個十進制數(shù)不斷的整除2,將每次的余數(shù)記錄下來,直至無法再除,此時,整除得到的第一個元素即為二進制數(shù)的最低位,其余依次類推,所以在程序段中的橫線處,應(yīng)當填寫“b[k++]”。

33.中序中序解析:在先左后右的原則下,根據(jù)訪問根結(jié)點的次序,二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷。前療遍歷是指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹。中序遍歷指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹。后序遍歷指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷右子樹,然后訪問根結(jié)點,最后遍歷左子樹;并且遍歷左、右子樹時,仍然先遍歷右子樹,然后訪問根結(jié)點,最后遍歷左子樹。

34.31371f3131,37,1f,31解析:此題考查了printf函數(shù)的格式字符,題中d是以十進制形式輸出,o是以八進制形式輸出,x是以十六進制形式輸出,u以不帶符號的十進制數(shù)輸出。

35.224682\r\n2468解析:在主函數(shù)中根據(jù)整型數(shù)組x[]的定義可知,x[1]的初值等于2。在for循環(huán)語句中,當i=0時,p[0]=&x[1],p[0][0]=2;當i=1時,p[1==&x[3],p[1][0]=4;當i=2時,p[2]=&x[5],p[2][0]=6;當i=3時,p[3]=&x[7],p[3][0]=8,所以程序輸出的結(jié)果為2、4、6、8。

36.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數(shù)可以用變量與2取模,判斷結(jié)果是為1或下為0。本題具體做法如下:Y%2=1或Y%2!=0。

37.數(shù)據(jù)和操作數(shù)據(jù)和操作

38.sizeof(structnode)或4sizeof(structnode)或4解析:malloc(sizeof(struetnode))的作用是開辟一個長度為sizeof(struetnode)的內(nèi)存區(qū)。(structnode*)的作用是使malloc返回的指針轉(zhuǎn)換為指向structnode類型數(shù)據(jù)的指針。

39.3535解析:在主函數(shù)中通過定義和賦初值使p和q分別指向了x和y,執(zhí)行函數(shù)調(diào)用“swap(p,q)”,把p和q中的地址值傳給了形參指針變量a和b,a和b分別指向7實參x和y。在函數(shù)swap()中交換了指針變量a和b的值,并沒有交換a和b指向的實參的值,所以函數(shù)調(diào)用返回后x和y依舊是原來的值。

40.1030010300解析:本題的scanf()函數(shù)要求用戶輸入三個十進制整數(shù),但只接受第一和第三個到函數(shù)的第二和第三個參數(shù)所指的內(nèi)存地址中。所以本題的輸出為:10300。

41.A解析:在這個switch語句中,因為x的值為1,所以執(zhí)行case1:后面的a++,這樣a=1。但又由于其下沒有break語句,所以其后面的語句“a++;b++”也將被執(zhí)行,這樣一來,a=2,b=1。

42.A隊列是一種特殊的線性表,只允許在表的一端插八元素,在表的另一端刪除元素,插入元素的一端叫“隊尾”,刪除元素的一端叫“隊頭”。先插入的元素先被刪除,是按“先進先出”的原則組織數(shù)據(jù)的。

【知識拓展】“隊列”和“?!倍际且环N特殊的線性表。之所以稱之為“隊列”,其形式如“排隊”。要講究“先來后到”,先進先出,后進后出。

43.A解析:+=是算術(shù)賦值運算符。

44.D解析:改變文件位置指針函數(shù)fseek()的功能:①改變文件的位置指針;②輔助實現(xiàn)文件的順序讀寫;③輔助實現(xiàn)文件的隨機讀寫。

45.D

46.D解析:本題考查軟件工程中軟件設(shè)計的概念和原理。人們在開發(fā)計算機軟件的長期實踐中積累了豐富的經(jīng)驗,總結(jié)這些經(jīng)驗得到如下的啟發(fā)式規(guī)則:

(1)改進軟件結(jié)構(gòu),提高模塊獨立性;通過模塊的分解或合并,力求降低耦合提高內(nèi)聚。低耦合也就是降低不同模塊間相互依賴的緊密程度,高內(nèi)聚是提高一個模塊內(nèi)各元素彼此結(jié)合的緊密程度。

(2)模塊的規(guī)模應(yīng)適中。一個模塊的規(guī)模不應(yīng)過大,過大的模塊往往是由于分解不夠充分:過小的模塊開銷大于有益操作,而且模塊過多將使系統(tǒng)接口復(fù)雜。因此過小的模塊有時不值得單獨存在。

(3)模塊的功能應(yīng)該可以預(yù)測,但也要防止模塊功能過分局限。如果模塊包含的功能太多,則不能體現(xiàn)模塊化設(shè)計的特點:如果模塊的功能過分的局限,使用范圍就過分狹窄。

經(jīng)過上述分析,本題的正確答案是選項D。

47.A解析:考查宏替換的使用。宏替換用'#define宏名宏體'的形式來定義。在進行編譯預(yù)處理時,將把程序中宏定義之后的所有宏名用宏體替換。宏雖然可以帶參數(shù),但宏替換過程中不像函數(shù)那樣要進行參數(shù)值的計算、傳遞及結(jié)果返回等操作;宏替換只是簡單的字符替換,不進行計算,因而本題中的S(a+b)進行宏替換后為PT*1+2*1+2=5.5*1+2*1+2=9.5。

48.B解析:—個函數(shù)可以帶回—個整型值、字符值、實型值等,但也可以帶回指針型數(shù)據(jù),即地址。本題的定義中,包括括號和*號,由于()優(yōu)先級高于*。故它是—個返回整型指針的函數(shù)。

49.A

50.A解析:本題考查函數(shù)的遞歸調(diào)用。

在函數(shù)遞歸調(diào)用時,fun(7):a=7-fun(5)→fun(5):a=5-fun(3)→fun3:a=3-fun(1)→fun(1):a=3,反推回去fun(3):a=3-3=0→fun(5):a=5-0=5→fun(7):a=7-5=2,最后的計算結(jié)果為2。

51.CC?!窘馕觥繉€性表進行順序查找時,從表中的第一個元素開始,將給定的值與表中逐個元素的關(guān)鍵字進行比較,直到兩者相符,查找到所要找的元素為止。在最壞情況下,要查找的元素是表的最后一個元素或查找失敗,這兩種情況都需要將這個元素與表中的所有元素進行比較,因此比較次數(shù)為n。

52.C解析:軟件測試的目標是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程序中的錯誤,給出程序可靠性的鑒定。它有3個方面的重要特征,即測試的挑剔性、完全測試的不可能性及測試的經(jīng)濟性。其中沒有測試的可靠性這一說法。注意:軟件測試與軟件調(diào)試的概念,以及相應(yīng)的方法。

53.C解析:在n個結(jié)點的單向鏈表(無表頭結(jié)點)中,每個結(jié)點都有一個指針單元(即指針域),加上頭指針,至少需要n+1個指針單元。

54.A

55.CC?!窘馕觥吭谀K化程序設(shè)計中,模塊之間的聯(lián)系可以通過程序的控制結(jié)構(gòu)來實現(xiàn),在自頂向下、逐步細化的設(shè)計過程中,首先要考慮全局目標,而不是細節(jié)。在程序設(shè)計中模塊化和結(jié)構(gòu)化可以同時使用,一個模塊的內(nèi)部結(jié)構(gòu)也要符合結(jié)構(gòu)化設(shè)計原則。

56.A解析:結(jié)構(gòu)化程序由3種基本結(jié)構(gòu)組成,即順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)(包括for語句、while語句及do…\u3000while語句)和選擇結(jié)構(gòu)(包括if語句和switch語句)。

57.B解析:example是結(jié)構(gòu)體變量名。

58.B解析:在棧中,允許插入與刪除的一端稱為棧頂,不允許插入與刪除的另一端稱為棧底。棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素。即棧是按照先進后出(FILO,F(xiàn)irstInLastOut)或后進先出(LIFO,LastInFirstOut)的原則組織數(shù)據(jù)的,因此,棧也被稱為先進后出表或后進先出表。由此可以看出,棧具有記憶作用。答案B錯在帶鏈的棧的結(jié)點存儲順序與其邏輯順序是可以不一致的。

59.A

60.C解析:C語言的標識符的定義為:以字母或下劃線開頭的由字母、數(shù)字字符、下劃線組成的字符串。而且標識符不能與關(guān)鍵字相同。

61.C根據(jù)變量作用域與其定義語句在程序中出現(xiàn)位置之間的關(guān)系,可把變量分為局部變量和全局變量兩種。其中,在函數(shù)外部定義的變量叫做全局變量,又稱為外部變量;在函數(shù)體內(nèi)定義的變量是局部變量,又稱為內(nèi)部變量。全局變量的作用域是整個程序,而局部變量的作用域是定義它的函數(shù)或者程序段。

在本題中,程序首先聲明兩個無返回值函數(shù)func1和func2,然后定義一個全局數(shù)組st。做這類除主函數(shù)外,有其他函數(shù)的試題時,首先需要分析其他函數(shù)來得知函數(shù)的作用,然后再看主函數(shù)。

func1函數(shù)帶有一個整型變量的形參,在函數(shù)體中,首先輸出以形參作為下標的數(shù)組元素值,然后執(zhí)行if條件判斷語句,其條件為形參變量i<3。如果結(jié)果為真,則將變量i加2后保存,然后調(diào)用func2函數(shù);如果條件結(jié)果為假,則結(jié)束該函數(shù)。

從程序中不難看出,func2函數(shù)與func1函數(shù)基本類似,只是最后它對函數(shù)func1進行調(diào)用,與前者不同,兩個函數(shù)是互相調(diào)用的。

在主函數(shù)中定義一個變量i并賦值為0,然后調(diào)用函數(shù)func1,根據(jù)我們對函數(shù)func1的分析可知,輸出st[0]即字符‘h’,而此時if語句的結(jié)果為真,執(zhí)行i加2并調(diào)用func2函數(shù)操作。此時變量i的值為2,因此,輸出st[2]即字符‘l’,此時函數(shù)func2中的if條件語句結(jié)果為真,同樣執(zhí)行i加2,并調(diào)用func1函數(shù)操作,然后通過func1函數(shù)輸出st[4]即字符‘o’,此時由于變量i的值等于4,是大于3的,函數(shù)結(jié)束。程序運行到出口,最后輸出換行。因此,本程序最終的輸出結(jié)果是hlo。

62.B

\n本題考查函數(shù)調(diào)用的基本概念。調(diào)用函數(shù)時,實參的形式可以是具體的數(shù)值,也可以是表達式。實參將數(shù)值或表達式的值傳遞給形參,因而兩者的類型必須保持一致;形參在運算過程中會發(fā)生改變,但不一定會影響到實參值,所以可知兩者不共用內(nèi)存單元。

\n

63.D

64.D

65.B軟件生命周期被劃分為許多階段。其中,詳細設(shè)計階段的根本任務(wù)是確定每個模塊的內(nèi)部特征,即確定每個模塊內(nèi)部的執(zhí)行過程,這個過程一般用時并不需要很多;軟件編碼的根本任務(wù)是根據(jù)設(shè)計的結(jié)果完成代碼的編寫工作,這個過程一般用時也不需很多;軟件測試是對軟件規(guī)格說明、軟件設(shè)計和編碼的最后復(fù)審,目的是在軟件產(chǎn)品交付前盡可能多地發(fā)現(xiàn)軟件中的錯誤和問題,費時相對也不多;軟件維護是指在軟件交付后,為了改正錯誤或滿足用戶新的需要而修改軟件的過程,這個過程是軟件生命周期的最后一個階段,是持續(xù)時間最長的一個階段,費時最多。

66.C

67.D

68.A判斷循環(huán)條件一k,k值為4,條件為真,執(zhí)行輸出語句,其中k一=3執(zhí)行后,k為1,即輸出為1,然后判斷循環(huán)條件一k,值為0,為假,循環(huán)結(jié)束。答案選擇A)。

69.D本題考查參數(shù)的宏替換。為避免二義性有些參數(shù)表達式必須加括號,否則在實參表達式替換時,會出現(xiàn)錯誤。例如x為(m+n)時替換A:m+n*m+n,所以選項D最符合條件。

70.A解析:VisualFoxPro就是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),一個“表”就是一個關(guān)系,一個關(guān)系就是一個二維表。關(guān)系數(shù)據(jù)庫管理系統(tǒng)可管理若干個二維表。

71.A在本題中,程序首先定義了一個一維數(shù)組a,并賦了初值,數(shù)組a中元素的個數(shù)為10個,另外,程序定義了一個同類型的指針變量p。然后用一個for循環(huán)用指針變量p對數(shù)組進行操作。在循環(huán)開始前,將指針變量指向數(shù)組的開始位置,即指向數(shù)組的第一個元素。

第一次循環(huán)時,指針變量p指向的是數(shù)組第一個元素,輸出該元素應(yīng)該為1;然后指針變量自加1,即將指針變量后移一位,使其指向數(shù)組的第二個元素,開始第二次循環(huán),此時,指針變量指向數(shù)組第二個元素,輸出該元素為2,然后指針變量自加1。同樣,利用指針變量p可以輸出數(shù)組中后面的元素,直到輸出最后一個元素。因此,最后的輸出結(jié)果是1,2,3,4,5,6,7,8,9,0,。

72.A選項A計算的是p口字符數(shù)組首地址所占的內(nèi)存字節(jié)數(shù)。選項8、C和D都能計算出一個字符型數(shù)據(jù)所占的字節(jié)數(shù)。

73.A

74.D

75.AA)選項structord(intx;inty;intz;}structorda;錯誤,不能在定義結(jié)構(gòu)體的同時,又用結(jié)構(gòu)體類型名定義變量,應(yīng)該寫成B)選項或者D)選項的格式。

76.C軟件可以分為系統(tǒng)軟件和應(yīng)用軟件兩類,應(yīng)用軟件又可以分為針對具體應(yīng)用問題而專門開發(fā)的定制應(yīng)用軟件和在許多行業(yè)和部門中可以廣泛使用的通用應(yīng)用軟件。

77.B

\n(x&1)&&(z<2)=(0.5&1)&&(a<z)=1&&1=1,故選擇B選項。

\n

78.B1、12、123、1234、12345可以寫成l=0*10+1、12=1*10+2、123=12*10+3、1234=123*10+4、12345=1234*10+5,按照這種規(guī)律后一項可以等于前一項乘以10再加上循環(huán)變量。這屬于循環(huán)里面比較難的題目,需要考生找出其數(shù)據(jù)的內(nèi)在規(guī)律,并轉(zhuǎn)化為計算機語言,基本上都是累加和累乘兩種。

79.C本題考查函數(shù)的調(diào)用。題目給出的程序可以分為兩個部分,一個是函數(shù)fun,另一個是主函數(shù)main。fun函數(shù)的功能是輸入一個整型變量t,設(shè)置一個指向該整型變量的指針p,并將該指針所指向的值返回給main函數(shù)。main函數(shù)中兩次調(diào)用了fun函數(shù),第一次變量t的值為8,第二次變量t的值為10,第一次返回值8,使得a=8,第二次返回值10,使得a+fun(10)=18。

80.DC語言規(guī)定,變量命名必須符合標識符的命名規(guī)則。D選項中包含了非法字符“$”,所以錯誤。標識符由字母、數(shù)字或下劃線組成,且第一個字符必須是大小寫英文字母或者下劃線,而不能是數(shù)字。大寫字符與小寫字符被認為是兩個不同的字符,所以For不是關(guān)鍵字for。

81.(1)錯誤:intj=1;正確:doublej=1.0;

\n(2)錯誤:y+=1/(i*i);正確:y+=j/(i*i);

\n【解析】由函數(shù)proc可知,變量j的作用是控制每一項符號的變化,并且作為運算的分子,應(yīng)改為double型變量。因此,“intj=1;”應(yīng)改為“doublej=1.0;”。變量y中存放多項式的值,多項式中的每一項符號由變量j決定。因此,“y+=1/(i*i);”應(yīng)改為“y+=j/(i*i);”。

\n

82.

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

2022年甘肅省平?jīng)鍪腥珖嬎銠C等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.執(zhí)行下列程序后,輸出的結(jié)果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/S(k+m):printf("%d",a);}A.1B.4C.9D.0

2.在長度為n的順序表的第i個位置上插入一個元素(1≤i≤n+1),元素的移動次數(shù)為:()。

A.n–i+1B.n–iC.iD.i–1

3.棧和隊列的共同點是()。

A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同特點

4.若有定義:“inta=4,b=5;floatx=3.4,y=2.1;”,則下列表達式的值為()。(float)(a+b)/2+(int)x%(int)y;

A.5.5B.55C.5.500000D.55.00000

5.在黑盒測試方法中,設(shè)計測試用例的主要根據(jù)是()。

A.程序外部功能B.程序內(nèi)部邏輯C.程序數(shù)據(jù)結(jié)構(gòu)D.程序流程圖

6.

7.鏈表不具備的特點是()

A.所需空間與其長度成正比B.不必事先估計存儲空間C.插入刪除不需要移動元素D.可隨機訪問任一節(jié)點

8.下列選項不符合良好程序設(shè)計風(fēng)格的是()。

A.源程序要文檔化B.數(shù)據(jù)說明的次序要規(guī)范化C.避免濫用goto語句D.模塊設(shè)計原則是高耦合、高內(nèi)聚

9.有以下程序:#include<stdio.h>main(){charx,a=‘A’,b=‘B’,c=‘C’,d=‘D’;x=(a<b)?a:b;x=(x>c)?c:x;x=(d>x)?x:d;printf(“%c\n”,x);}程序運行后的輸出結(jié)果是()。

A.DB.BC.CD.A

10.if語句的基本形式是:if(表達式)語句,以下關(guān)于“表達式”值的敘述中正確的是A.A.必須是邏輯值

B.必須是整數(shù)值

C.必須是正數(shù)

D.可以是任意合法的數(shù)值

11.對于長度為n的線性表,在最壞情況下,下列各種排序法所對應(yīng)的比較次數(shù)中正確的是(

A.冒泡排序為n/2B.冒泡排序為nC.快速排序為nD.快速排序為n(n-1)/2

12.若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,則對a數(shù)組元素不正確的引用是______。

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

13.對于棧操作數(shù)據(jù)的原則是()。

A.先進先出B.后進先出C.后進后出D.不分順序

14.下列關(guān)系模型中,能使經(jīng)運算后得到的新關(guān)系中屬性個數(shù)多于原來關(guān)系中屬性個數(shù)的是

A.選擇B.連接C.投影D.并

15.

16.以下程序輸出的結(jié)果是#include<stdio.h>#include<string.h>main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;for(k=1;k<3;k++)printf("%s\n",&w[k][k]);}

A.ABCDFGHKLB.ABCEFGUMC.EFGJKOD.FGHKL

17.檢查軟件產(chǎn)品是否符合需求定義的過程稱為______。

A.確認測試B.集成測試C.驗證測試D.驗收測試

18.順序查找法適合于存儲結(jié)構(gòu)為()的線性表。

A.散列存儲B.順序存儲或鏈式存儲C.壓縮存儲D.索引存儲

19.有三個關(guān)系R,S和T如下:

其中關(guān)系T由關(guān)系R和s通過某種操作得到,該操作為()。

A.選擇B.交C.投影D.并

20.將線性表中的結(jié)點信息組織成平衡的二叉樹,其優(yōu)點之一是總能保證任意檢索長度均為log2n量級(n為線性表中的結(jié)點數(shù)目)()

A.對B.錯

二、2.填空題(20題)21.下面的函數(shù)fun的功能是將形參x的值轉(zhuǎn)換成二進制數(shù),所得二進制數(shù)的每一位放在一維數(shù)組中返回,二進制的最低位放在下標為0的元素中,其他依次類推,請?zhí)羁铡?/p>

fun(intx,intb[])

{intk=0,r;

do{

r=x%【】;

b[k++]=r;

x/=【】;

}while(x);}

22.注釋一般分為序言性注釋和______注釋。

23.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進行測試。

24.數(shù)據(jù)模型按不同的應(yīng)用層次分為三種類型,它們是______數(shù)據(jù)模型、邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型。

25.判定表和判定樹是以圖文形式描述數(shù)據(jù)流圖的【】

26.下列循環(huán)的循環(huán)次數(shù)是______。

intk=2;

while(k=0)

printf["%d",k);

k--;

printf("\n");

27.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

28.fun函數(shù)的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大的數(shù),再求這N個最大值中的最小的那個數(shù)作為函數(shù)值返回。請?zhí)羁铡?/p>

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

{

introw,col,max,min;

for(row=0;row<N;row++

{

for(max=a[row][0],col=1;col<N;col++)

if(【】)max=a[row][col];

if(row==0)min=max;

elseif(【】)min=max;

}

returnmin;

}

29.以下函數(shù)用于求出一個2×4矩陣中的最大元素值。

max_value(arr)

intarr[][4];

{

inti,j,max;

max=arr[O][0];

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

for(j=0;【】;j++)

if(【】>max)max=【】;

return(max);

}

30.若變量n中的值為24,則prnt函數(shù)共輸出【】行。

voidprnt(intn,intaa[])

{inti;

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

{printf("%6d",aa[i]);

if!(i%5))printf("\n");

}

printf("\n");

}

31.在軟件開發(fā)中,結(jié)構(gòu)化方法包括結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計方法和結(jié)構(gòu)化程序設(shè)計方法。詳細設(shè)計階段所采用的是【】方法。

32.下面fun函數(shù)的功能是將形參x的值轉(zhuǎn)換成二進制數(shù),所得二進制數(shù)的每一位數(shù)放在數(shù)組中返回,二進制數(shù)的最低位放在下標為0的元素中,其他依此類推。請?zhí)羁铡?/p>

Fun(intx,intb[])

{intk=0,r;

do

{r=x%2;

()=r;

x/=2;

}while(x);

}

33.在先左后右的原貝嚇,根據(jù)訪問根結(jié)點的次序,二叉樹的遍歷可以分為三種:前序遍歷、【】遍歷和后序遍歷。

34.下列語句的輸出結(jié)果是【】。

chara=3;printf("%d,%o,%x,%u\n",a,a,a,a);

35.以下程序的定義語句中,x[1]的初值是【】,程序運行后輸出的內(nèi)容是【】。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,161},*p[4],i;

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

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");

}

36.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達式【】。

37.派生類對基類繼承控制訪問有三種。派生類可以定義其基類中不具備的【】。

38.已有定義如下:

structnode

{intdata;

structnode*next;

}*p;

以下語句調(diào)用malloc函數(shù),使指針p指向一個具有structnode類型的動態(tài)存儲空間。請?zhí)羁铡?/p>

p=(structnode*)malloc(【】);

39.下面程序的運行結(jié)果是______。

voidswap(int*a,int*B)

{

int*t;

t=a;a=b;b=t;

}

main()

{

intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

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

}

40.以下程序運行時若從鍵盤輸入:102030<回車>。輸出結(jié)果是【】。

#include<stdio.h>

main()

{

inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);

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

}

三、1.選擇題(20題)41.有如下程序main(){intx=1,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=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

42.按照“先進先出”組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

43.下列運算符中,不屬于關(guān)系運算符的是______。

A.+=B.!=C.<=D.==

44.利用fseek函數(shù)可實現(xiàn)的操作是()。

A.實現(xiàn)文件的順序讀寫B(tài).改變文件的位置指針C.實現(xiàn)文件的隨機讀寫D.以上答案均正確

45.下列程序的輸出結(jié)果是______。#include<stdio.h>main(){inti,j,k,a=3,b=2;i=(--a==b++)?--a;++b;j=a++;k=b;printf("i=%d,j=%d,k=%d\n",i,j,k);}

A.i=2,j=1,k=3B.i=1,j=1,k=2C.i=4,j=2,k=4D.i=1,j=1,k=3

46.在結(jié)構(gòu)化程序設(shè)計中,模塊劃分的原則是()。

A.各模塊應(yīng)包括盡量多的功能

B.各模塊的規(guī)模應(yīng)盡量大

C.各模塊之間的聯(lián)系應(yīng)盡量緊密

D.模塊內(nèi)具有高內(nèi)聚度,模塊間具有低耦合度

47.以下程序運行后,輸出結(jié)果是

#definePT5.5

#defineS(x)PT*x*x

#include<stdio.h>

main()

{inta=1,b=2;

printf("%4.1f\n",S(a+b));}

A.49.5B.9.5C.22D.45

48.定義int*swap()指的是______。

A.—個返回整型值的函數(shù)swap()

B.一個返回指向整型值指針的函swap()

C.一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值

D.以上說法均錯

49.下列程序執(zhí)行后的輸出結(jié)果是______。main(){intx='f';printf("%c\n",'A'+(x-'a'+l));}

A.GB.HC.ID.J

50.下列程序的輸出結(jié)果是()。#include<stdio.h>intfun(intx){inta;if(x==0‖x==1)return3;elsea=x-fun(x-2);returna;}voidmain(){printf("%d",fun(7));}

A.2B.8C.9D.5

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

A.125B.n/2C.nD.n+1

52.下列敘述中,不屬于測試的特征的是

A.測試的挑剔性B.完全測試的不可能性C.測試的可靠性D.測試的經(jīng)濟性

53.對于n個結(jié)點的單向鏈表(無表頭結(jié)點),需要指針單元的個數(shù)至少為______。

A.n-1B.nC.n+1D.2n

54.某一微機的地址總線為20位,其可訪問的最大空間地址為()

A.220

B.219

C.2(20+1)

D.2(20-1)

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

A.在模塊化程序設(shè)計中,一個模塊應(yīng)該盡量多的包括與其他模塊聯(lián)系的信息

B.在自頂向下、逐步細化的設(shè)計過程中,首先應(yīng)設(shè)計解決問題的第一個細節(jié)

C.在模塊化程序設(shè)計中,一個模塊內(nèi)部的控制結(jié)構(gòu)也要符合結(jié)構(gòu)化原則

D.在程序設(shè)計過程中,不能同時采用結(jié)構(gòu)化程序設(shè)計方法與模塊化程序設(shè)計方法

56.C語言中用于結(jié)構(gòu)化程序設(shè)計的三種基本結(jié)構(gòu)是A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

B.if、switch、break

C.for、while、do-while

D.if、for、continue

57.設(shè)有以下聲明語句structex{intx;floaty;charz;}example;則下面的敘述中不正確的是______。

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

B.example是結(jié)構(gòu)體類型名

C.x,y,z都是結(jié)構(gòu)體成員名

D.structex是結(jié)構(gòu)體類型

58.下列關(guān)于棧的描述中錯誤的是()

A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

59.有以下程序#include<stdio.h>sub1(chara,charB){charc;c=a;a=b;b=c;}sub2(char*a,charB){charc;c=*a;*a=b;b=c;}sub3(char*a,char*B){charc;c=*a;*a=*b;*b=c;}main(){cha,a,b;a='A';b='B';sub3(&a,&b)putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);putchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}程序運行后的輸出結(jié)果是()

A.BABBABB.ABBBBAC.BABABAD.BAABBA

60.以下有4組用戶標識符,其中合法的—組是______。

A.FOR-subCase

B.4dDOSize

C.f2_G3IFabc

D.WORDvoiddefine

四、選擇題(20題)61.有下列程序

voidfunc1(inti);

voidfunc2(inti);

charst[]="hello,friend!";

voidfunc1(inti)

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

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

}

voidfunc2(inti)

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

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

}

main()

{inti=0;func1(i);

printf("\n");

}

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

A.helloB.hel

C.hloD.hlm

62.下列說法不正確的是()。

A.調(diào)用函數(shù)時,實參可以是表達式

B.調(diào)用函數(shù)時,實參與形參可以共用內(nèi)存單元

C.調(diào)用函數(shù)時,將實參的值復(fù)制給形參,使實參變量和形參變量在數(shù)值上相等

D.調(diào)用函數(shù)時,實參與形參的類型必須一致

63.

64.在JavaScript語言中,擁有onsubmit事件的對象是()。

A.documentB.eventC.windowD.form.

65.軟件生命周期中花費時間最多的階段是

A.詳細設(shè)計B.軟件維護C.軟件編碼D.軟件測試

66.

67.

68.有以下程序執(zhí)行后的輸出結(jié)果是()。

A.1B.2C.4D.死循環(huán)

69.下列選項中不會引起二義性的宏定義是()。

A.#defineS(x)x*x

B.#defineS(x)(x)*(x)

C.#defineS(x)(x*x)

D.#defineS(x)((x)*(x))

70.關(guān)系數(shù)據(jù)庫管理系統(tǒng)所管理的關(guān)系是()。A.若干個二維表B.一個DBF文件C.一個DBC文件D.若干個DBC文件

71.有以下程序

main()

{

inta[]={1,2,3,4,5,6,7,8,9,0},*p;

for(p=a;p<a+10;p++)

printf("%d,",*p);

}

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

A.1,2,3,4,5,6,7,8,9,0,B.2,3,4,5,6,7,8,9,10,1,

C.0,1,2,3,4,5,6,7,8,9,D.1,1,1,1,1,1,1,1,1,1,

72.設(shè)有定義:charp[]={1,2,3),*q=p;,以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達式是()。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

73.for(i=1;i<=10;i=i+3)for(j=2;j<6;j++){··…·}的循環(huán)次數(shù)是()。

A.16B.18C.14D.12

74.

75.下砸結(jié)構(gòu)體的定義語句中,錯誤的是()。

76.下列選項中,均屬于通用軟件的是()。

A.WindowsXP、AutoCAD、PowerPoint

B.VisualFoxPro、Excel、SPSS

C.Word、Photoshop、Excel

D.C++、CorelDraw、Firefox2.0

77.

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

main

{intx=0.5;charz=a;

printf("%d\n",(x&1)&&(z<2));}

A.0B.1C.2D.3

78.以下程序的功能是計算:s=1+12+123+1234+12345

A.tB.t*10C.t*100D.t+10

79.有以下程序

#include<stdio.h>

#include<stdlib.h>

intfun(intt)

{int*p;

p=(int*)malloc(sizeof(int));

*p=t;return*p;

}

main()

{inta;

a=fun(8);

printf("%d\n",a+fun(10));

}

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

A.0B.10

C.18D.出錯

80.下列定義變量的語句中錯誤的是()。

A.intjnt;B.doubleint_;C.charFor;D.floatUS$;

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是根據(jù)整型形參n,計算如下公式的值:

Y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn)

例如,n中的值為l0,則應(yīng)輸出0.817962。

請修改程序中的錯誤,使它能得到正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdiOh>

doubleproc(intn)

{

doubley=1.0;

//****found****

intJ=1;.

inti;

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

{

j=-l*j;//****found****

y+=1/(i*i);

溫馨提示

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

評論

0/150

提交評論