2021年江蘇省南通市全國計算機等級考試C語言程序設(shè)計_第1頁
2021年江蘇省南通市全國計算機等級考試C語言程序設(shè)計_第2頁
2021年江蘇省南通市全國計算機等級考試C語言程序設(shè)計_第3頁
2021年江蘇省南通市全國計算機等級考試C語言程序設(shè)計_第4頁
2021年江蘇省南通市全國計算機等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩118頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年江蘇省南通市全國計算機等級考試C語言程序設(shè)計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.設(shè)有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);則

A.運行程序段后輸出0B.運行程序段后輸出1C.程序段中的控制表達式是非法的D.程序段執(zhí)行無限次

2.下列程序的輸出結(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

3.下列程序的運行結(jié)果是()。#include<stdio.h>voidfun(int*S,int*p){staticintt=3:*p=s[t];t--;}voidmain{inta[]={2,3,4,5),k;intx;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}}A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5

4.有以下程序:

A.CDEFB.ABEFC.ABCDD.CDAB

5.語句int(*ptr)的含義是()。

A.ptr是一個返回值為int的函數(shù)

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

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

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

6.以下程序的輸出結(jié)果是()。main{intx=0.5;charz=‘a(chǎn)’;printf(“d\n”,(x&1)&&(z<‘z’));}A.0B.1C.2D.3

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

A.gaeB.gaC.LanguageD.有語法錯

8.

9.有定義語句:inta=1,b=2,c=3,x;,則以下選項中各程序段執(zhí)行后,x的值不為3的是

A.if(c<a)x=1;elseif(b<a)x=1;elsex=3;

B.if(a<3)x=3;elseif(a<2)x=2;elsex=1;

C.if(a<3)x=3;if(a<2)x=2;if(a<1)x=1;

D.if(a<b)x=b;if(b<c)x=c;if(c<a)x=a;

10.查找效率最高的二叉排序樹是()。

A.所有結(jié)點的左子樹都為空的二叉排序樹

B.所有結(jié)點的右子樹都為空的二叉排序樹

C.平衡二叉排序樹

D.沒有左子樹的二叉排序樹

11.在Windows環(huán)境下,單擊當前應(yīng)用程序窗口中的“關(guān)閉”按鈕,其功能是A.將當前應(yīng)用程序轉(zhuǎn)為后臺運行

B.退出Windows后再關(guān)機

C.退出Windows后重新啟動計算機

D.終止當前應(yīng)用程序的運行

12.在一個C語言源程序文件中所定義的全局變量,其作用域為()。

A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

13.有以下程序:intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf("%if",&x);x=fun(x);printf("%d\n",x);}執(zhí)行程序時,給變量X輸入10,程序的輸出結(jié)果是()。A.55B.54C.65D.45

14.下面不能正確表示a*b/(c*d)的表達式是()。

A.(a*b)/c*dB.a*b/(c*d)C.a/c/d*bD.a*b/c/d

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

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

16.

17.函數(shù)fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始點是()。

A.文件開始B.文件末尾C.文件當前位置D.以上都不對

18.現(xiàn)有如下定義語句int*p,s[20],i;p=s;表示數(shù)組元素s[i]的表達式不正確的是

A.*(s+i)B.*(p+i)C.*(s=s+i)D.*(p=p+i)

19.C語言中的變量只能由字母、數(shù)字和下劃線組成,且第一個字符()。

A.必須是字母B.必須是下劃線C.必須是下劃線和字母D.可以是字母.數(shù)字或下劃線中任一一種

20.設(shè)有下列二叉樹:

對此二叉樹先序遍歷的結(jié)果是

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

二、2.填空題(20題)21.以下程序的功能是根據(jù)輸入的"y"("Y")與"n"("N"),在屏幕上分別顯示出"ThisisYES."與"ThisisNO."??瞻滋幮枰钊氲膬?nèi)容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case′y′:

case′Y′:printf("\nThisisYES.\n");

case′n′:

case′N′:printf("\nThisisNO.\n");}

main()

{charch;

printf("\nEnterachary,Yorn,N:");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

22.在索引查找或分塊查找中,首先查找【】,然后再查找相應(yīng)的【】,整個索引查找的平均查找長度等于查找索引表的平均查找長度與查找相應(yīng)子表的平均查找長度之和。

23.數(shù)據(jù)庫管理系統(tǒng)是位于用戶與______之間的軟件系統(tǒng)。

24.若有以下程序:

main()

{

inta[4][4]={{l,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},

{-31,32,-33,0}};

inti,j,s=0;

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

{

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

{

if(a[i][j]<0)continue;

if(a[i][j]==0)break;

s+=a[i][j];

}

}

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

}

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

25.下面程序的功能是【】。

doublesub(doublex,inty)

{intn;doublez;

for(n=1,z=x;n<y;n++)z=z*x;

returnz;}

main()

{doublea=2.0,b=4.0,c;

c=sub(a,b);printf("%f",c);}

26.下面程序的運行結(jié)果是【】。

#include<stdio.h>

#defineSIZE12

main()

{chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]='A'+i+321;

sub(s,7,SIZE-1);

for(i=0;i<SIZE;i++)printf("%c",s[i]);

printf("\n");}

sub(char*a,inttl,intt2)

{charch;

while(t1<t2)

{ch=*(a+t1);

*(a+t1)=*(a+t2);

*(a+t2)=ch;

t1++;t2--;}}

27.下列程序的輸出結(jié)果是______。

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

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

main()

{

intx=15;

while(x>10&&x<50)

{

x++;

if(x/3){x++;break;}

elsecontinue;

}

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

}

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

main()

{ints=0,i=1;

while(s<=10)

{s=s+i*i;

i++;

}

printf("%d",-i);

}

30.棧的基本運算有三種:入棧、退棧和【】。

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

main()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2==0)

*p='*';

p++;i++;

}

puts(a);

}

32.在面向?qū)ο蟮姆椒ㄖ?,______描述的是具有相似屬性與操作的一組對象。

33.在鏈表的運算過程中,能夠使空表與非空表的運算統(tǒng)一的結(jié)構(gòu)是______。

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

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));}

35.在數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計中,常用的描述工具是【】。

36.以下程序中,for循環(huán)體執(zhí)行的次數(shù)是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{inti;

for(i=1;i<K;i++){......}

37.若x和y都是buble型變量,且x的初值為3.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為【】。

38.表示“整數(shù)x的平方大于36"時的值為“真”的C語言邏輯表達式是【】。

39.以下程序通過函數(shù)SunFun求。這里f(x)=x2+1,由F函數(shù)實現(xiàn)。請?zhí)羁铡?/p>

