2021-2022年內(nèi)蒙古自治區(qū)通遼市全國計算機(jī)等級考試C語言程序設(shè)計重點匯總測試卷(含答案)_第1頁
2021-2022年內(nèi)蒙古自治區(qū)通遼市全國計算機(jī)等級考試C語言程序設(shè)計重點匯總測試卷(含答案)_第2頁
2021-2022年內(nèi)蒙古自治區(qū)通遼市全國計算機(jī)等級考試C語言程序設(shè)計重點匯總測試卷(含答案)_第3頁
2021-2022年內(nèi)蒙古自治區(qū)通遼市全國計算機(jī)等級考試C語言程序設(shè)計重點匯總測試卷(含答案)_第4頁
2021-2022年內(nèi)蒙古自治區(qū)通遼市全國計算機(jī)等級考試C語言程序設(shè)計重點匯總測試卷(含答案)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021-2022年內(nèi)蒙古自治區(qū)通遼市全國計算機(jī)等級考試C語言程序設(shè)計重點匯總測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有以下程序

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

A.3B.7C.6D.10

2.有兩個關(guān)系R和T如下:

則由關(guān)系R得到關(guān)系T的操作是()。A.選擇B.投影C.交D.并

3.閱讀下面程序段,則執(zhí)行后的結(jié)果為#include"stdio.h"main(){intm=4,n=2,k;k=fun(m,n);printf("%d\n",k);}fun(intm,intn){return(m*m*m-n*n*n);}

A.64B.8C.56D.0

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

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

A.ABCDEFB.DBEAFCC.ABDECPD.DEBFCA

5.設(shè)x,y,t均為int型變量,執(zhí)行語句:

x=y=3;

t=++x||++y;

完成后,y的值為A.A.不確定B.4C.3D.1

6.軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是()。

A.概要設(shè)計B.軟件設(shè)計C.可行性研究和計劃制定D.需求分析

7.可用作C語言用戶標(biāo)識符的一組標(biāo)識符是()。A.voiddefine+WORDB.a3_b3_123YNC.for-abcCaseD.2aDOsizeof

8.計算機(jī)系統(tǒng)的組成是______。

A.主機(jī)、外設(shè)B.運(yùn)算器、控制器C.硬件系統(tǒng)和軟件系統(tǒng)D.CPU、內(nèi)存儲器

9.有以下程序:#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i+=2)for(j=i+2;j<n;j+=2)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa,10);for(i=0;i<10;i++)printf("%d.",aa[i]);printf("\n");}其輸出結(jié)果是()。

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

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

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

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

10.有以下程序:#include<stdi0.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;)printf("%d,%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是()。A.9,18B.8,11C.7,11D.10,14

11.

12.有以下函數(shù):

此函數(shù)的功能是()。A.比較p和q所指字符串的大小

B.計算p和q所指字符串的長度差

C.將q所指字符串連接到P所指字符串后面

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

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

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

14.

15.若有定義“intw[3][5];”,則以下不能正確表示該數(shù)組元素的表達(dá)式是()。

A.*(&w[0][0]+1)B.*(*w+3)C.*(*(w+1))D.*(w+1)[4]

16.以下程序的功能是()。#include<stdio.h>main(){FILE*fPl;*fp2;fp1:fopen("file1","r");fp2:fopen("file2","w");while(!Feof(fP1))fputc(fgetc(fP1),fp2);fclose(fP1);fclose(fp2);}

A.將磁盤文件的內(nèi)容顯示在屏幕上

B.將兩個磁盤文件合為一個

C.將一個磁盤文件復(fù)制到另一個磁盤文件中

D.將兩個磁盤文件合并后送屏幕

17.以下敘述中正確的是()。

A.算法的時間復(fù)雜度是指算法在執(zhí)行過程中基本運(yùn)算的次數(shù)

B.算法的時間復(fù)雜度是指算法執(zhí)行所需要的時間

C.算法的時間復(fù)雜度是指算法執(zhí)行的速度

D.算法的復(fù)雜度是指算法控制結(jié)構(gòu)的復(fù)雜程度

18.從未排序序列中依次取出元素與已排序序列中的元素作比較,將取出的元素放入已排序序列中的正確位置上,此方法稱為______。

A.歸并排序B.選擇排序C.交換排序D.插入排序

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

A.2.500000B.2.7500OOC.3.500000D.0.000000

20.C語言結(jié)構(gòu)體類型變量在程序執(zhí)行期間,()。

A.所有成員一直駐留在內(nèi)存中B.沒有成員駐留在內(nèi)存中C.部分成員駐留在內(nèi)存中D.只有一個成員駐留在內(nèi)存中

