2021年安徽省阜陽市全國計算機等級考試C語言程序設計真題二卷(含答案)_第1頁
2021年安徽省阜陽市全國計算機等級考試C語言程序設計真題二卷(含答案)_第2頁
2021年安徽省阜陽市全國計算機等級考試C語言程序設計真題二卷(含答案)_第3頁
2021年安徽省阜陽市全國計算機等級考試C語言程序設計真題二卷(含答案)_第4頁
2021年安徽省阜陽市全國計算機等級考試C語言程序設計真題二卷(含答案)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2021年安徽省阜陽市全國計算機等級考試C語言程序設計真題二卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下程序運行時若要正確輸出函數的入口地址和輸入數的絕對值,應在程序空缺處填入的正確選項是

abs(intx)

{if(x>=0)returnx;

elsereturn-x;}

main()

{inty,z,(*p)(intx)=abs;

scanf("%d",&y);

z=(*p)(y);

;}

A.printf("%d%d\n",&p,z)

B.printf("%d%d\n",p,z)

C.printf("%d%d\n",*p,z)

D.printf("%d%d\n",p,*z)

2.有以下程序:#include<stdio.h>doublef(doublex);main(){doublea=0;inti;for(i=0;i<30;i+=10)a+=f((double)i);printf(“%3.0f\n”,a);}doublef(doublex)}returnx*x+1;}程序的運行結果是()。

A.500B.401C.503D.1404

3.已知a,b均被定義為double型,則表達式:a=5/2的值為()。

A.1B.3C.3.0D.2.5

4.在有序雙向鏈表中定位刪除一個元素的平均時間復雜度為()

A.O(1)B.O(N)C.O(logN)D.O(N*logN)

5.

6.#define能作簡單的替代,用宏來替代計算多項式5*x*x+5*x+5的值的函數f,正確的宏定義語句為()。

A.#definef(x)5*x*x+5*x+5

B.#definef5*X*x+5*x+5

C.#definef(a)(5*a*a+5*a+5)

D.#define(5*x*x+5*x+5)f(x)

7.

8.設有二維數組A7×8,每個數據元素占8個字節(jié)存儲單元,順序存放,A第一個元素A0,0的存儲地址為1000,則數組A占用的存儲量為()字節(jié)。

A.448B.56C.56D.64

9.

10.在調用函數時,如果實參是簡單變量,它與對應形參之間的數據傳遞方式是().

A.地址傳遞B.單向值傳遞C.由實參傳給形參,再由形參傳回實參D.傳遞方式由用戶指定

11.以下敘述中錯誤的是A.gets函數用于從終端讀入字符串

B.getchar函數用于從磁盤文件讀入字符

C.fputs函數用于把字符串輸出到文件

D.fwrite函數用于以二進制形式輸出數據到文件

12.執(zhí)行下列程序中的輸出語句后,a的值是()。main{inta;printf(“%d\n”,(a=2*3,a*5,a+7));}A.17B.37C.6D.13

13.下面關于編譯預處理的命令行中,正確的是()。

A.#defineintINT

B.##defineeps0.001

C.##DEFINETRUE

D.#defineE2.88

14.

15.fun函數的功能是:通過鍵盤輸入給x所指的整型數組所有元素賦值。在下劃線處應填寫的是()。#include<stdio.h>#defineN5voidfun(intx[N]){intm;for(m=N-t;m>=O;m-)scanf("%d",____);}A.%&X[++m]B.&x[m+1]C.x+(m++)D.x+m

16.第

4

棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是

A.ABCEDB.DCBEAC.DBCEAD.CDABE

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

A.intn1=n2=1;

B.charC=99;

C.floatf=f+1;

D.doublex=1.2E5.6;

18.以下選項中,不能作為合法常量的是

A.1.234e04B.1.234e0.4C.1.23E+4D.1.234e0

19.對以下四個序列用直接插入排序方法由小到大進行排序時,元素比較次數最少的是()

A.89,27,35,78,41,15

B.27,35,41,16,89,70

C.15,27,46,40,64,85

D.90,80,45,38,30,25

20.若函數中有定義語句:inta;,則()。

A.系統(tǒng)將自動給a賦初值為0B.系統(tǒng)將自動給a賦初值一lC.這時a中的值無意義D.這時a中無任何值