main()

{printf("Thesum=%d\n",SunFun(10));}

SunFun(intn)

{intx,s=0;

for(x=0;x<=n;x++)s+=F(【】);

returns;

}

F(intx)

{returnx*x+1;}

40.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的______的集合。

三、1.選擇題(20題)41.用鏈表表示線性表的優(yōu)點是()。

A.便于隨機存取B.花費的存儲空間較順序存儲少C.便于插入和刪除操作D.數(shù)據(jù)元素的物理順序與邏輯順序相同

42.以下敘述中正確的是

A.C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方

B.花括號“{”和“}”只能作為函數(shù)體的定界符

C.構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名

D.分號是C語句之間的分隔符,不是語句的一部分

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

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

44.設(shè)有定義:intn=0,*p=&n,**q=&p;則以下選項中,正確的賦值語句是()A.p=1;B.*q=2;C.q=p;D.*p=5;

45.若有說明語句:charch='\x41';,則ch中______。

A.包含4個字符B.包含2個字符C.包含1個字符D.字符個數(shù)不確定,說明不正確

46.若在fopen函數(shù)中使用文件的方式是"wb+",該方式的含義是()

A.為讀/寫打開一個文本文件

B.為輸出打開一個文本文件

C.為讀/寫建立一個新的文本文件

D.為讀/寫建立一個新的二進制文件

47.已知inta=2,b=3;則執(zhí)行表達式a=a<b后,變量a的值為()。

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

48.在下列敘述中,正確的一條是______。A.if(表達式)語句中,表達式的類型只限于邏輯表達式

B.語句“goto12;”是合法的

C.for(;;)語句相當于while(1)語句

D.break語句可用于程序的任何地方,以終止程序的執(zhí)行

49.若有如下程序:ints[3][3]={'a','b','C','d','e','f','g','h','i'},*t;main(){t:(int*)malloc(sizeof(int));sub(t,s);printf("%c\n",*t);}sub(int*p,intb[][3]){*p=b[2][1];}則程序運行后的輸出結(jié)果是()。

A.dB.eC.hD.b

50.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),

A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定

51.有定義語句:intx,y;若要通過scanf("%d,%do,&x,&y);語句使變量x得到數(shù)值11,變量y得到數(shù)值12,下面四組輸入形式中,錯誤的是

A.1112<回車>B.11,12<回車>C.11,12<回車>D.11,<回車>12<回車>

52.有以下程序:voidsum(int*A){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=2;i>=0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}執(zhí)行后的輸出結(jié)果是

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

53.算法的時間復雜度是指______。

A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運算次數(shù)D.算法程序中的指令條數(shù)

54.有以下程序#include.<string.h>main(){char*p="abcde\ofghjik\0";printf("%d\n",strlen(p));}程序運行后的輸出結(jié)果是

A.12B.15C.6D.5

55.有以下程序

#include

main()

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

fp=fopen("d1.dat","w");

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

fclose(fp);

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

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

fclose(fp);}

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

A.2030B.2050C.3050D.3020

56.運行以下程序后,如果從鍵盤上輸入6514<回車>,則輸出結(jié)果為______。main(){intm,n;printf("Enterm,n:");scanf("%d%d",&m,&n);while(m!=n){while(m>n)m-=n;while(n>m)n-=m;}printf("m=%d\n",m);}

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

57.以下合法的賦值語句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

58.為用戶與數(shù)據(jù)庫系統(tǒng)提供接口的語言是

A.高級語言B.數(shù)據(jù)定義語言(DDL)C.數(shù)據(jù)操縱語言(DML)D.匯編語言

59.在關(guān)系數(shù)據(jù)庫中,用來表示實體之間聯(lián)系的是

A.樹形結(jié)構(gòu)B.網(wǎng)狀結(jié)構(gòu)C.線性表D.二維表

60.函數(shù)fun的返回值是fun(char*a,char*b){intnum=0,n=0;while(*(a+num)!='\0')num++;while(b[n]){*(a+num)=b[n];num++;n++;}returnnum;}

A.字符串a(chǎn)的長度B.字符串b的長度C.字符串a(chǎn)和b的長度之差D.字符串a(chǎn)和b的長度之和

四、選擇題(20題)61.

62.有以下程序:

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

A.2,4,3,9,12,12,11,11,18,9,

B.3,4,2,7,9,8,6,5,11,10,

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

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

63.下列哪個屬性是用來定義內(nèi)聯(lián)樣式的?()

A.fontB.classC.stylesD.style.

64.

對兩個數(shù)組a和b進行下列初始化:

charm[]1="l234567":

charn[]={1,2,3,4,5,6,7);

則下列敘述正確的是()。

A.數(shù)組m與數(shù)組n完全相同

B.數(shù)組m與數(shù)組n長度相同

C.數(shù)組m比數(shù)組n長1

D.數(shù)組m與數(shù)組n中都存放字符串

65.

66.交換兩個變量的值,不允許用臨時變量,應(yīng)該使用下列()位運算符。A.A.&B.^C.||D.~67.有以下程序:

fun(intx)

{intP;

if(x==0||x==l)return(3);

p=x-fun(x-2);

returnp;

}

main

{printf("%d\n",fun(7));}

程序執(zhí)行后的輸出結(jié)果是()。A.A.7B.3C.2D.0

68.以下敘述中不正確的是

A.預處理命令都必須以#號開始

B.在程序中凡是以#號開始的語句行都是預處理命令行

C.宏替換不占用運行時間,只占編譯時間

D.以下定義是正確的:#definePI3.1415926;

69.若有以下程序段:

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

A.2B.4C.8D.16

70.(49)按條件f對關(guān)系R進行選擇,其關(guān)系代數(shù)表達式為()

A.R|X|R

B.R|X|Rf

C.бf(R)

D.∏f(R)

71.已知inta=15,執(zhí)行語句a=a<<2以后,變量a的值是()。

A)20B)40

C)60D)80

72.下列字符串是標識符的是()。

A.aaB.a-classC.intD.LINE1

73.瀏覽器中用于負責向用戶顯示數(shù)據(jù)的是()。

A.WWWB.IP地址C.HTMLD.DNS

74.有如下程序段

#include"stdio.h"

main()

{intk[10];

intj;

for(j=0;j<10;j++)

scanf("%d",&k[j]);

for(j=9;j>=0;j--)

printf("%d",k[j]);}

則程序段實現(xiàn)的功能是