二、2.填空題(20題)21.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、______和處理過程。

22.當(dāng)運(yùn)行以下程序時,輸入abcd,程序的輸出結(jié)果是:()。

insert(charstr[])

{inti;

i=strlen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

scanf("%s",str);insert(str);

}

23.下面程序的運(yùn)行結(jié)果是:【】。

#defineN10

#defines(x)x*x

#definef(x)(x*x)

main()

{inti1,i2;

i1=1000/s(N);i2=1000/f(N);

printf(“%d%d\n”,i1,i2);

}

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

25.下面程序執(zhí)行后輸出的結(jié)果是【】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

26.函數(shù)fun的返回值是【】

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')mm++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

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

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{

inti;

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

{…}

}

28.以下程序建立一個帶有頭結(jié)點的單向鏈表,鏈表結(jié)點中的數(shù)據(jù)通過鍵盤輸入,當(dāng)輸入數(shù)據(jù)為-1時,表示輸入結(jié)束(鍵表頭結(jié)點的data域不放數(shù)據(jù),表空的條件是ph->next==NULL),請?zhí)羁铡?/p>

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));

p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");

scanf("%d",&a);

while(a!=-1)

{p=(structlist*)malloc(sizeof(structlist));

【】=a;q->next=p;【】=p;scanf("%d",&a);}

p->next='\0';return(ph);}

main()

{structlist*head;head=creatlist();}

29.下面的程序?qū)崿F(xiàn)字符串的復(fù)制。

voidcopy_string(from,to)

【】;

{for(;*from;from++,to++)

*to=*from;

【】;

}

main()

{char*a="Iamwang",*b="youareLi";

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

【】;

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

}

30.排序是計算機(jī)程序設(shè)計中的一種重要操作,常見的排序方法有插入排序、______和選擇排序。

31.表示條件;10<x<100或x<0的C語言表達(dá)式是【】。

32.若有說明chars1[]="Thatgirl",s2[]="isbeautiful";則使用函數(shù)strcmp(s1,s2)后,結(jié)果是______。

33.結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。

34.mystrlen函數(shù)的功能是計算str所指字符串的長度,并作為函數(shù)值返回。請?zhí)羁铡?/p>

intmystrlen(char*str)

{inti;

for(i=0;【】!='\0';i++);

return(i);}

35.下列程序中的數(shù)組a包括10個整數(shù)元素,分別將前項和后項之和存入數(shù)組b,并按每行4個元素輸出數(shù)組b。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

______;

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

{if(i%4=0)printf("\n");

printf("%3d",b[i]);

}

}

36.當(dāng)調(diào)用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳遞的是【】。

37.四條語句:x++;、++x;、x=x+1;、x=1+x;,執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句(不得與列舉的相同)【】。

38.設(shè)一棵完全二叉樹共有700個結(jié)點,則在該二叉樹中有【】個葉子結(jié)點。

39.以下程序段用于構(gòu)成一個簡單的單向鏈表。請?zhí)羁铡?/p>

struetSTRU

{intx,y;

floatrate;

【】p;

}a,b;

a.x=0;a.y=0;a.rate=0;a.p=&b;

b.x=0;b.y=0;b.rate=0;b.p=NULL;

40.對于軟件測試,從是否需要執(zhí)行被測軟件的角度,可以分為靜態(tài)測試和動態(tài)測試。代碼檢查屬于______測試。

三、1.選擇題(20題)41.已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。以下不能將變量c中的大寫字母轉(zhuǎn)換為對應(yīng)小寫字母的語句是

A.c=(c-′A′)%26+′a′B.c=c+32C.c=c-′A′+′a′D.c=(′A′+c)%26-′a′

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

43.請讀程序片段:inti=65536;printf("%d”\n”,i;上面程序片段的輸出結(jié)果是()

A.65536B.0C.有語法錯誤,無輸出結(jié)果D.-l

44.下列敘述中正確的是A.break語句只能用于switch語句

B.在switch語句中必須使用default

C.break語句必須與switch語句中的case配對使用

D.在switch語句中,不一定使用break語句

45.下列程序段的輸出結(jié)果是______。int**pp,*p;inta=10,b=20;p=&a;pp=&p;p=&b;printf("%d,%d\n",*p,**pp);

A.10,20B.10,10C.20,20D.20,10

46.若有定義inta=5,b=7;,則表達(dá)式a%=(b%2)運(yùn)算后,a的值為()。

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

47.若進(jìn)棧序列為1、2、3、4、5,并且在它們進(jìn)棧的過程中可以進(jìn)行出棧操作,那么不可能是出棧序列的是______。

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

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

A.屬性B.關(guān)系C.鍵D.域

49.下面程序段的輸出結(jié)果是()。charstr[]="ABC",*p=str;Printf("%d\n",*(p+3));

A.67B.0C.字符'C'的地址D.字符'C'

50.有如下說明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為9的表達(dá)式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

51.請選出以下語句的輸出結(jié)果()printf("%d\n,strlen("\t\"065\xff\n"));