二、2.填空題(20題)21.以下程序運行后的輸出結果是【】。

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b+*;break;

}

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

}

22.以下程序的輸出是【】。

main()

{

charstr1[]="Howdoyoudo",*p1=str1;

strcpy(str1+strlen(str1)/2,"esshe");

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

}

23.以下程序運行后的輸出結果是【】。

#include<stdio.h>

main()

{ihtx=0210;printf("%x\n",x);

}

24.下列程序段的輸出結果是【】。

main()

{charb[]="Hello,you";

b[5]=0;

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

}

25.以下程序的功能是從鍵盤輸入若干學生的成績,并輸出最高成績和最低成績,當輸入負數時結束。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{floatx,amax,amin;

scanf("%f",&x);

amax=x;amin=x;

while(【】)

{if(x>amax)amax=x;

else

if(【】)amin=x;

scanf("%f",&x);

}

printf("\namax=%f\namin=%f\n",amax,amin);

}

26.以下程序運行后的輸出結果是______。

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

}

27.下面程序執(zhí)行后k的值為【】。

inta=1,b=2,c=3,d=4,k;

k=a>b?a:c>d?c:d

28.若按功能劃分,軟件測試的方法通常分為白盒測試方法和【】測試方法。

29.排序是計算機程序設計中的一種重要操作,常見的排序方法有插入排序、【】和選擇排序等。

30.以下函數的功能是刪除字符串s中的所有數字字符。請?zhí)羁铡?/p>

voiddele(char*s)

{

intn=0,i;

for(i=0,s[i];i++)

if(【】)

s[n++]=s[i];

s[n]=【】;

}

31.模塊測試時,要為每個被測試的模塊另外設計兩類模塊:驅動模塊和承接模塊(樁模塊)。其中______的作用是將測試數據傳送給被測試的模塊,并顯示被測試模塊所產生的結果。

32.在關系模型中,把數據看成一個二維表,每一個二維表稱為一個______。

33.在最壞情況下,冒泡排序的時間復雜度為【】。

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

35.計算機指令是由【】和地址碼組成的。

36.關系數據庫管理系統(tǒng)能實現的專門關系運算包括選擇、連接和【】。

37.以下程序的輸出結果是【】。

main()

{inta=177;

printf(“%o\n”,A);

}

38.以下程序的功能是:刪去一維數組中所有相同的數,使之只剩一個。數組中的數已按由小到大的順序排列,函數返回刪除后數組中數據的個數。

例如,若一維數組中的數據是:

2223445666677899101010

刪除后,數組中的內容應該是:

2345678910。

請?zhí)羁铡?/p>

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1][

39.以下函數sstrcat的功能是實現字符串的連接,即將t所指字符串復制到s所指字符串的尾部。例如:,所指字符串為abed,t所指字符串為efgh,調用函數sstrcat后s所指字符串為abcdefgh。請?zhí)羁铡?/p>

#inehde<stdio.h>

#include<string.h>

voidsstuat(char*9,char*t)

{intn;

n=strlen(s);

while(*(s+n)=【】){s++;t++;}

40.以下程序運行后的輸出結果是【】。

main()

{

intp=30;

printf("%d\n",(p/3>0?p/10:p%3));

}

三、1.選擇題(20題)41.排序方法中,將整個無序序列分割成若干小的子序列并分別進行插入排序的方法,稱為______。

A.希爾排序B.冒泡排序C.插入排序D.選擇排序

42.有以下程序

#include<stdio.h>

main()

{inta[]={1,2,3,4},y,*p=&a[3];

--p;y=*p;printf("y=%d\n",y);

}

程序的運行結果是

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

43.若已定義:inta=25,b=14,c=19;執(zhí)行以下三目運算符(?:)所構成的語句:a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);輸出結果是()。

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

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

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

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

44.C語言庫函數fgets(str,n,fp)的功能是______。

A.從fp指向的文件中讀取長度n的字符串存入str旨向的內存

B.從fp指向的文件中讀取長度不超過n-1的字符串存入str指向的內存

C.從fb指向的文件中讀取n個字符串存入str指向的內存

D.從str讀取至多n個字符到文fp

45.下列程序的輸出結果是()。#include<stdio.h>voidmain(){inta=0,b=1,C=2;if(++a>0||++b>0)++c;printf("%d,%d,%d",a,b,C);}

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