A.輸入10個數(shù)據(jù)的順序輸入并輸出

B.輸入10個數(shù)據(jù)的逆序存放

C.輸入10個數(shù)據(jù)的逆序輸出

D.以上敘述均錯誤

75.有如下程序

voidfunc1(intst[],inti)

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

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

}

voidfunc2(intst[],inti)

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

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

}

main()

{charst[]="hello,friend!";

inti=0;func1(st,i);

printf("\n");}

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

A.helloB.hel

C.hloD.編譯出錯

76.整型變量X和Y的值相等,且為非0值,則以下選項中結(jié)果為0的表達式是()。

A.X‖YB.X|YC.X&YD.X^Y

77.以下程序的輸出結(jié)果是()。voidprt(int*m.intn){inti;for(i=0;i<n;i++)m[i]++;)main{inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf(“%d,”,a[i]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1

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

A.2011B.99C.209D.1111

79.計算機能直接執(zhí)行的程序是()。

A.源程序B.目標程序C.匯編程序D.可執(zhí)行程序

80.下列敘述中不正確的是。

A.算法的效率不僅與問題的規(guī)模有關(guān),還與數(shù)據(jù)的存儲結(jié)構(gòu)有關(guān)

B.算法的時間復雜度是指執(zhí)行算法所需要的計算工作量

C.數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)是一一對應(yīng)的

D.算法的時間復雜度與空間復雜度不一定相關(guān)

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:將str所指字符串中出現(xiàn)的t1所指字符串全部替換成t2所指字符串,所形成的新的字符串放在w所指的數(shù)組中。在此處,要求t1和t2所指字符串的長度相同。例如,當str所指字符串中所指的內(nèi)容為abcdabcdef9,t1所指字符串中的內(nèi)容為bc,t2所指字符串中的內(nèi)容為11時,結(jié)果在w所指的數(shù)組中的內(nèi)容應(yīng)為alldalldefg。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫一個函數(shù)proc,它的功能是:求出1~m(含m)能被7或11整除的所有整數(shù)放在數(shù)組a中,通過n返回這些數(shù)的個數(shù)。

例如,若傳給m的值為70,則程序輸出:

7111421222833354244495556636670

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

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#defineN100

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

{}

voidmain

{

intarr[N],n,k;

system("CLS");

proc(70,arr,&n);

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

if((k+1)%20==0)//每行輸出20個數(shù)

{printf("%4d",arr[k]);

printf("\n");

}

else

printf("%4d",arr[k]);

printf("\n");

}

參考答案

1.B解析:本題考查while語句的使用。本題考查邏輯非運算符和不等于運算符的區(qū)別,邏輯非運算符'!'的優(yōu)先級大于不等于運算符'!='的優(yōu)先級。

2.D

3.A依據(jù)fun函數(shù),可知其要實現(xiàn)的功能是將S中第(t+1)個元素以前的元素逆置賦給數(shù)組P。由于fun中函數(shù)定義了靜態(tài)變量t=3,因此,main函數(shù)中調(diào)用函數(shù)fun(a,&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)x,最后輸出x數(shù)組。

4.A在函數(shù)funl()之前定義了全局字符變量a和b。這兩個變量的作用域是從其定義處開始到整個程序末結(jié)束。在函數(shù)funl()之內(nèi)定義了兩個變量a和b,并且分別初始化為字符ˊCˊ和ˊDˊ。

5.C本題考查的是指向函數(shù)的指針。函數(shù)指針定義的基本格式為:類型標識符(*指針變量名)()?!邦愋蜆俗R符”為函數(shù)返回值的類型。

6.B(x&1)&&(z<‘z’)=(0.5&1)&&(‘a(chǎn)’<‘z’)=1&&1=1,故選擇B選項。

7.A考查用指針來引用字符數(shù)組元素的方法。指針pl+k相當于指針pl向后移動了k個字符的位置,指針p2同理。

8.B

9.C解析:選項A首先判斷if語句條件中表達式的值“3<1”為假,然后執(zhí)行最近的else后面的語句,該else后面又為if-else語句,在這個if-else語句中首先判斷該if語句條件中表達式的值“2<1”為假,程序執(zhí)行其最近的else后面的語句,將3賦值給x。

選項B中首先判斷if語句條件中表達式的值“1<3”為真,然后執(zhí)行最近的else后面的語句“x=3”,后面的else不再執(zhí)行,最后x的值為3。

選項C中,首先執(zhí)行第一條if語句,由于“1<3”為真,執(zhí)行此if后面的語句“x=3”,接著執(zhí)行第二條if語句,由于“1<2”為真,執(zhí)行此if后面的語句“x=2”,接著執(zhí)行第三條if語句,由于“1<1為假,后面的語句不執(zhí)行,所以最后的x值為2不為3。

選項D中;首先執(zhí)行第一條if語句,由于“a<b”為真,執(zhí)行此if后面的語句“x=b”;接著執(zhí)行第二條if語句,由于“b<c”,為真,執(zhí)行此if后面的語句“x=c”,接著執(zhí)行第三條if語句,由于“c<a”為假,后面的語句不執(zhí)行,所以最后的x值為c即為3。

10.C對于結(jié)點個數(shù)相同的二叉排序樹,平衡二叉排序樹的深度最小。而二叉排序樹的查找效率取決于二叉排序樹的深度。

11.D

12.D

\n全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個源文件結(jié)束止。當全局變量定義在后,引用它的函數(shù)在前時,應(yīng)該在引用它的函數(shù)中用extern對此全局變量進行說明,以便通知編譯程序該變量是一個已在外部定義了的全局變量,這時全局變量的作用域從extern說明處起,延伸到該函數(shù)末尾。

\n

13.A函數(shù)fun()通過遞歸調(diào)用實現(xiàn)的功能為n+(n-1)+…+1,故程序的輸出結(jié)果為55。

14.A

15.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)問題定義時犯下的錯誤。

16.A

\r\n

17.B解析:SEEK_END代表的是文件末尾,SEEK_SET代表的是文件的開始,SEEK_CUR代表的是文件當前位置。

18.C解析:當p指向s數(shù)組的首地址時,表示數(shù)組元素s[i]的表達式應(yīng)當有:①s[i],②,(s+i),③*(p+i),④p[i]四種形式。選項C)錯誤的原因是,數(shù)組的地址是不可變的,指針的地址是可以變的。

19.C

20.C解析:二叉樹的遍歷分為先序、中序、后序三種不同方式。本題要求先序遍歷遍歷順序應(yīng)該為:訪問根結(jié)點->先序遍歷左子樹->先序遍歷右子樹。按照定義,先序遍歷序列是ABDECF。