A.5B.14C.8D.輸出項不合法,無正常輸出

52.若有說明:inta[][3]={0,0};則不正確的敘述是()。

A.數(shù)組a的每個元素的初值都是0

B.數(shù)組a的第一維大小為1

C.數(shù)組a的行數(shù)為1

D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

53.下列選項中,不是一個算法的基本特征的是()。

A.完整性B.可行性C.有窮性D.擁有足夠的情報

54.x,y,z被定義為int型變量,若從鍵盤給x,y,z輸入數(shù)據(jù),正確的輸入語句是

A.INPUTx、v、z;

B.scanf("%d%d%d",&x,&y,&z);

C.scanf("%d%d%d",x,y,z);

D.read("%d%d%d",&x,&y,&z);

55.在設(shè)計程序時,應(yīng)采納的原則之—是______。

A.程序結(jié)構(gòu)應(yīng)有助于讀者理解B.不限制goto語句的使用C.減少或者取消注解行D.程序越短越好

56.有以下程序:structs{intx,y;)data[2]={10,100,20,200);main(){structs*p=data;printf("%d\n",++(p->x));}程序運(yùn)行后的輸出結(jié)果是()。

A.10B.11C.20D.21

57.下面程序段的運(yùn)行結(jié)果是chara[]="lanuage",*p;p=a;while(*p!='u'){printf("%c",*p-32);p++;}

A.LANGUAGEB.languageC.LAND.langUAGE

58.有以下程序;charfun(charx,chary){if(x<y)returnx;returny;}main(){inta='9',b='8',c='7';printf("%c\n",fun(fun(a,B),fun(b,C)));}程序的執(zhí)行結(jié)果是

A.函數(shù)調(diào)用出錯B.8C.9D.7

59.在C語言中,下列關(guān)于文件操作的敘述正確的是()。

A.對文件操作必須先關(guān)閉文件B.對文件操作必須先打開文件C.對文件操作順序沒有統(tǒng)一規(guī)定D.以上全錯

60.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機(jī)無關(guān)的是數(shù)據(jù)的()。A.存儲結(jié)構(gòu)B.物理結(jié)構(gòu)C.邏輯結(jié)構(gòu)D.物理和存儲結(jié)構(gòu)

四、選擇題(20題)61.

62.以下程序的輸出結(jié)果為

main()

{

char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};

char**p;

inti;

p=alpha;

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

printf("%s",p[i]);

printf("\n");

}

A.ABCDEFGHIJKLB.ABCD

C.ABCDEFGHIJKLMNOPD.AEIM

63.

64.有如下程序段

#include"stdio.h"

voidfun(int*a,int*b,int*c,int*d,int*e)

{inti,j,k,m;

for(i=0;i<*a;i++)

for(j=0;j<*b;j++)

for(k=0;k<*c;k++)

for(m=0;m<*d;m++)

++*e;

}

main()

{inta=10,b=10,c=10,d=10,e=0;

fun(&a,&b,&c,&d,&e);

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

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

A.10000B.1000

C.100D.0

65.

66.執(zhí)行下列程序后,變量a,b,C的值分別是()。intx=5,y=4;inta,b,c;a=(--x==y++)?X:++y;b=++x:c=y:A.a=5,b=5,c=5B.a=4,b=5,c=5C.a=5,b=6,c=5D.a=1,b=5,c=6

67.下列敘述中正確的是()。A.在switch語句中,不一宗使用break語句

B.在switch語句中,必須使用default

C.break語句必須與swifth語句中的case配對使用

D.break語句只能用于swifth著句

68.下列程序的輸出結(jié)果是()。#include<stdio.h>main{inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1;case2:a+=2;default:a+=3;}}printf("%d",a);}A.19B.1C.6D.8

69.

70.軟件按其功能進(jìn)行分類,可分為:應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于系統(tǒng)軟件的是

A.文字編輯軟件B.網(wǎng)頁瀏覽器C.?dāng)?shù)據(jù)庫管理系統(tǒng)D.視頻播放軟件

71.

72.有以下定義:

73.在軟件設(shè)計中,不屬于過程設(shè)計工具的是()。