46.有以下程序:#include<stdio.h>main(){inti,n=0;for(i=2;i<5;i++){do{if(i%3)continue;n++;}while(!i);n++;}printf("n=%d\n",n);}程序執(zhí)行后的輸出結果是()。

A.n=5B.n=2C.n=3D.n=4

47.以下程序中函數reverse的功能是將a所指數組中的內容進行逆置:voidreverse(inta[],intn){inti,t;for(i=0;i<n/2l;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf("%d\n",s);}程序運行后的輸出結果是()。

A.22B.10C.34D.30

48.fgetc函數的作用是從指定文件讀入一個字符,該文件的打開方式必須是______。

A.只讀B.追加C.讀或讀寫D.以上均正確

49.下面程序的輸出是______。main(){intk=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}

A.k=11,k=12,k=11

B.k=11,k=13,k=13

C.k=11,k=013,k=0xb

D.k=11,k=13,k=B

50.軟件需求分析階段的工作,可以分為4個方面:需求獲取、需求分析、編寫需求規(guī)格說明書以及()。

A.階段性報告B.需求評審C.總結D.都不正確

51.若有說有:intn=2,*p=&n,*q=p;,則以下非法的賦值語句是

A.P=q;B.*p=*q;C.n=*q;D.p=n;

52.算法的空間復雜度是指()。

A.算法程序的長度B.算法程序中的指令條數C.算法程序所占的存儲空間D.算法執(zhí)行過程中所需要的存儲空間

53.若變量a是int類型,并執(zhí)行了語句:a='A'+1.6;則正確的敘述是()。

A.a的值是字符'C'B.a的值是浮點型C.不允許字符型和浮點型相加D.a的值是字符'A'的ASCII碼值加上1

54.以下選項中屬于C語言的數據類型是_______。

A.復數型B.邏輯型C.雙精度型D.集合型

55.下面程序的運行結果是()。#include<stdio.h>#include<string.h>main(){char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}

A.正數B.負數C.零D.不確定的值

56.在C語言中,while和do…while循環(huán)的主要區(qū)別是()。

A.do…while的循環(huán)體不能是復合語句

B.do…while允許從循環(huán)體外轉到循環(huán)體內

C.while的循環(huán)體至少被執(zhí)行一次

D.do…while的循環(huán)體至少被執(zhí)行一次

57.數據處理的最小單位是()。

A.數據B.數據元素C.數據項D.數據結構

58.有定義語句:chars[10];,若要從終端給s輸入5個字符,錯誤的輸入語句是

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

59.下面程序main(){intx=32;printf("%d\n",x=x<<1);}的輸出是______。

A.100B.160C.120D.64

60.設q1和q2是指向一個float型一維數組的指針變量,k為float型變量,則不能正確執(zhí)行的語句是()。

A.k=*q1+*q2;B.q1=k;C.q1=q2;D.k=*q1*(*q2);

四、選擇題(20題)61.

62.

63.

64.下列定義數組的語句中,正確的是()。

65.一個棧中初始元素依次為A、B、C、D、E?,F將元素1、2、3、4、5依次入棧,然后將所有的元素依次出棧,則元素出棧的順序是

A.12345ABCDEB.EDCBA54321C.ABCDE12345D.54321EDCBA

66.

67.有以下程序

#include"stdio.h"

voidfun(int*a,int*b,intc)

{c=*a+*b;}

main()

{inta[2]={6,9},c=0;

fun(a,a+1,&c);

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

}

程序輸出的結果是

A.6B.9

C.0D.15

68.

69.

70.有以下程序:

}、、、程序運行后的輸出結果是()。

A.一263B.2C.0D.一26

71.

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

A.c語言規(guī)定必須用main作為主函數名,程序將從此開始執(zhí)行

B.可以在程序中由用戶指定任意一個函數作為主函數,程序將從此開始執(zhí)行

C.c語言程序將從源程序中第一個函數開始執(zhí)行、

D.main的各種大小寫拼寫形式都可以作為主函數名,如MAIN,Main等

73.下列敘述中錯誤的是()。

A.一種數據的邏輯結構可以有多種存儲結構

B.數據的存儲結構與數據的處理效率無關

C.數據的存儲結構與數據的處理效率密切相關

D.數據的存儲結構在計算機中所占的空間不一定是連續(xù)的