21.getchargetchar解析:考查了字符可以作為整型變量來對待,參與操作。題中要求根據(jù)輸入的字符調(diào)用函數(shù)YesNo來判斷輸入的字符是y(Y)還是n(N),字符的輸入可用字符輸入函數(shù)getchar。函數(shù)YesNo用來判斷一個字符是y(Y)還是n(N),主要用了一個switch多分支結(jié)構(gòu)來比較輸入字符與字符\ue008'y',\ue009'Y'、,'n','N'是否相等來實現(xiàn)的。

22.索引表塊索引表\r\n塊

23.操作系統(tǒng)操作系統(tǒng)解析:數(shù)據(jù)庫管理系統(tǒng)是幫助用戶創(chuàng)建和管理數(shù)據(jù)庫的應(yīng)用程序的集合。因此,數(shù)據(jù)庫管理系統(tǒng)需要操作系統(tǒng)的支持,為用戶提供服務(wù)。

24.5858解析:本題中處理二維數(shù)組元素用了兩重循環(huán),外循環(huán)變量i表示數(shù)組的行,內(nèi)層循環(huán)變量j表示數(shù)組的列。在第二重循環(huán)中首先判斷數(shù)組元素的值是否小于0,若是則處理該行的下一個元素;若不是則判斷a[¨剛的值是否等于0,若等于0則退出內(nèi)層循環(huán)開始處理下一行;其他情況下,把a[i][j]的值加到變量s中。所以本程序段的功能是把每行值為0的元素前面的所有大于0的元素值加到變量s中。

25.本程序的功能是求a的b次方本程序的功能是求a的b次方

26.abcdefglkjihabcdefglkjih解析:本題主要考查了字符變量可參與的運算。因為字符在計算機中是以ASCII碼的形式存放的,所以字符變量可看作整型變量來處理,如參與算術(shù)運算等,某字符的大寫字母的ASCII碼值比它對應(yīng)的小寫字母ASCII碼值小32。

27.11解析:ifelse語句的功能是:若表達式的值為真,執(zhí)行語句1,并跳過其他語句,執(zhí)行ifelse語句的下一條語句,若表達式的值為假,跳過語句1,執(zhí)行語句2,依次往下判斷。題中,x=3,y=2,第一個if語句的控制條件x<y就不滿足,又沒有與之配對的else語句,所以直接執(zhí)行printf語句,在整個過程中變量z的值都沒發(fā)生變化。

28.1717解析:break語句只能在循環(huán)體和switch語句體內(nèi)使用,當break出現(xiàn)在循環(huán)體中的switch語句體內(nèi)時,其作用只是跳出該switch語句體。當break出現(xiàn)在循環(huán)體中,但不在switch語句體內(nèi)時,則在執(zhí)行break后,跳出本層循環(huán)體。而continue語句的作用時結(jié)束本次循環(huán),即跳過本次循環(huán)中余下尚未執(zhí)行的語句,接著再一次進行循環(huán)的條件判定。本題中首先定義了一個變量x并賦初值15,然后判斷循環(huán)條件“x>5&&x<50”,即“x>5&&x<50”,為真,執(zhí)行循環(huán)體.語句“x++;”執(zhí)行后,x的值變?yōu)?6,“X/3”的值為5為真,執(zhí)行其后的語句“x++;”,x的值變?yōu)?7,執(zhí)行語句“break”,退出循環(huán),輸出。x的值為17。

29.33解析:分析程序運行過程,第1次循環(huán):s=s+i*i=0+1*1=1,i=2;第2次循環(huán):s=s+i*i=1+2*2=5,i=3;第3次循環(huán):s=s+i*i=5+3*3=14,i=4;循環(huán)條件不成立輸出i,--i使i的值減1,軸出結(jié)果為3。

30.讀棧頂元素讀棧頂元素解析:棧的基本運算有三種:入棧、退棧和讀棧頂元素。

入棧運算是指在棧頂位置插入一個新元素。這個運算有兩個基本操作:首先將棧頂指針進一(即top加1),然后將新元素插入到棧頂指針指向的位置。

退棧運算是指取出棧頂元素并賦給一個指定的變量。這個運算有兩個基本操作:首先將棧頂元素(棧頂指針指向的元素)賦給一個指定的變量,然后將棧頂指針退一(即top減1)。

讀棧頂元素是指將棧頂元素賦給一個指定的變量。這個運算不刪除棧頂元素,只是將它的值賦給一個變量。

31.*2*4*6*8**2*4*6*8*解析:程序中定義了一個字符數(shù)組a,并初始化為123456789,接著定義了一個指針p并讓它指向數(shù)組a,緊接著執(zhí)行了一個while循環(huán),此循環(huán)的作用是:當i為偶數(shù)時,將“*”賦給a[i],p指向數(shù)組末尾,循環(huán)結(jié)束,此時數(shù)組中a[0]、a[2]、a[4]、a[6]和a[8]的值都為“*”,所以最后調(diào)用puts()函數(shù)輸出的a的值為*2*4*6*8*

32.類類解析:在面向?qū)ο蟮姆椒ㄖ?,把具有相同屬性和方法的對象稱為類,類是對象的抽象,對象是類的實例。

33.循環(huán)鏈表循環(huán)鏈表解析:在循環(huán)鏈表中,由于設(shè)置了一個頭結(jié)點,因此在任何情況下,循環(huán)鏈表中至少有一個結(jié)點存在,從而使空表與非空表的運算統(tǒng)一。

34.99解析:本題考查函數(shù)的綜合知識。首先,我們可以利用強制轉(zhuǎn)換類型轉(zhuǎn)換運算符,將一個表達式轉(zhuǎn)換成所需類型。如:(double)a是將a轉(zhuǎn)換成double類型;(int)(x+y)是將x+y的值轉(zhuǎn)換成整型。

本題可按部就班地逐步運算:

fun((int)fun(a+c,b),a-c)

fun((int)fun(10,5),2-8)

fun((int)15.000000,-6)

fun(15,-6)

9

35.E-R圖E-R圖解析:E-R圖是設(shè)計概念模型的有力工具。

36.44解析:本題考查宏定義。預編譯時,首先將M的宏定義帶入K,得到N+1+1*N+1/2;再將N的宏定義帶人,得到2+1+1*2+1/2=3+2+0=5,所以循環(huán)4次。