A.PDLB.DFD圖C.PAD圖D.N—S圖

74.以下程序的輸出結(jié)果是______。#definef(x)x*xmain(){inta=6,b=2,c;c=f(a)/f(b);printf("%d\n",c);}

A.9B.6C.36D.18

75.C語言中以只讀方式打開一個文件應(yīng)選擇_______________參數(shù)。

A.“r”B.“w”C.“rb”D.“a”

76.

77.已知大寫字母A的ASCII碼是65,小寫字母a的ACSII碼是97。下列能將變量C中的大寫字母轉(zhuǎn)換為對應(yīng)小寫字母的語句是()。

A.c=(c-'A')%26+'A'B.c=c+32C.c=c-'A'+'A'D.c=('A'+C)%26-'a'

78.在c語言中,變量的隱含存儲類別是()。

A.autoB.staticC.externD.無存儲類別

79.以下程序擬實現(xiàn)計算sum=1+1/2+1/3+…+1/50。

程序運(yùn)行后,不能得到正確結(jié)果,出現(xiàn)問題的語句是()。

A.sum+=1/i;B.while(i<50);C.sum.=1.0;D.i++;

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

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

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:計算并輸出k以內(nèi)最大的10個能被15或18整除的自然數(shù)之和,k的值由主函數(shù)傳人。若k的值為800,則函數(shù)的值為7605。

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

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

試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),其功能是:將str所指字符串中除下標(biāo)為偶數(shù)、同時ASCⅡ碼值為奇數(shù)的字符外,其余的字符都刪除,串中剩余字符所形成的一個新串放在t所指的數(shù)組中。例如,若str所指字符串中的內(nèi)容為ABCDEFG12345,其中字符8的ASCⅡ碼值為偶數(shù),所在元素的下標(biāo)為奇數(shù),因此必須刪除;而字符A的ASCⅡ碼值為奇數(shù),所在數(shù)組中的下標(biāo)為偶數(shù),因此不應(yīng)當(dāng)刪除。依次類推,最后t所指的數(shù)組中的內(nèi)容應(yīng)是ACEG。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所寫的若干語句。試題程序:

參考答案

1.D第—個if語句a!=1條件為假,所以執(zhí)行dse后的語句r=1。第二個if語句b==2條件成立,執(zhí)行r+=2,r的值變?yōu)?,第三個if語句c!=3條件為假,所以不做任何操作。執(zhí)行下面的r+=3操作,r的值變?yōu)?。判斷第四個訌條件,d==4條件成立,執(zhí)行r+=4操作,結(jié)果為10。

2.A

3.C解析:如果沒有指明函數(shù)值類型,則默認(rèn)函數(shù)返回值的類型為int型。注意:順序程序結(jié)構(gòu)的執(zhí)行過程。

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

5.Ct=++x或++y,當(dāng)++x不為0的時候,即++x為真,則不需要再繼續(xù)判斷++y,那么y就不再執(zhí)行自加,因此y=3.

6.D\n通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護(hù)到停止使用、退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。軟件生命周期的主要活動階段為:可行性研究和計劃制定。確定待開發(fā)軟件系統(tǒng)的開發(fā)目標(biāo)和總的要求,給出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成開發(fā)任務(wù)的實施計劃。

\n需求分析。對待開發(fā)軟件提出的需求進(jìn)行分析并給出詳細(xì)定義,即準(zhǔn)確地確定軟件系統(tǒng)的功能。編寫軟件規(guī)格說明書及初步的用戶手冊,提交評審。

\n軟件設(shè)計。系統(tǒng)設(shè)計人員和程序設(shè)計人員應(yīng)該在反復(fù)理解軟件需求的基礎(chǔ)上,給出軟件的結(jié)構(gòu)、模塊的劃分、功能的分配以及處理流程。

\n軟件實現(xiàn)。把軟件設(shè)計轉(zhuǎn)換成計算機(jī)可以接受的程序代碼。即完成源程序的編碼,編寫用戶手冊、操作手冊等面向用戶的文檔,編寫單元測試計劃。

\n軟件測試。在設(shè)計測試用例的基礎(chǔ)上,檢驗軟件的各個組成部分。編寫測試分析報告。

\n運(yùn)行和維護(hù)。將已交付的軟件投入運(yùn)行,并在運(yùn)行使用中不斷地維護(hù),根據(jù)新提出的需求進(jìn)行必要而且可能的擴(kuò)充和刪改。

\n本題答案是D)。

\n

7.B

8.C