74.在E-R圖中,用來表示實體的圖形是

A.矩形B.橢圓形C.菱形D.三角形

75.有以下程序:

i

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

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

76.有三個關系R、S和T如下:

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

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

77.下面程序段的輸出結果是()。

#include<string.h>

voidmain()

{

charstrl[10]={’s’,’t’,’u’,’d’,’e’,’n’,’t’};

printf("%d\n",strlen(strl));

}

A.7B.8C.10D.存在語法錯誤

78.若有下面說明和定義:

structtest

{intm1;charm2;floatm3;

unionuu(charu1[5];intu2[2];)ua;

}myaa;

則sizeof(structtest)的值是()。

A)20B)16

C)14D)9

79.

80.若函數調用時的實參為變量時,以下關于函數形參和實參的敘述中正確的是()。

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

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

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

D.函數的實參和其對應的形參共占同一存儲單元

五、程序改錯題(1題)81.下列給定程序中proc()函數的功能是:將n個無序整數按從小到大排序。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,已知學生的記錄由學號和學習成績構成,N名學生的數據已存入a結構體數組中。請編寫函數fun(),該函數的功能是找出成績最低的學生記錄,通過形參將其返回主函數(規(guī)定只有一個最低分)。已給出函數的首部,請完成該函數。注意:部分源程序在文件prog1.c中。請勿改動主函數main()和其他函數中的任何內容,僅在函數fun()的花括號中填入你編寫的若干語句。試題程序:1#include<stdio.h>2#include<string.h>3#include<conio.h>4#include<stdlib.h>5#defineN106typedefstructss7{charnum[10];8ints;9}STU;10fun(STUa[],STU*s)11{1213}14voidmain()15{16FILE*wf;17STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m18inti;19system("CLS");20printf("*****Theoriginaldata*****\n");21for(i=0;i<N;i++)22printf("No=%sMark=%d\n",a[i],num,a[i].s);23fun(a,&m);24printf("****TheResult****\n");25printf("Thelowest:%s,%d\n",m.num,m.s);26/*************************/27wf=fopen("out.dat'*,"w");28fprintf(wf,"%s,%d",m.num,m.s);29fclose(wf);30/*************************/

參考答案

1.B解析:考查函數指針的使用方法??梢允褂煤瘮抵羔榿碚{用函數。調用形式為:(*指針變量)(實參表列)。

2.Cfor循環(huán)中,函數f的返回值累加到變量a中。第1次循環(huán),a=0,i=0,返回值a=0*0+1=1;第2次循環(huán),a=1,i=10,返回值a=10*10+1+1=102;第3次循環(huán),a=102,i=20,返回值a=20*20+1+102=503;第4次循環(huán)a=503,i=30,不符合1<30,跳出循環(huán),最后結果輸出a=503。故本題答案為C選項。

3.D

4.B

5.A

6.C解析:帶參數宏的格式為:#define標識符(形參表)形參表達式。其功能是:在預處理程序中將程序中出現的所有帶實參的宏名,展開成由實參組成的表達式。

7.B

8.A

9.C

10.B

11.B其中B選項的getchar函數用于從終端讀入字符。故本題答案為B選項。

12.C本題考查逗號表達式。程序輸出時輸出一個%d,所以輸出第一個a的值與后續(xù)無關。本題考查逗號表達式。本題的返回值是a+7,a=2*3=6,a+7=13(注意:本題問的是a的值,而不是程序的輸出值)。

13.D選項A中,int是關鍵字,不能作為用戶標識符;選項B中,兩個“#”錯誤;選項C中兩個“#”錯誤,另外DEFINE大寫也是錯誤的。故本題答案為D選項。

14.A

15.DD【知識點】宏定義與數組地址的考察【解析】數組名本身就是地址,所以不需要在用&符號。C選項不能對所有元素賦值而是反復再給一個數值賦值且是死循環(huán)。

16.B解析:棧操作原則上“后進先出”,棧底至棧頂依次存放元素A、B、C、D,則表明這4個元素中D是最后進棧,B、C處于中間,A最早進棧。所以出棧時一定是先出D,再出C,最后出A。

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

18.B解析:C語言的語法規(guī)定,字母e(E)之前必須有數字,且e(E)后面的指數必須是整數,而選項B)中,e(E)后面的指數是小數,所以不合法。

19.C