37.88解析:fabs函數(shù)功能是求x的絕對值,計算結(jié)果為double型。pow功能是計算x的y次方的值,計算結(jié)果同樣為double型。所以本題表達式相當于2.0的3.0次方,結(jié)果為8.000000。

38.x<-6||x>6

39.xx解析:考查函數(shù)的調(diào)用。函數(shù)調(diào)用時,實參與形參一致,函數(shù)F只有一個形參,故函數(shù)的調(diào)用為F(x)。

40.軟件工具軟件工具解析:軟件開發(fā)環(huán)境是各類軟件開發(fā)工具的集合體。

41.CC?!窘馕觥繑?shù)據(jù)結(jié)構(gòu)是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。”關(guān)系”描述的是數(shù)據(jù)元素之間的邏輯關(guān)系,因此又稱數(shù)據(jù)的邏輯結(jié)構(gòu)。數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)的邏輯結(jié)構(gòu))在計算機中的表示,又稱物理結(jié)構(gòu)。數(shù)據(jù)的存儲結(jié)構(gòu)有順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)兩種。不同存儲結(jié)構(gòu)的數(shù)據(jù)處理效率不同。由于鏈表采用鏈式存儲結(jié)構(gòu),元素的物理順序并不連續(xù),對于插入和刪除無需移動元素,很方便,當查找元素時就需要逐個元素查找,因此查找的時間相對更長。

42.A解析:“/*”與“*/”之間的信息稱為注釋信息,在C語言中,允許在任何能夠插入空格符的位置插入注釋,但C語言的注釋不能進行嵌套,故選項A正確;在C語言中,函數(shù)體是從花括號“{”開始,到花括號“}”結(jié)束.但沒有規(guī)定花括號“{”和“}”只能作為函數(shù)體定界符,故選項B錯誤;選項C中前半句是正確的,在C程序中由有一個或多個函數(shù)所組成,但不是所有的函數(shù)都由用戶自己命名,有些函數(shù)比如庫函數(shù),主函數(shù)main()就不能由用戶來命名,故選C不正確;在C語言中明確規(guī)定每條語句以分號“;”結(jié)束,分號是語句不可缺少的一部分,故選項D不正確。所以,4個選項中選項A符合題意。

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

44.D解析:本題考核的知識點是指針變量定義和賦值語句的基本應(yīng)用。在使用一個指針變量之前,先要用聲明語句對其進行定義,在定義了一個指針變量之后,系統(tǒng)就為這個指針變量分配了一個存儲單元,用它來存放地址。在C語言中有兩個有關(guān)指針的運算符:&運算符,為取地址運算符,*運算符是指針運算符,*p代表p所指向的變量。本題中首先定義了整型變量n,其初值為0,接著定義一個指針變量p并讓它指向n,然后定義了一個指向指針的指針變量q并讓它指向p,選項A中將常量1賦給指針p不正確;選項B也是將常量2賦給*p,故選項B不正確;選項C中P不是指向指針的指針變量,而將他賦值給一個指向指針的指針變量小顯然不正確,所以,4個選項中選項D符合題意。

45.C解析:'\\x41'是轉(zhuǎn)義字符,x表示41是十六進制數(shù),41是字母a的ASCII碼值。

46.D

47.B解析:先計算關(guān)系表達式a<b=2<3為真(表達式為真時,如果變量為int型變量則真用1表示,假用0表示),即a=1。

48.C

49.C解析:讓指針變量t指向一個整型動態(tài)存儲空間。函數(shù)sub中的語句“*p=b[2][1]”是將數(shù)組元素b[2)(1]即h賦給p所指向的存儲單元中。

50.D解析:在C語言的標準中,short占2個字節(jié)、long占4個字節(jié),但int的大小和編譯系統(tǒng)相關(guān)。例如在Turbo\u3000C\u30002.0中,int占2個字節(jié),但在VisualC++6.0(VC6可以用做C語言編譯器)中占4個字節(jié)。故本題應(yīng)該選擇D。

51.A解析:scanf()函數(shù)有兩個參數(shù),第一個參數(shù)為輸入格式字符申;第二個參數(shù)為輸入變量地址列表,在scanf()語句中非格式字符可以作為輸入時數(shù)據(jù)的間隔,輸入時必須原樣輸入,在本題中輸入格式串為%d,%d其中“,”為非格式字符,所以輸入時必須原樣輸入。

52.A解析:本題考核的知識點是數(shù)組的定義、賦初值以及函數(shù)調(diào)用的組合應(yīng)用.本題中函數(shù)sum(int*A)的作用是:將形參a所指的數(shù)組中的第二個元素的值a[1]賦給第一個元素a[0]。主函數(shù)中定義一個長度為10的整型數(shù)組并賦初值,接著執(zhí)行一個for循環(huán),該循環(huán)共執(zhí)行了3次.當i=2時,調(diào)用函數(shù)sum(&aa[2]),主函數(shù)中將&aa[2]作為實參傳給行參a,所以此時形參a所指的數(shù)組的第一個元素和第二個元素分別為aa[2]和aa[3],故執(zhí)行完該函數(shù)后將aa[3]的值賦給aa[2],即aa[1]=aa[3]=4,當i=1時,調(diào)用函數(shù)sum(&aa[1]),主函數(shù)中將&aa[1]作為實參傳給行參a,所以此時形參a所指的數(shù)組的第一個元素和第二個元素分別為aa[1]和aa[2],故執(zhí)行完該函數(shù)后將aa[2]的值賦給aa[1],即aa[1]=aa[2]=4;當i=0時;調(diào)用函數(shù)sum(&aa[0]),,主函數(shù)中將&aa[0]作為實參傳給行參a,所以此時形參a所指的數(shù)組的第一個元素和第二個元素分別為aa[0]和aa[1],故執(zhí)行完該函數(shù)后將aa[1]的值賦給aa[0],即aa[0]=aa[1]=4;故最后輸出的aa[0]的值為4,所以,4個選項中選項A符合題意。

53.C解析:算法的時間復雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算的工具以及程序員的水平無關(guān)。選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤,因為算法所編寫的程序長度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項D錯誤,因為根據(jù)一個算法所編制出的程序之中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復雜度。所以,本題正確答案為C。

54.D解析:本題首先定義了一個字符型指針變量p,并用一個字符串給它賦值,然后調(diào)用printf()函數(shù)輸出p所指向的字符串的長度。由于字符串的結(jié)束標記為、0,其長度為第1個\\0前的字符個數(shù),故長度為5。所以4個選項中D正確。

55.A解析:本題中,最主要的是掌握幾個有關(guān)文件函數(shù)的應(yīng)用。