9.C解析:sort函數(shù)的功能實際上是對數(shù)組中奇數(shù)位置上的數(shù)進(jìn)行從大到小排序。排序后的結(jié)果應(yīng)該為9,2,7,4,5,6,3,8,1,10。

10.D第一次執(zhí)行循環(huán)前,a=1,滿足a<8,執(zhí)行循環(huán)后,b=3,a=3。執(zhí)行完a++操作后,a=4。由于a<8,執(zhí)行第二次循環(huán)后,b=7,a=6,執(zhí)行完a++操作后,a=7。由于a<8,執(zhí)行第三次循環(huán)后,b=14,a=9,執(zhí)行完a++操作后a=10。此時不滿足a<8,跳出循環(huán)。

11.C

12.A函數(shù)fun接收兩個整型指針變量作為參數(shù),通過while循環(huán),比較p和q對應(yīng)位上的各個字符,如果字符相同,繼續(xù)向后比較;否則循環(huán)結(jié)束,返回第1次對應(yīng)不同字符的ASCII差值。所以函數(shù)fun是對p和q指向的字符串進(jìn)行比較,其大小是按第1個對應(yīng)位置上不同字符的ASCII值來比較的。本題答案為A選項。

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

14.B

15.DA選項中,“*(&w[0][0]+1)”表示“w[0][1]”;B選項中,“*(*w+3)”表示“w[0][3]”;C選項中,“*(*(w+1))”表示“w[1][0]”;D選項中,“*(w+1)[4]”的正確寫法是“(*(w+1))[4]”,表示“w[1][4]”。故本題答案為D選項。

16.C解析:程序首先定義了兩個文件類型的指針fp1、fp2。為讀打開文件filel,并讓指針fp1指向該文件;為寫打開文件file2,并讓指針fp2指向該文件。循環(huán)執(zhí)行從文件file1中讀取一個字符,輸出到文件file2中,直到文件file1結(jié)束。因此程序的功能是將文件file1中的內(nèi)容復(fù)制到文件file2中。

17.A算法的時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量,其計算工作量是用算法所執(zhí)行的基本運(yùn)算次數(shù)來度量的。本題答案為A選項。

18.D

19.A

20.A解析:C語言結(jié)構(gòu)體類型變量在程序執(zhí)行期間所有成員一直駐留在內(nèi)存中。

21.數(shù)據(jù)存儲數(shù)據(jù)存儲

22.a*b*c*d*a*b*c*d*解析:字符處理函數(shù)strlen()測試字符串常量的長度,不包括‘\\0’在內(nèi)。因此,函數(shù)insert()實現(xiàn)了將字符數(shù)組中每個非‘\\0’的字符后插入字符‘*’的功能。故輸出結(jié)果是a*b*c*d*。

23.100010100010解析:首先將程序中的宏替換掉,兩處的宏替換后分別為i1=1000/10*10和i2=1000/(10*10),即i1=1000,i2=10,所以最后輸出的i1和i2的值分別為1000和10。

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

25.22解析:本題變量m既是外部變量(值是13),又是fun函數(shù)的局部變量(值為3)。函數(shù)fun(x*y-m)的值為7*5-3=32,在main函數(shù)中,fun(a,b)/m中的m應(yīng)取外部變量的值13,因此輸出2。

26.字符串a(chǎn)和b的長度之和字符串a(chǎn)和b的長度之和解析:本題首先通過第一個while循環(huán)計算字符串a(chǎn)的長度,再通過第二個循環(huán),將字符串a(chǎn)和b相連,最后返回連接后的總長度。

27.44解析:將程序中所有的宏替換掉可得:M=2+1,K=2+1*2+1/2=4,所以for循環(huán)共循環(huán)了K-1+1次,即4-1+1共4次。

28.p->dataqp->data\r\nq解析:本題考查的是鏈表這一數(shù)據(jù)結(jié)構(gòu)對結(jié)構(gòu)體變量中的數(shù)據(jù)的引用。鏈表的特點是結(jié)構(gòu)體變量中有兩個域,一個是數(shù)據(jù),一個是指向該結(jié)構(gòu)體變量類型的指針,用以指明鏈表的下一個結(jié)點。

29.char*from*to*to='\0'copy_string(ab)char*from,*to\r\n*to='\\0'\r\ncopy_string(a,b)解析:函數(shù)copy_string()用到了形參from,to是指針變量,實參a、b是字符串指針,第一個空格應(yīng)填形參說明語句“char*from,*to”。當(dāng)from所指的字符串全部復(fù)制給to所指的字符串時,有可能to所指原字符串長度大于from所指字符串長度,即可能to所指串的后面字符仍留在復(fù)制后的to所指串中。為避免這種情況,必須在from所指串復(fù)制完后,馬上給to所指串加上串結(jié)束符。因此,第二個空格應(yīng)填*to='\\0'。main()函數(shù)應(yīng)調(diào)用copy_string()函數(shù),第三個空格應(yīng)填copy_string(a,b)。