20.C用int方法定義變量時,編譯器僅為變量開辟存儲單元,并沒有在存儲單元中放任何值,此時變量中的值是無確定的,稱變量值”無意義”。因此,本題正確答案為c。

21.2121解析:本題考查switch語句。首先x=1,執(zhí)行switch(y),因為y=0,所以執(zhí)行case0:a++;break;此時a=1執(zhí)行case2:a++;b++;這時a=2,b=1;最后輸出結果是21。

22.HowdoessheHowdoesshe解析:strcpy(str1,s1);字符串拷貝函數,作用是將字符串s1拷貝到字符數組strl中去。strlen(str):測試字符串str的長度,函數的值為字符串中實際長度,不包括\'\\0\'在內。本題中strlen(str1)的值為13,則strcpy(strl+strlen(strl)/2,'esshe');相當于strcpy(strl+6,'esshe');,因此可得答案為Howdoesshe

23.8888解析:程序中的0210表示八進制數,%x是以十六進制形式輸出。本題可先將0210轉換為十進制數,再將其轉換為十六進制數。

24.HelloHello解析:字符串中,數值0或符號'/0'表示字符串的結束。本題中,b[5]被賦了0值,表明字符串b的第六個字符就是結束標志。因此,只輸出前五個字符,即Hello。

25.x>=0x<aminx>=0x<amin解析:本題先從鍵盤接受數值,并分別賦給amax(用于保存最高成績)和amin(用于保存最低成績),然后通過while循環(huán)控制是否結束輸入,并且通過if語句來給amax和amin賦值。

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

27.44解析:本題首先判斷a>b的真假,結果是1>2為假,所以表達式“a>b?a:c>d?c:d”的值為子表達式“c>d?c:d”的值。再判斷c>d的真假,結果是3>4為假,所以最終k被賦的值為d的值,故應該填4。

28.黑盒軟件測試的方法有三種:動態(tài)測試、靜態(tài)測試和正確性證明。設計測試實例的方法一般有兩類:黑盒測試法和白盒測試法。在使用黑盒法設計測試實例時,測試人員將程序看成一個“黑盒”,即不關心程序內部是如何實現的,只是檢查程序是否符合它的“功能說明”,所以使用黑盒法設計的測試用例完全是根據程序的功能說明來設計的。

29.交換排序交換排序解析:常見的排序方法有插入排序(包括簡單插入排序法和希爾排序法等)、交換排序(包括冒泡排序和快速排序法等)和選擇排序(包括簡單選擇排序和堆排序等)。注意:常見的排序方法及其作用機制和區(qū)別。