函數(shù)名:fopen

功能:打開一個文件

調(diào)用方式FILE*fp;

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

函數(shù)名:fprintf

功能:傳送格式化輸出到一個文件中

調(diào)用方式:fprintf(文件指針,格式字符串,輸出表列);

函數(shù)名:fclose

功能:關(guān)閉一個文件

調(diào)用方式:fclose(文件指針);

函數(shù)名:fscanf

功能:從磁盤文件執(zhí)行格式化輸入

調(diào)用方式:fscanf(文件指針,格式字符串,輸入列表)。

56.C解析:分析程序可知,該程序?qū)崿F(xiàn)的功能是對數(shù)m,n求其最大公約數(shù)。在本題中m與n的值分別為65與14,其最大公約數(shù)為1,故其輸出結(jié)果為m=1。

57.B解析:本題中的答案A與D都缺少“;”,而答案C中,表達式是不能獨立成為語句的,答案B使用了C語言的自減運算符它就相當于D=D-1,所以答案B為一賦值語句。

58.C解析:DBMS提供數(shù)據(jù)操縱語言(DML)實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的操作,數(shù)據(jù)操縱語言(DML)是用戶(包括應(yīng)用程序)與數(shù)據(jù)庫系統(tǒng)的接口。數(shù)據(jù)操縱語言通常包括檢索和更新功能。注意:程序模塊中語言處理部分的分類,各子類的定義及其功能。

59.D解析:數(shù)據(jù)庫中的關(guān)系模型是采用二維表來表示實體與實體之間的聯(lián)系。

60.D解析:第一個while循環(huán)是字符串a(chǎn)的長度,第二個while是將字符串b接在a的后面,num在a串長度上繼續(xù)累計,為兩個字符串長度之和。

61.A

62.A本題考查的是結(jié)構(gòu)體成員的引用。在主函數(shù)main中定義了一個整型變量i和一個結(jié)構(gòu)體變量s。f函數(shù)中,通過指針a來引用數(shù)組中的元素;通過for循環(huán)語句將數(shù)組中除最后一個元素外的其他元素(由條件i<n-1決定的)分別加上由0開始的遞增數(shù)據(jù)(即0、1、2…8),所以最后的輸出結(jié)果為2,4,3,9,12,12,11,11,18,9,。

63.D

64.C

\n在m數(shù)組中賦值的是字符串,其長度為7,末尾有結(jié)束符\0,故字節(jié)數(shù)為8,而n數(shù)組中賦的是字符,其長度為7,故C選項正確。

\n

65.B

66.B解析:按邏輯位運算的特定作用主要有3點:①用按位與運算將特定位清0或保留特定位:②用按位或運算將特定的位置設(shè)置為1;③用按位異或運算將某個變量的特定位翻轉(zhuǎn)或交換兩個變量的值。

67.C在函數(shù)fun(intx)中,有個if語句判斷,如果參數(shù)x等于0或1時,返回值,否則進入下面的p=x-fun(x-2)遞歸函數(shù)。當在主函勢中調(diào)用fun(7)時,其過程為:“fun(7)=7-fun(5)=7-(5一fun(3))=7-(5-(3-fun(1)))=7-(5-(3—3))=7-5=2”,所以最后的輸出結(jié)果為2。

68.D在C語言程序中,會出現(xiàn)以“#”號開頭的預處理命令,如包含命令#include、宏定義命令#define等。在源程序中,這些命令都放在函數(shù)之外,而且一般都放在源文件的前面,它們稱為預處理部分。

所謂預處理,是指在進行編譯的第一遍掃描(詞法掃描和語法分析)之前所做的工作。預處理是C語言的一個重要功能,它由預處理程序負責完成。當對一個源文件進行編譯時,系統(tǒng)將自動引用預處理程序?qū)υ闯绦蛑械念A處理部分做處理,處理完畢自動編譯源程序。

在C語言中,宏是一種預處理命令,在定義宏時,不需要以語句標識符“;”來表示宏定義結(jié)束,而是另起一行表示結(jié)束。

綜合上面的分析,可以知道本題選項中,A、B、C的說法都正確,只有D的宏定義不正確,因此本題的正確答案選D。

69.B9用二進制表示為1001,右移1位后為0100,即十進制4。

70.C

71.C對a進行右移兩位的操作,原來為1111,右移兩位后變成111100等于60.

72.A

\nC語言規(guī)定,標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線。int就是表達整型變量類型的標識符,它不能用做變量名和函數(shù)名。

\n

73.C

74.C在本題中,從給出的選項可以知道,本題程序的作用是對數(shù)組的十個元素按照一個規(guī)則進行輸出。

在程序中,首先定義了一個大小為10的數(shù)字用來存放需要處理的十個數(shù),然后通過循環(huán)從鍵盤輸入需要被處理的十個數(shù),又通過一個循環(huán)完成對數(shù)組元素的輸出。在該循環(huán)中,當循環(huán)變量j=9時,輸出的是a[9],即數(shù)組中的最后一個元素,當j=8時,輸出的是a[8],即數(shù)組中的倒數(shù)第二個元素,以此類推,當j=0時,輸出的是a[0],即數(shù)組的第一個元素。由此我們可以看出,最后是將數(shù)組逆序輸出。與選項C完全一致,因此,本題的正確答案是C。