30.交換排序交換排序解析:所謂排序是指將一個無序序列整理成按值非遞減順序排列成的有序序列,常用的排序方法有:交換排序、插入排序和選擇排序。其中交換排序包括冒泡排序和快速排序,插入排序包括簡單插入排序和希爾排序,選擇排序包括直接選擇排序和堆排序。

31.(x>10&&x<100)||x<0

32.-1-1解析:strcmp(s1,s2)函數(shù)的作用是:對字符數(shù)組s2和字符數(shù)組s1進(jìn)行比較。如果s1<s2,則返回負(fù)數(shù);如果s1==s2,則返回0;如果s1>s2,則返回正數(shù)。

33.模塊化模塊化

34.*(str+i)或str[i]*(str+i)或str[i]解析:str是指針變量,它指向字符型數(shù)據(jù),在循環(huán)過程中,可以用*(str+i)來訪問字符串中的第i個元素,判斷是否是結(jié)束標(biāo)志,如果不是,i=i+1,繼續(xù)取下一個元素進(jìn)行判斷,直到*(str+i)的值為'\\0'為止,也可以用下標(biāo)的方式引用字符,如*(str+i)相當(dāng)于str[i]。

35.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:將數(shù)組a中元素a[i]與a[j+1]值相加后的值賦予數(shù)組b中元素b[i],即可實現(xiàn)將一個數(shù)組的前項和后項之和存入另一數(shù)組。

36.數(shù)組的首地址數(shù)組的首地址解析:在函數(shù)中,可以通過指針變量來引用調(diào)用函數(shù)中對應(yīng)的數(shù)組元素,此操作是通過傳遞數(shù)組的首地址來實現(xiàn)的。

37.x+=1;x+=1;解析:題面中的四條語句的作用是使x的值加1,在C中有多種方法可以對變量進(jìn)行加1操作,這里可以利用C的復(fù)合賦值運(yùn)算符+=實現(xiàn),本題答案為x+=1;。

38.350350解析:在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。在根據(jù)完全二叉樹的定義,在一棵完全二叉樹中,最多有1個度為1的結(jié)點。因此,設(shè)一棵完全二叉樹具有n個結(jié)點,若n為偶數(shù),則在該二叉樹中有n/2個葉子結(jié)點以及n/2-1個度為2的結(jié)點,還有1個是度為1的結(jié)點:若n為奇數(shù),則在該二叉樹中有[n/2]+1個葉子結(jié)點以及[n/2]個度為2的結(jié)點,沒有度為1的結(jié)點。本題中,完全二叉樹共有700個結(jié)點,700是偶數(shù),所以,在該二叉樹中有350個葉子結(jié)點以及349個度為2的結(jié)點,還有1個是度為1的結(jié)點。所以,本題的正確答案為350。

39.structSTRU*

40.靜態(tài)靜態(tài)解析:靜態(tài)測試包括代碼檢查、靜態(tài)結(jié)構(gòu)分析,代碼質(zhì)量度量等。靜態(tài)測試不實際運(yùn)行軟件。

41.D解析:C語言中,字符數(shù)據(jù)參加運(yùn)算時,實際上是其ASCII碼參與運(yùn)算。大寫字母的ASCII碼比其對應(yīng)的小寫字母的ASCII碼小32。因此大寫字母轉(zhuǎn)化為小寫字母只需將其加上32即可。所以選項B)、C)都符合條件,因為變量c中存儲的是大寫字母,所以'c-\'A\''的值一定小于26,故選項A)與選項C)的含義相同。

42.A

43.B

44.D解析:break語句除了能用于switch語句外,還可以用于循環(huán)語句中,因此選項A不正確。在switch語句中,可以使用default來執(zhí)行所有case均失配時的分支,也可以不使用default,此時若所有case均失配則跳出switch,因此選項B不正確。在switch語句中,每個case的作用就是標(biāo)出一個執(zhí)行的起點,當(dāng)符合某個case時,程序就從該case所標(biāo)出的起點處開始執(zhí)行,若沒有break語句中斷執(zhí)行的話,程序會一直執(zhí)行到switch的最后一條語句,而不是碰到下一個case就跳出switch。雖然break與case的配對使用會讓所有case分支互不重疊條理明確,但不配對使用在C語言中也是允許的。因此選項C不正確,應(yīng)該選擇D。