30.s[i]<'0'||s[i]>'9'或!(s[i]>='0'&&s[i]<='9')或!(isdigit(s[i]))或isdigit(s[i])==0或s[i]>'9'||s[i>'0'或!(s[i]<='9'&&s[i]>='0')或*(s+i)<'0'||*(s+i)>'9'或!(*(s+i)>='0'&&*(s+i)<=9或!(isdigit(*(s+i)))或*(s+i)>='9'&&*(s+i)<='0'或!(*(s+i)<='9'&&*(s+i)>='0'或isdigis[i]<'0'||s[i]>'9'或!(s[i]>='0'&&s[i]<='9')或!(isdigit(s[i]))或isdigit(s[i])==0或s[i]>'9'||s[i>'0'或!(s[i]<='9'&&s[i]>='0')或*(s+i)<'0'||*(s+i)>'9'或!(*(s+i)>='0'&&*(s+i)<=9或!(isdigit(*(s+i)))或*(s+i)>='9'&&*(s+i)<='0'或!(*(s+i)<='9'&&*(s+i)>='0'或isdigi解析:從一個字符串中刪除某字符的力‘法是從字符串的第一個字符開始一一判斷該字符是否是要被刪除,若不是則把它放到結果字符串中,若是則不放入結果字符串中。本題的第一個空應判斷s[i]是否為數字字符,只有在不是數字字符的情況下才存入結果字符串,所以應填入s[i]<'0'||s[i]>'9'。最后應在結果字符串的末尾填上字符串結束標志\\0。

31.在進行單元測試時,要用一些輔助模塊去模擬與被測模塊相聯系的其他模塊,即為被測模塊設計和搭建驅動模塊和樁模塊。其中,驅動模塊相當于被測模塊的主程序,它接收測試數據,并傳給被測模塊,輸出實際測試結果;而樁模塊是模擬其他被調用模塊,不必將子模塊的所有功能帶入。\r\n\r\n

32.關系關系解析:關系模型用;維表表示,則每個;維表代表一種關系。

33.

解析:冒泡排序法是通過相鄰數據元素的交換逐步將線性表變成有序。假設線性表的長度為n,則在最壞的情況下,冒泡排序需要經過遍的從前往后的掃描和遍的從后往前的掃描,需要的比較次數為。

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

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

35.操作碼操作碼

36.投影專門關系運算包括對單個關系進行垂直分解(投影操作)或水平分解(選擇操作)和對多個關系的結合(連接操作)等。

37.261261解析:在控制格式符中“o”代表的是將數據按八進制數輸出,十進制數的177代表的八進制數是261。

38.本題程序的流程是:讓i;j都從1開始,其中j用于控制刪除后剩下的數中的下標,i用于搜索原數組中的元素。j始終是新數組已有元素中最后一個元素的下一個元素的下標,所以if()中的條件是a[j-1]!=a[i],其中a[j-1]就是新數組中的最后一個元素,若條件成立則表示出現了不同的值,所以s[i]要留到新數組中。注本題中i、j的初值都要從1開始,該算法只能用于數組已排序的題目中。\r\n\r\n

39.*t*t解析:程序中,(a+n)代表字符串s最后一個字符后的,'\\0',根據題意,'\\0'所在位置應該賦值為字符串t的第一個字符,字符中t的其他字符根據循環(huán),依次賦值到,所指字符串的尾部,所以[14]應填:*t。

40.33解析:條件表達式的一般形式為;表達式1?表達式2:表達式3條件運算符的執(zhí)行順序:先求解表達式1,若為非0(真)則求解表達式2,此時表達式2的值就作為整個條件表達式的值;若表達式1的值為0(假),則求解表達式3,表達式3的值就是整個條件表達式的值。30/3=10>0,所以執(zhí)行p/10,結果為3。

41.A解析:希爾排序法的基本思想是:將整個無序序列分割成若干小的子序列分別進行插入排序。

42.D解析:在程序中指針變量p初始指向a[3],執(zhí)行p減1后,p指向a[2],語句y=*p的作用是把a[2]的值賦給變量y,所以輸出為y=3。

43.C解析:此題綜合考查多種運算符的使用:首先計算表達式a<=25&&b--<=2&&c的值,很容易看出b--<=2的值為假,因此表達式為假;根據三目運算的特點,由于表達式為假,所以應該執(zhí)行printf('###a=%d,b=%d,c=%d\\n',a,b,c);這時a的值依然為25,b的值經過b--運算后變?yōu)?3,而c的值仍為19。

44.B解析:fgets函數的作用是從指定的文件讀入—個字符串。fgets(str,n,fp);中的n為要求得到的字符的個數,但只從中指向的文件輸入n-1個字符,然后在最后加—個'\\0'字符,因此得到的字符串共有n個字符。

45.C解析:本題考查if語句。先判斷if語句的條件是否成立,++a->0,此條件成立,又因為是進行邏輯或運算,在己知其中一個運算對象為真的情況下,不必判斷另外一個運算符的真假,即不進行++b操作,就可以直接得出整個表達式的值為邏輯1,執(zhí)行下列的++c。

46.D解析:for循環(huán)中,當i=2時,i%3為真,結束本次while循環(huán),!i為假,執(zhí)行n++,n為1;當i=3時,i%3=0,執(zhí)行n++,n為2,!i為假,執(zhí)行n++,n為3;當i=4時,i%3為真,結束本次while循環(huán),!i為假,執(zhí)行n++,n為4;當i=5時,for循環(huán)結束。這時輸出n=4。

47.A解析:題目中reverse()函數的功能是將具有n個元素的數組a反序存放。在主函數中調用語句是“reverse(b,8);”,實現的功能是把b數組的前8個元素逆置,所以b數組中依次存放的值為“8,7,6,5,4,3,2,1,9,10”。for循環(huán)了4次,分別把b[6]、b[7]、b[8]和b[9]的值(分別是2、1、9、10)加到了s中,s的結果是22,所以最后輸出的s值為22。故4個選項中A正確。

48.D解析:fgetc函數是指從指定的文件讀入一個字符,該文件必須是以讀或讀寫方式打開的。fgetc函數的調用形式為:ch=fgetc(fp);。

49.D解析:在C語言格式字符的輸出中,“%d”是以帶符號的十進制形式輸出整數;“%60”是以8進制無符號形式輸出整數(不輸出前導符o);“%x”是以16進制無符號形式輸出整數(不輸出前導符Ox)。

50.B解析:需求分析是軟件定義時期的最后一個階段??梢愿爬?個方面:①需求獲??;②需求分析;⑧編寫需求規(guī)格說明書;④需求評審。

51.D解析:本越考查的知識點是指針的賦值。本題中首先定義了一整型變量n并賦初值為2,接著定義了一個整型指針變量p并讓它指向n,接著又定義了一指向指針的指針變量q,選項A中給指針變量p賦值小故這個賦值語句正確;選項B中*p=*q就是將*q的值賦給指針變量p所指向的變量n,故這個賦值語句不是非法的賦值語句;選項C中是將*q的值賦給變量n,故這個表達式不是非法的賦值語句:選項D中p為一指針變量應該杵一地址賦給它,而在此選項的表達式中將變量n而不是n的地址賦給它,故這個表達式不合法。

52.D【解析】算法的空間復雜度是指執(zhí)行這個算法所需要的內存空間。一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數據所占的存儲空間以及算法執(zhí)行中所需要的額外空間。其中額外空間包括算法程序執(zhí)行過程中的工作單元以及某種數據結構所需要的附加存儲空間。如果額外空間量相對于問題規(guī)模來說是常數,則稱該算法是原地工作的。在許多實際問題中,為了減少算法所占的存儲空間,通常采用壓縮存儲技術,以便盡量減少不必要的額外空間。

53.D解析:字符“A”要轉換成相應的ASCII碼值,由于運算結果要賦值給int型變量,所以對1.6進行取整運算,最后a的值應是66。

54.C解析:C語言的數據類型分為基本類型、構造類型、指針類型、空類型四大類。其中,基本類型分為整型、字符型、實型三類。實型又稱浮點型,包括單精度型和雙精度型兩種類型。

55.A

56.D解析:本題考查while和do…while循環(huán)的區(qū)別。while循環(huán)的控制出現在循環(huán)體之前,只有當while后面的表達式的值為非零時,才可能執(zhí)行循環(huán)體:在do…while構成的循環(huán)體中,總是先執(zhí)行一次循環(huán)體,然后再求表達式的值,因此無論表達式的值是否為零,循環(huán)體至少要被執(zhí)行一次。

57.C解析:數據處理的最小單位是數據項;由若干數據項組成數據元素;而數據是指能夠被計算機識別、存儲和加工處理的信息載體;數據結構是指數據之間的相互關系和數據運算。故正確答案為選項C)。

58.D解析:在格式輸入中,要求給出的是編譯的地址,而D)答案中給出的s[1]是一個值的表達式。

59.D解析:<<是C語言中規(guī)定的左移運算符,例如,a=a<<2,這個語句即是將a的二進制數左移兩位,左移一位相當于該數乘于2,左移兩位相當于該數乘以2的2次方。所以,x<<1=32*2=64。

60.B解析:選項A)是將指針q1和q2所指向的變量值相加,然后賦給k;選項B)中,float型數據和指針型數據之間不能進行賦值運算:選項C)中,是兩個指針變量之間的賦值:選項D)中,是兩個指針型變量所指向的兩個float型數據相乘。

61.D

62.A

63.A

64.A數組說明的一般形式為:類型說明符

數組名[常量表達式]。B選項中N是變量,不能用變量定義數組長度。c選項中數組長度是非法的一串數字。定義數組時必須為其指明長度,D選項中數組長度為空,所以非法。

65.D棧是具有后進先出(LIFO)性質的線性表,表尾稱為棧頂,表頭稱為棧底。棧的插入和刪除操作都是在棧頂執(zhí)行的,向棧內插入元素的操作稱為入棧,從棧內刪除元素的操作稱為出棧。題目中所給出的棧的初始狀態(tài)自棧底到棧頂的元素分別為A,B,C,D,E。此時的棧頂元素為E,向棧內插入元素1,2,3,4,5,插入操作結束時,棧內自棧底到棧頂的元素為A,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論