75.D本題主要考查全局變量的作用域。在本題中,程序首先聲明兩個無返回值函數(shù)func1和func2。func1函數(shù)帶有兩個形參,一個是需要輸出的數(shù)字,一個是輸出數(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ù)中首先定義了一個字符數(shù)組,并賦了初值,然后定義一個變量i并賦值為0,如果數(shù)組st是一個全局數(shù)組,那么調(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’,但由于數(shù)組只是一個局部數(shù)組,局部數(shù)組的作用域是定義它的函數(shù)或者程序段,調(diào)用函數(shù)func1時,數(shù)組有效,當再調(diào)用函數(shù)func2時,已經(jīng)超出了數(shù)組的作用域。因此,系統(tǒng)在編譯時會報錯。本題答案選D。

76.DX||Y是將X和Y作邏輯或運算,因為都是非0,所以結(jié)果為1,X|Y是做位或運算,即相同位置的數(shù)字只要有一個為1,結(jié)果為1,其結(jié)果也為非0,X&Y是為與運算,相同位置的數(shù)字都為1的時候才為1,其結(jié)果為非0,X^Y做位異或運算,即同0異1,因為X與Y的值相等,所以相同位置的數(shù)字一定相同。

77.B函數(shù)調(diào)用時,prt函數(shù)的作用是為使m數(shù)組中的數(shù)自增1,因此數(shù)組下標從0開始,每個元素都自加1。

78.Astden返回的是不包括\\0在內(nèi)的數(shù)組

79.D計算機能直接執(zhí)行的程序是可執(zhí)行程序,其擴展名為.exe。故本題答案為D選項。

80.C本題主要考查與算法有關(guān)的基本知識。算法是對一個問題求解步驟的描述,是求解問題的方法,它是指令的有限序列,其中的每條指令表示一個或多個操作。算法的效率不僅與問題的規(guī)模有關(guān),還與數(shù)據(jù)的存儲結(jié)構(gòu)有關(guān)。

算法的時間復雜度和空間復雜度是衡量一個算法好壞的度量,其中時間復雜度是指執(zhí)行算法所需要的計算工作量;空間復雜度是指算法在執(zhí)行過程中所需要的計算機存儲空間。算法的空間復雜度與時間復雜度不一定相關(guān)。

數(shù)據(jù)的邏輯結(jié)構(gòu)反映的是數(shù)據(jù)的邏輯關(guān)系,與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān),是獨立于計算機的。因此,題目中說數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)一一對應(yīng)的說法不正確。本題答案選C。

81.(1)錯誤:intproc(char*str,char*t1,char*t2,char*w)

正確:voidproc(char*str,char*t1.char*t2,char*w)

(2)錯誤:while(r)

正確:while(*r)

(3)錯誤:r++

正確:r++;

【解析】由主函數(shù)中proc()函數(shù)的調(diào)用以及proc()函數(shù)的定義,可知該函數(shù)沒有返回值,因此把proc()前的“int”改為“void”;由proc()函數(shù)可知,變量r指向的是字符串t1地址,while循環(huán)要判斷的是字符串tl是否結(jié)束,因此,“while(r)”應(yīng)改為“while(*r)”;C語言中,每一條語句都以分號結(jié)束,因此。“r++”后要加上分號。

82.\n\tvoidproc(intm,int*a,int*n)

\n{

\ninti,j=0;

\nfor(i=1;i<=m;i++)//進行m次循環(huán)

\nif(i%7==0||i%11==0)//能被7或11整除的所有整數(shù)

\na[j++]=i;//符合條件的數(shù)放在數(shù)組a中

\n*n=j;//返回這些數(shù)的個數(shù)

\n}

\n【解析】本題需要先判斷1~m每一個整數(shù)能否被7或11整除,然后將符合條件的整數(shù)放在數(shù)組a中,最后將符合條件的數(shù)的個數(shù)通過形參n返回主函數(shù)。\n2021年江蘇省南通市全國計算機等級考試C語言程序設(shè)計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.設(shè)有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);則

A.運行程序段后輸出0B.運行程序段后輸出1C.程序段中的控制表達式是非法的D.程序段執(zhí)行無限次

2.下列程序的輸出結(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

3.下列程序的運行結(jié)果是()。#include<stdio.h>voidfun(int*S,int*p){staticintt=3:*p=s[t];t--;}voidmain{inta[]={2,3,4,5),k;intx;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}}A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5

4.有以下程序:

A.CDEFB.ABEFC.ABCDD.CDAB

5.語句int(*ptr)的含義是()。

A.ptr是一個返回值為int的函數(shù)

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

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

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

6.以下程序的輸出結(jié)果是()。main{intx=0.5;charz=‘a(chǎn)’;printf(“d\n”,(x&1)&&(z<‘z’));}A.0B.1C.2D.3

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

A.gaeB.gaC.LanguageD.有語法錯

8.

9.有定義語句:inta=1,b=2,c=3,x;,則以下選項中各程序段執(zhí)行后,x的值不為3的是

A.if(c<a)x=1;elseif(b<a)x=1;elsex=3;

B.if(a<3)x=3;elseif(a<2)x=2;elsex=1;

C.if(a<3)x=3;if(a<2)x=2;if(a<1)x=1;

D.if(a<b)x=b;if(b<c)x=c;if(c<a)x=a;

10.查找效率最高的二叉排序樹是()。

A.所有結(jié)點的左子樹都為空的二叉排序樹

B.所有結(jié)點的右子樹都為空的二叉排序樹

C.平衡二叉排序樹

D.沒有左子樹的二叉排序樹

11.在Windows環(huán)境下,單擊當前應(yīng)用程序窗口中的“關(guān)閉”按鈕,其功能是A.將當前應(yīng)用程序轉(zhuǎn)為后臺運行

B.退出Windows后再關(guān)機

C.退出Windows后重新啟動計算機

D.終止當前應(yīng)用程序的運行

12.在一個C語言源程序文件中所定義的全局變量,其作用域為()。

A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

13.有以下程序:intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf("%if",&x);x=fun(x);printf("%d\n",x);}執(zhí)行程序時,給變量X輸入10,程序的輸出結(jié)果是()。A.55B.54C.65D.45

14.下面不能正確表示a*b/(c*d)的表達式是()。

A.(a*b)/c*dB.a*b/(c*d)C.a/c/d*bD.a*b/c/d

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

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

16.

17.函數(shù)fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始點是()。

A.文件開始B.文件末尾C.文件當前位置D.以上都不對

18.現(xiàn)有如下定義語句int*p,s[20],i;p=s;表示數(shù)組元素s[i]的表達式不正確的是

A.*(s+i)B.*(p+i)C.*(s=s+i)D.*(p=p+i)

19.C語言中的變量只能由字母、數(shù)字和下劃線組成,且第一個字符()。

A.必須是字母B.必須是下劃線C.必須是下劃線和字母D.可以是字母.數(shù)字或下劃線中任一一種

20.設(shè)有下列二叉樹:

對此二叉樹先序遍歷的結(jié)果是

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

二、2.填空題(20題)21.以下程序的功能是根據(jù)輸入的"y"("Y")與"n"("N"),在屏幕上分別顯示出"ThisisYES."與"ThisisNO."??瞻滋幮枰钊氲膬?nèi)容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case′y′:

case′Y′:printf("\nThisisYES.\n");

case′n′:

case′N′:printf("\nThisisNO.\n");}

main()