45.C解析:指針變量p先是指向變量a,后指向變量b,但二級指針變量始終指向指針變量p。

46.A解析:本題考查'%'運(yùn)算符的使用。運(yùn)算符'%'要求兩個運(yùn)算對象都為整型,其結(jié)果是整數(shù)除法的余數(shù)。本題中表達(dá)式ao%=(b%2)等價于a=a%o(b%2)=5%(7%2)=5%1=0。

47.D

48.B解析:關(guān)系數(shù)據(jù)庫邏輯設(shè)計的主要工作是將\ue008E-R\ue009圖轉(zhuǎn)換成指定RDBMS中的關(guān)系模式。首先,從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實體與聯(lián)系都可以表示成關(guān)系,E-R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性,實體集也可以轉(zhuǎn)換成關(guān)系。

49.B解析:本題考查指向字符串的指針變量。指針變量p指向的應(yīng)該是該字符串中的首地址,p+3指向的是字符串結(jié)束標(biāo)志'\\0'的地址,因而*(p+3)的值為0。

50.B解析:在C語言的數(shù)組元素的引用方法,我們在前面已經(jīng)講過了,比如數(shù)組元素a[0],可以用表達(dá)式*(p+0),即*p來引用,對于數(shù)組元素a[1],可以用表達(dá)式*(p+1)來引用,在這里,p+1的值就是數(shù)組元素a[1]的地址,對此地址使用“間接訪問運(yùn)算符”:*(p+1)就代表存儲單元a[1],注意:一對圓括號不可少。同樣,對于數(shù)組元素a[2],則可以用表達(dá)式。(p+2)來引用…,對于數(shù)組元素a[9],可以用表達(dá)式,(p+9)來引用。因此,當(dāng)指針變量p指向a數(shù)組的起始地址時,若0≤i<10,則數(shù)組元素a[i]可以用*(p+i)來表示。

51.A

52.D解析:本題考查給二維數(shù)組元素賦值。給二維數(shù)組元素賦值時應(yīng)注意下列兩點:①在對二維數(shù)組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0。②二維數(shù)組第一維的大小由下列規(guī)則確定;當(dāng)初值的個數(shù)能被第二維的常量表達(dá)式的值除盡時,所得商數(shù)就是第一維的大??;當(dāng)初值的個數(shù)不能被第二維的常量表達(dá)式的值除盡時,第一維的大小等于所得商數(shù)加1。

53.A解析:作為一個算法,一般應(yīng)該具有下列4個特征:(1)可行性,即考慮到實際的條件能夠達(dá)到一個滿意的結(jié)果;(2)確定性,算法中的每一個步驟都必須是有明確定義的,(3)有窮性,一個算法必須在有限的時間內(nèi)做完;(4)擁有足夠的情報。

54.B解析:scanf函數(shù)的一般格式是:

scanf(格式控制,地址表列)

該格式中,地址表列中應(yīng)是變量地址,而不是變量名。注意:調(diào)用putchar和getchar函輸出和輸入字符。

55.A解析:濫用goto語句將使程序流程無規(guī)律,可讀性差;添加的注解行有利于對程序的理解,不應(yīng)減少或取消;程序的長短要依照實際需要而定,并不是越短越好。

56.B解析:本題中定義了一個結(jié)構(gòu)體數(shù)組data[2]并初始化,主函數(shù)中定義了一個結(jié)構(gòu)體類型指針變量并讓它指向data的首地址,由于p指向第一個元素的地址,所以p->x相當(dāng)于data[0].x即為10,所以++(p->x)后的值為11。故4個選項中選項B符合題意。

57.C解析:本段程序的作用是輸出字符串“l(fā)anuage”中字母u之前的字符,并將其轉(zhuǎn)化為大寫字母。注意:如果一個字符數(shù)組用來作為字符串使用,那么在定義該字符數(shù)組時,數(shù)組的大小就應(yīng)該比它將要實際存放的最長字符多一個元素,以存放‘\\0’。

58.D解析:本題考核的知識點是函數(shù)的返回值以及返回值作為函數(shù)的參數(shù)。經(jīng)過分析得出函數(shù)fun()的功能是比較形參x和形參y的大小,返回較小的一個.函數(shù)fun()有兩個參數(shù).本題中,首先定義了三個整型變量a、b和c,分別賦初值為9、8和7.然后執(zhí)行函數(shù)fun(fun(a,b),fun(b,c))。在該函數(shù)中分別將fun(a,b)和fun(b,C)函數(shù)的返回值作為該函數(shù)的兩個實參。在函數(shù)fun(a,b)中,由于a>b,故返回較小值b即8,在函數(shù)fun(b,C)中,由于b<c,故返回較小值c即為7,因此調(diào)用函數(shù)fun(fun(a,b),fun(b,C))相當(dāng)于執(zhí)行函數(shù)fun(8,7),返回較小值即7。所以,4個選項中選項D符合題意。