{charch;

printf("\nEnterachary,Yorn,N:");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

22.在索引查找或分塊查找中,首先查找【】,然后再查找相應(yīng)的【】,整個索引查找的平均查找長度等于查找索引表的平均查找長度與查找相應(yīng)子表的平均查找長度之和。

23.數(shù)據(jù)庫管理系統(tǒng)是位于用戶與______之間的軟件系統(tǒng)。

24.若有以下程序:

main()

{

inta[4][4]={{l,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},

{-31,32,-33,0}};

inti,j,s=0;

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

{

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

{

if(a[i][j]<0)continue;

if(a[i][j]==0)break;

s+=a[i][j];

}

}

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

}

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

25.下面程序的功能是【】。

doublesub(doublex,inty)

{intn;doublez;

for(n=1,z=x;n<y;n++)z=z*x;

returnz;}

main()

{doublea=2.0,b=4.0,c;

c=sub(a,b);printf("%f",c);}

26.下面程序的運行結(jié)果是【】。

#include<stdio.h>

#defineSIZE12

main()

{chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]='A'+i+321;

sub(s,7,SIZE-1);

for(i=0;i<SIZE;i++)printf("%c",s[i]);

printf("\n");}

sub(char*a,inttl,intt2)

{charch;

while(t1<t2)

{ch=*(a+t1);

*(a+t1)=*(a+t2);

*(a+t2)=ch;

t1++;t2--;}}

27.下列程序的輸出結(jié)果是______。

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

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

main()

{

intx=15;

while(x>10&&x<50)

{

x++;

if(x/3){x++;break;}

elsecontinue;

}

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

}

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

main()

{ints=0,i=1;

while(s<=10)

{s=s+i*i;

i++;

}

printf("%d",-i);

}

30.棧的基本運算有三種:入棧、退棧和【】。

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

main()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2==0)

*p='*';

p++;i++;

}

puts(a);

}

32.在面向?qū)ο蟮姆椒ㄖ?,______描述的是具有相似屬性與操作的一組對象。

33.在鏈表的運算過程中,能夠使空表與非空表的運算統(tǒng)一的結(jié)構(gòu)是______。

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

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));}

35.在數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計中,常用的描述工具是【】。

36.以下程序中,for循環(huán)體執(zhí)行的次數(shù)是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{inti;

for(i=1;i<K;i++){......}

37.若x和y都是buble型變量,且x的初值為3.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為【】。

38.表示“整數(shù)x的平方大于36"時的值為“真”的C語言邏輯表達式是【】。

39.以下程序通過函數(shù)SunFun求。這里f(x)=x2+1,由F函數(shù)實現(xiàn)。請?zhí)羁铡?/p>

main()

{printf("Thesum=%d\n",SunFun(10));}

SunFun(intn)

{intx,s=0;

for(x=0;x<=n;x++)s+=F(【】);

returns;

}

F(intx)

{returnx*x+1;}

40.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的______的集合。

三、1.選擇題(20題)41.用鏈表表示線性表的優(yōu)點是()。

A.便于隨機存取B.花費的存儲空間較順序存儲少C.便于插入和刪除操作D.數(shù)據(jù)元素的物理順序與邏輯順序相同

42.以下敘述中正確的是

A.C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方

B.花括號“{”和“}”只能作為函數(shù)體的定界符

C.構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名

D.分號是C語句之間的分隔符,不是語句的一部分

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

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

44.設(shè)有定義:intn=0,*p=&n,**q=&p;則以下選項中,正確的賦值語句是()A.p=1;B.*q=2;C.q=p;D.*p=5;

45.若有說明語句:charch='\x41';,則ch中______。

A.包含4個字符B.包含2個字符C.包含1個字符D.字符個數(shù)不確定,說明不正確

46.若在fopen函數(shù)中使用文件的方式是"wb+",該方式的含義是()

A.為讀/寫打開一個文本文件

B.為輸出打開一個文本文件

C.為讀/寫建立一個新的文本文件

D.為讀/寫建立一個新的二進制文件

47.已知inta=2,b=3;則執(zhí)行表達式a=a<b后,變量a的值為()。

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

48.在下列敘述中,正確的一條是______。A.if(表達式)語句中,表達式的類型只限于邏輯表達式

B.語句“goto12;”是合法的

C.for(;;)語句相當于while(1)語句

D.break語句可用于程序的任何地方,以終止程序的執(zhí)行

49.若有如下程序:ints[3][3]={'a','b','C','d','e','f','g','h','i'},*t;main(){t:(int*)malloc(sizeof(int));sub(t,s);printf("%c\n",*t);}sub(int*p,intb[][3]){*p=b[2][1];}則程序運行后的輸出結(jié)果是()。

A.dB.eC.hD.b

50.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),

A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定

51.有定義語句:intx,y;若要通過scanf("%d,%do,&x,&y);語句使變量x得到數(shù)值11,變量y得到數(shù)值12,下面四組輸入形式中,錯誤的是

A.1112<回車>B.11,12<回車>C.11,12<回車>D.11,<回車>12<回車>

52.有以下程序:voidsum(int*A){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=2;i>=0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}執(zhí)行后的輸出結(jié)果是

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

53.算法的時間復雜度是指______。

A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運算次數(shù)D.算法程序中的指令條數(shù)

54.有以下程序#include.<string.h>main(){char*p="abcde\ofghjik\0";printf("%d\n",strlen(p));}程序運行后的輸出結(jié)果是

A.12B.15C.6D.5

55.有以下程序

#include

main()

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

fp=fopen("d1.dat","w");

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

fclose(fp);

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

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

fclose(fp);}

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

A.2030B.2050C.3050D.3020

56.運行以下程序后,如果從鍵盤上輸入6514<回車>,則輸出結(jié)果為______。main(){intm,n;printf("Enterm,n:");scanf("%d%d",&m,&n);while(m!=n){while(m>n)m-=n;while(n>m)n-=m;}printf("m=%d\n",m);}

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

57.以下合法的賦值語句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

58.為用戶與數(shù)據(jù)庫系統(tǒng)提供接口的語言是

A.高級語言B.數(shù)據(jù)定義語言(DDL)C.數(shù)據(jù)操縱語言(DML)D.匯編語言

59.在關(guān)系數(shù)據(jù)庫中,用來表示實體之間聯(lián)系的是

A.樹形結(jié)構(gòu)B.網(wǎng)狀結(jié)構(gòu)C.線性表D.二維表

60.函數(shù)fun的返回值是fun(char*a,char*b){intnum=0,n=0;while(*(a+num)!='\0')num++;while(b[n]){*(a+num)=b[n];num++;n++;}returnnum;}

A.字符串a(chǎn)的長度B.字符串b的長度C.字符串a(chǎn)和b的長度之差D.字符串a(chǎn)和b的長度之和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論