59.B解析:本題考查對文件的操作。文件打開后才可以對文件進(jìn)行操作,使用結(jié)束后要關(guān)閉文件。對文件的操作都是順序讀寫,即從文件的第一個數(shù)據(jù)開始,依次進(jìn)行讀寫。

60.C數(shù)據(jù)結(jié)構(gòu)概念一般包括3個方面的內(nèi)容,數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)(物理結(jié)構(gòu))及數(shù)據(jù)上的運(yùn)算集合。數(shù)據(jù)的邏輯結(jié)構(gòu)只抽象地反映數(shù)據(jù)元素之間的邏輯關(guān)系,即數(shù)據(jù)元素之間的前后件關(guān)系,而不管它在計算機(jī)中的存儲表示形式。

61.A

62.C指針數(shù)組*alpha[6]實際上相當(dāng)于一個二維數(shù)組,而p是一個指向指針的指針,p=alpha后,引用p[x]便是引用數(shù)組*alpha[6]中的第x個數(shù)組元素的首地址,所以打印的結(jié)果應(yīng)當(dāng)為ABCDEFGHIJKLMNOP。

63.A

64.A在本題中,程序首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有五個整型的指針形參變量,然后通過一個四層循環(huán)來操作++*e;語句,由于*與++運(yùn)算符的優(yōu)先級一樣,它們都是自右至左結(jié)合的操作,因此,++*e等價于++(*e),這個操作可描述為:先用地址取值,然后對其進(jìn)行自加,由于是通過傳址傳值法的,因此,還需要將相加后的結(jié)果傳遞到實參中。

在主函數(shù)中,定義五個整型變量并分別賦初值,然后調(diào)用fun函數(shù),傳遞的參數(shù)是剛定義的五個整型變量的地址,采用的是傳址傳值法,能為實參帶回一個結(jié)果值。從fun函數(shù)中我們不難看出,當(dāng)變量a,b,c,d分別為10時,循環(huán)總共執(zhí)行10000次,即自加進(jìn)行了10000次,而且每次自加后都改變了實參的結(jié)果。因此,循環(huán)結(jié)束后,變量e的值為10000。本題的正確答案是A。

65.B

66.B本題考查自加(++)、自減(--)運(yùn)算符的使用?!?+x,--x”,在變量x前使用,先使X的值加1或者減1,再使用此時的表達(dá)式的值參與運(yùn)算;“x++,x--”,先把使用X的值參與運(yùn)算,在使用X之后,再使x的值加1或者減1。對于表達(dá)式--x=4,y++=4,兩者相等,--x=y++為真,所以a=x=4,執(zhí)行完此語句后y的值是5。第2個表達(dá)式b=++x,x的值先加1,然后賦給b,即b=x+1=5;第一個表達(dá)式c=y=5。故B正確。

67.Adefault語句在switch語句中可以省略,因此B)錯誤;switch語句中并非每個ca$e后都需要使用break語句,因此c)錯誤;break語句還可以用于fbr等循環(huán)結(jié)構(gòu)中,因此D)錯誤。故本題答案為A)。

68.A本題考查switch語句。當(dāng)i一1時,執(zhí)行case1,因為沒有遇到break語句,所以依次往下運(yùn)行,“a=a+2=2,a=a+3=5”;當(dāng)i=2時,執(zhí)行case2,因為沒有遇到break語句,所以依次往下執(zhí)行,“a=a+2=7,a=a+3=10”;當(dāng)i=3時,執(zhí)行case3,a=a+1=11,因為沒有遇到break語句,所以依次往下運(yùn)行,a—a+2—13,a—a+3一l6:當(dāng)i=4時,執(zhí)行default,a=a+3=19,結(jié)束循環(huán)。

69.A

70.C本題考查不同種類軟件的劃分。

應(yīng)用軟件是用戶可以使用的各種程序設(shè)計語言,以及用各種程序設(shè)計語言編制的應(yīng)用程序的集合,分為應(yīng)用軟件和用戶程序。應(yīng)用軟件包括辦公室軟件(文書處理器、檔案管理系統(tǒng)、文本編輯器)、互聯(lián)網(wǎng)軟件(

溫馨提示

  • 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

提交評論