2021年遼寧省沈陽市全國計算機等級考試C語言程序設計_第1頁
2021年遼寧省沈陽市全國計算機等級考試C語言程序設計_第2頁
2021年遼寧省沈陽市全國計算機等級考試C語言程序設計_第3頁
2021年遼寧省沈陽市全國計算機等級考試C語言程序設計_第4頁
2021年遼寧省沈陽市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩105頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年遼寧省沈陽市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列敘述中正確的是()。

A.一個邏輯數據結構只能有一種存儲結構

B.邏輯結構屬于線性結構,存儲結構屬于非線性結構

C.一個邏輯數據結構可以有多種存儲結構,且各種存諸結構不影響數據處理的效率

D.一個邏輯數據結構可以有多種存儲結構,且各種存諸結構影響數據處理的效率

2.

3.設x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

4.若在線性表中采用折半查找法查找元素,該線性表應該()A.元素按值有序B.構采用順序存儲結C.元素按值有序且采用順序存儲結構D.元素按值有序且采用鏈式存儲結構

5.對于循環(huán)隊列,下列敘述中正確的是()。

A.隊頭指針是固定不變的

B.隊頭指針一定大于隊尾指針

C.隊頭指針一定小于隊尾指針

D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針

6.設二維數組A[1...m,1...n]按行存儲在數組B中,則二維數組元素A[i,j]在一維數組B中的下標為()。A.A.n*(i-1)+jB.n*(i-1)+j-1C.i*(j-1)D.j*m+i-1

7.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",執(zhí)行其結果為()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234

8.算法分析的兩個主要方面是()。

A.空間復雜性和時間復雜性B.正確性和簡明性C.可讀性和文檔性D.數據復雜性和程序復雜性

9.數據庫設計包括兩個方面的設計內容,它們是()

A.概念設計和邏輯設計B.模式設計和內模式設計C.內模式設計和物理設計D.結構特性設計和行為特性設計

10.

11.采用折半查找法查找長度為n的線性表時,每個元素的平均查找長度為()。

A.O(n2)B.O(nlog2n)C.O(n)D.O(log2n)

12.下面程序段的運行結果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));

A.8B.12C.4D.7

13.設一個鏈表最常用的操作是在末尾插入結點和刪除尾結點,則選用()最節(jié)省時間。

A.單鏈表B.單循環(huán)鏈表C.帶尾指針的單循環(huán)鏈表D.帶頭結點的雙循環(huán)鏈表

14.

15.若有定義語句:“charS[3][10],(*k)[3],*p;”,則以下賦值語句正確的是()。

A.p=S;B.p=k;C.p=s[0];D.k=s;

16.下列關于棧敘述正確的是A.棧頂元素最先能被刪除B.棧頂元素最后才能被刪除C.棧底元素永遠不能被刪除D.上述三種說法都不對

17.以下關于字符串的敘述中正確的是()。

A.C語言中有字符串類型的常量和變量

B.兩個字符串中的字符個數相同時才能進行串符串大小的比較

C.可以用關系運算符對字符串的大小進行比較

D.空串一定比空格打頭的字符串小

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

A.表達式“sizeof(FILE*)==sizeof(int*)”的值為真

B.文件指針的值是一個整數,它的值一定小于文件字節(jié)數

C.文件指針的值是所指文件的當前讀取位置

D.使用fscanf函數可以向任意類型的文件中寫入任意數量的字符

19.當n=5時,函數輸出為()A.5B.11C.29D.10

20.下列能正確進行字符串賦值的是()。

A.chars[5]={"ABCDE"};

B.chars[5]={'A','B','C','D','E'};

C.char*s;s="ABCDE";

D.char*s;printf("%s",s);

二、2.填空題(20題)21.在結構化設計方法中,數據流圖表達了問題中的數據流與加工間的關系,并且每一個______實際上對應一個處理模塊。

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

23.下面程序的輸出是【】

main()

{enumem{eml=3,em2=1,em3};

char*aa[]={"AA',"BB","CC","DD"}

printf("%s%s%\n",aa[em1],aa[em2],aa[em3]);

}

24.下列程序的功能是輸入一個整數,判斷其是否是素數,若為素數則輸出1,否則輸出0。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti,x,y=1;

scanf("%d",&x);

for(i=2;i<=x/2;i++)

if【】{y=0;break;}

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

}

25.為了便于對照檢查,測試用例應由輸入數據和預期的【】兩部分組成。

26.以下函數把b字符串連接到a字符串的后面,并返回a中新字符串的長度。請?zhí)羁铡?/p>

strcen(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

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

return(num);

}

27.設函數findbig已定義為求3個數中的最大值。以下程序將利用函數指針調用findbig函數。請?zhí)羁铡?/p>

main()

{intfindbig(int,int,int);

int(*f)(),x,y,z,big;

f=【】;

seanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,2);

printf("big=%d\n",big);

}

28.以下函數rotate的功能是:將a所指N行N列的二維數組中的最后一行放到b所指二維數組的第0列中,把a所指二維數組中的第0行放到b所指二維數組的最后一列中,b所指二維數組中其他數據不變。

#defineN4

voidrotate(inta[][N],intb[][N])

{inti,j;

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

{b[i][N-1]=______;______=a[N-1][i];}

}

29.以下程序的運行結果是______。

intx;

main()

{inta=5,b=8;

swap(a,b);

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

}

swap(inta,intb)

{inttemp;

temp=a;a=b;

b=temp;x=a/b;

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

}

30.下列程序的輸出結果是______。

main()

{inti,sum;

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

sum+=i;

primf("%d",sum);

}

31.在C語言中,while和do…while循環(huán)的主要區(qū)別是______的循環(huán)至少被執(zhí)行一次。

32.執(zhí)行以下for語句后,變量i的值是【】。

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

33.在一棵二叉樹上第6層的結點個數最多是______個。

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

main()

{charc;intn=100;

loatf=10;doublex;

x=f*=n/=(c=50);

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

}

35.數據庫的設計通??梢苑譃?個步驟:需求分析、概念設計、【】和物理設計。

36.以下程序的輸出結果是()。#include<stdio.h>fun(){staticinta=0;a+=3;printf("%d",A);}main(){intcc;for(cc=1;cc<5;cc++)fun();printf("\n");}

37.以下程序段打開文件后,先利用fseek函數將文件位置指針定位在文件末尾,然后調用ftell函數返回當前文件位置指針的具體位置,從而確定文件長度。請?zhí)羁铡?/p>

FILE*myf;longf1;

myf=【】("test,t","rb");

fseek(myf,0,SEEK_END);f1=ftell(myf);

fclose(myf);

printf("%1d\n",f1);

38.以下程序段中,錯誤的行號是【】。①#include<stdio.h>②main()③{charstr[14];str[]={"IloveChina!"};④printf("%s",str);⑤}

39.理解下面的程序,填空完善程序。

main()

{inta,b,c;

scanf("%d%d",【】);

c=【】(a,b);

printf("a=%db=%dmax=%d\n",a,b,c);

}

intmax(x,y)

【】;

{intz;

if(x>y)z=x;

elsez=y(tǒng);

【】;

}

40.以下程序的功能是調用函數fun計算:m=1-2+3-4+…+9-10,并輸出結果。請?zhí)羁铡?/p>

intfun(intn)

{intm=0,f=1,i;

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

m+=i*f;

f=【】;

returnm;

}

main()

{printf("m=%d\n",【】);}

三、1.選擇題(20題)41.以下運算符中優(yōu)先級最低的算符是______。

A.&&B.&C.+=D.?:

42.若有定義inta[2][3];,則對a數組的第i行第j列(假調i,j已正確說明并賦值)元素值的正確引用為

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

43.下列語句段中,正確的是()。

A.struct{intx;floaty;inta[2];unsignedb[3];charname[10];};

B.structstu{unsigneda[3];unsignedb[4];}x;int*p=&x.a;

C.streetstu{inta;floatx[4];}y={1,1.0};floatdata=y.x;

D.structnd{inta,b;unsignedc[2]=5;};

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

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

45.以下程序中函數sort的功能足對a所指數組中的數據進行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+l,j<n;j++)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[3],5);for(i=0;i<10;i++)print("%d,",aa[i]);printf('\n");}程序運行后輸出的結果是

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

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

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

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

46.執(zhí)行以下語句后的輸出結果是______。intx=3,y=0;printf("%d,%d”,-1>x>-10&&1<x<10,-1>y>-10&&1<y<10);

A.12B.11C.12D.22

47.假設a和b為int型變量,則執(zhí)行以下語句后,b的值為______。a=1;b=10;do{b-=a;a++;}while(b--<0);

A.9B.-2C.-1D.8

48.數據的完整性是指數據的正確性、有效性和______。

A.可維護性B.獨立性C.安全性D.相容性

49.有以下程序prt(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,5,B.2,3,4,5,6,C.3,4,5,6,7,D.2,3,4,5,1

50.下列敘述中正確的是______。

A.一個邏輯數據結構只能有一種存儲結構

B.數據的邏輯結構屬于線性結構,存儲結構屬于非線性結構

C.一個邏輯數據結構可以有多種存儲結構,且各種存儲結構不影響數據處理效率

D.一個邏輯數據結構可以有多種存儲結構,且各種存儲結構影響數據處理效率

51.下列程序的輸出結果是()。#include<stdio.h>#defineF(x)2.84+x#definew(y)printf("%d",(int)(y))#defineP(y)w(y)putchar('\n')main(){intx=2;P(F(5)*x);}

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

52.以下程序輸出的結果為______。main(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};char**p;inti;p=alpha;for(i=0,i<4;i++)prntf("%s",p[i]);}

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM

53.如果需要打開一個已經存在的非空文件“Demo”進行修改,下面選項中正確的是

A.fp=fopen("Demo","r");

B.fp=fopen("Demo","ab+");

C.fp=fopen("Demo","w+");

D.fp=fopen("Demo","r+");

54.現(xiàn)有格式化輸入語句,

A.intB.floatC.doubleD.不確定

55.有以下程序:voidsum(inta[]){a[0]=a[-1)+a[1];}main(){inta[10]=(1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf("%d\n",a[2]);}程序運行后的輸出結果是______。

A.6B.7C.5D.8

56.以下語句或語句組中,能正確進行字符串賦值的是______。A.char*sp;*sp="right!";

B.chars[10];s="right!";

C.chars[10];*s="right!";

D.char*sp="right!";

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

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

58.在面向對象方法中,實現(xiàn)信息隱蔽是依靠()。

A.對象的繼承B.對象的多態(tài)C.對象的封裝D.對象的分類

59.下列語句組中,不正確的是()。

A.char*s;s="Olympic";

B.chars[]="Olympic";

C.char*s;s={"Olympic"};

D.chars[]={"Olympic"};

60.設有語句“chara='72';”則變量a()。

A.包含一個字符B.包含二個字符C.包含三個字符D.說明不合法

四、選擇題(20題)61.若文件指針fp已正確指向文件,ch為字符型變量,以下不能把字符輸出到文件中的語句是()。

A.fget(f0,ch);

B.foutc(ch,fo);

C.fprinff(fp,”%c”,ch);

D.fwrite(&ch,sizeof(ch),1,fp);

62.C語言源程序名的后綴是()。A.CB.exeC.obiD.ep

63.

64.

65.

66.

67.

68.對于循環(huán)隊列,下列敘述中正確的是()。

A.循環(huán)隊列中元素的個數是由隊頭指針和隊尾指針共同決定的

B.在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況

C.在循環(huán)隊列中,隊頭指針一定大于隊尾指針

D.在循環(huán)隊列中,隊頭指針一定小于隊尾指針

69.

70.以下敘述中錯誤的是()。

A.C語言編寫的函數源程序,其文件名后綴可以是C

B.C語言編寫的函數都可以作為一個獨立的源程序文件

C.C語言編寫的每個函數都可以進行獨立的編譯并執(zhí)行

D.一個C語言程序只能有一個主函數

71.(3)在一棵二叉樹上第5層的結點數最多是______。

A.8

B.16

C.32

D.15

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

A.WindowsXP、AutoCAD、PowerPoint

B.VisualFoxPro、Excel、SPSS

C.Word、Photoshop、Excel

D.C++、CorelDraw、Firefox2.0

73.

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

75.

76.下面的函數調用語句中func函數的實參個數是

func(f2(A1,A2),(A3,A4,A5),(A6,max(A7,A8)));

A.3B.4C.5D.8

77.

A.intB.floatC.doubleD.不確定

78.數據流圖中帶有箭頭的線段表示的是()。

A.控制流B.事件驅動C.模塊調用D.數據流

79.

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

main

{charst[20]="hello\0\t\\\";

printf("%d%d\n",strlen(st).sizeof(st));

}

A.99B.520C.1320D.2020

80.以下選項中不能用作C程序合法常量的是()。

五、程序改錯題(1題)81.下列給定程序中,函數fun()的功能是:將長整型數中各位上為奇數的數依次取出,構成一個新數放在t中。高位仍在高位,低位仍在低位。例如,當s中的數為87653142時,t中的數為7531。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構!試題程序:

六、程序設計題(1題)82.學生的記錄由學號和成績組成,M名學生的數據已在主函數中放人結構體數組stu中,請編寫函數proc,它的功能是:把指定分數范圍之外的學生數據放在b所指的數組中,分數范圍之外的學生人數由函數值返回。

例如,輸入的分數是70和79,則應當把分數低于70和高于79的學生數據輸出,不包含70分和79分的學生數據。主函數中把70放在low中,把79放在heigh中。

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

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

試題程序:

#include<stdio.h>

#defineM16

typedefstruct

{

charnum[10];

ints:

}

STREC;

intproc(STREC*a,STREC*b,int1,inth)

{}

voidmain

{

STRECstu[M]={{"GA005",55),{"GA003",96},

{"GA002",80),{"GA004",68),

{"GA001",88},{"GA007",74},

{"GA008",85),{"GA006",89},

{"GA015",90),{"GA013”,53),

{"GA012",66},{"GA014”,82),

{"GA011",73},{"GA017",69),

{"GA018",64),{"GA016",86}};

STRECh[M];

inti,n,low,heigh,t;

printf("Enter2integernumberlow&

heigh:");

scanf("%d%d",&low,&heigh);

if(heigh<low)’

{

t=heigh:

heigh=low;

low=t;

}

n=proc(stu,h,low,heigh);

printf("Thestudent’Sdataout

%d--%d:\n",low,heigh);

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

printf("%S%4d\n",h[i].num,h[i].s);

//輸出指定分數范圍內的學生記錄

printf("\n");

}

參考答案

1.D數據的存儲結構是指數據的邏輯結構在計算機存儲空間中的存放形式,一種數據結構可以根據需要采用不同的存儲結構,用的存儲結構有順序和鏈式結構。用不同的存儲結構,其處理的效率是不同的。

2.C

3.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252化成二進制為0000001010101010,兩者相與得0000001000101000。

4.C

5.D循環(huán)隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進行變化。因為是循環(huán)利用的隊列結構,所以隊頭指針有時可能大于隊尾指針,有時也可能小于隊尾指針。

6.A

7.D

8.A

9.A解析:模式設計和內模式設計是概念設計的兩種方法。物理設計是根據特定的計算機系統(tǒng),對數據的存儲結構和存取方法進行設計,從而實現(xiàn)從邏輯結構到物理結構的轉換。從系統(tǒng)開發(fā)的角度來看,結構特性設計和行為特性-設計是數據庫應用系統(tǒng)所具有的兩個特性。結構特性的設計,設計各級數據庫模式(靜態(tài)特性):行為特性的設計,改變實體及其特性,決定數據庫系統(tǒng)的功能(動態(tài)特性)。

10.C

11.D

12.C在本題中,程序段首先定義了字符型指針變量p,并使其指向一個字符串,然后將指針變量p加3,即使其指向字符串的第四個元素。然后執(zhí)行輸出語句,通過輸出語句的輸出格式我們可以知道,最后輸出的是一個十進制數的整型數值,其輸出列表為strlen(strcpy(P,″ABCD″))。這就要求我們了解strlen函數和strcpy函數的作用。

strcpy的調用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串復制到目的地址中,這種復制將覆蓋原來的字符串。strcat函數的功能是將源地址的字符串復制到目的地址字符串的后面。

strlen的調用格式是:strlen(字符串地址),其功能是返回字符串中字符的個數。

那么程序中執(zhí)行strcpy(P,″ABCD″)后指針變量p所指向的字符串為“ABCD”,該字符串中字符的個數為4,那么執(zhí)行strlen后,程序最終輸出的結果是4。因此本題正確的答案是C。

13.C

14.C

15.C答案C的意思是*P指向數組的第一個值。

16.A解析:在棧中,允許插人與刪除的一端稱為棧頂,而不允許插入與刪除的另一端稱為棧底。棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素。故本題選A。

17.D解析:C語言中只有字符串常量而沒有字符串變量,故選項A不正確:字符串比較大小是以第1個不相同字符的大小為標準的,跟長度沒有關系,故選項B不正確:字符串比較大小除了使用庫函數stremp()以外,就只能靠自己寫代碼來實現(xiàn)了,而不能通過關系運算符來比較大小,因為字符串在表達式中相當于coostchar*,即常字符指針,代表的是字符串的首地址,關系運算符會將兩個字符串的首地址值比較大小,這是毫無意義的。所以選項C也不正確??沾拈L度為0,而以空格打頭的字符串的長度至少為1,故選項D正確,本題應該選擇D。

18.A“sizeof(FILE*)=4”,因為“file*”為指針,指針變量占用字節(jié)數為4,所以“sizeof(int*)=4”,選項A正確。文件指針的值是地址,是一個十六進制數,它的值不一定小于文件字節(jié)數,因此選項B錯誤。文件指針是所指文件的當前讀取位置,而不是文件指針的值,因此選項C錯誤?!癷ntfscanf(FILE*Stream,constchar*format,[argument...]);”,fScanf函數可以向任意類型的文件寫入任意數量的數據(不能超過系統(tǒng)的緩沖區(qū)),寫文件先寫入緩沖區(qū),最后一起寫入文件,因此選項D錯誤。故本題答案為A選項。

19.C

20.C解析:字符串存儲要有結束符“\\0”且要占用一個空間,選項A)、B的空間不夠:printf用來輸出字符,不能輸入字符串.

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

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

23.DDBBCCDDBBCC解析:C語言對枚舉的定義規(guī)定:在枚舉中聲明的各個枚舉元素,如果沒有明確指出某個枚舉元素的值,它的上—個元素存在并有明確值的情況下,這個牧舉元素的值為其上一個元素的值+1。在本題中,沒有明確說明枚舉元素em3的值,則em3=cm2+1=1+1=2,進而可知,在printf()打印函數中,要打印的數組元素是aa[3]、aa[1]、aa[2],因此最后的打印結果應當為'DDBBCC'。

24.(x%i==0)(x%i==0)解析:為判數x是否是素數,預置變量y的值為1(x可能是素數),然后用2至x/2的整數i測試對x的整除性,若x能被其中的某個整數整除,則x是合數,置y的值為0(即x不是素數),結束循環(huán)測試;若循環(huán)中i都不能整除x,則x為素數。一般可用求余運算x%i是否等于0來判定i能否整除x,所以程序中的空格處可填(x%i==0)。

25.輸出結果輸出結果解析:注意:測試的基本方法和步驟。

26.0'或0或NULLn++或++n或n=n+1或n+=10'或0或NULL\r\nn++或++n或n=n+1或n+=1

27.findbigfindbig解析:本題首先定義了一個指向函數的指針變量f,如果希望讓它指向某個函數,只需把函數名賦給該指針變量即可。所以說本題的空格處應該填入函數名findbig。

28.a[0][i]b[i][0]a[0][i]\r\nb[i][0]解析:因為數組a[N][N]的第0行表示為a[0][n](n=0~3),而數組b[N][N]的最后一列表示為b[n][N-1)(n=0~3),所以前一空應該填a[0][i]。又因為數組a[N][N]的最后一行表示為a[N-1)][n](n=0~3),而數組b[N][N]的第0列表示為b[n][0](n=0~3),所以后一空應該填b[i][0]。

29.a=5b=8x=1。a=5,b=8,x=1。解析:本題考查形參變量值的改變并不能傳回給實參。因此主函數中最后輸出的a和b仍為原來的初值5和8。

30.無定值無定值解析:for(i=l;i<7;i++)決定了循環(huán)次數為6次,每次執(zhí)行的操作是sum+=i,但由于sum沒有初始化,并不知道sum的初值是多少,所以結果無定值。

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

32.7

33.3232解析:根據二叉樹的性質,在二叉樹的第K層上,最多有2k-1個結點。所以,第6層的結點數最多為32。

34.0

35.邏輯設計邏輯設計解析:數據庫設計的4個階段為:需求分析、概念設計、邏輯設計和物理設計。

36.3691236912解析:本題考查最基本的for循環(huán)。for(cc=1;cc<5;cc++)規(guī)定循環(huán)次數為4次,每次a+=3,即每次a的值增加3,但因為fun函數中變量a為static類型,所以每次調用完子函數之后,變量a所做的改變都要保存。

37.fopen

38.③數組可以在定義時整體賦初值,但不能在賦值語句中整體賦初值。因此,可將第三行改為charstr[14]={"IloveChina!"};

39.&a&bmaxintxyreturn(z)

40.-f或f*-1或-1*f或f*(-1)或(-1)*ffun(10)-f或f*-1或-1*f或f*(-1)或(-1)*f\r\nfun(10)解析:調用fun()函數計算m的值,在主函數中的空格處應該填調用fun()函數的語句。fun()函數有一個形參n,為每次參加計算的值的個數,故在主函數中的空格處應該填fun(10),回到fun()函數,函數用到了一個for循環(huán),共循環(huán)n次,當循環(huán)第i次的時候,m的值等于m=1-2+……+[(-1)的i-1次方]*i,所以在fun()函數的空格處應該填使f改變符號的語句,故應填-f或f*-1或-1*f或f*(-1)或(-1)*f。

41.C解析:本題中運算符優(yōu)先級順序從高到低依次是:&、&&、?:、+=。

42.A解析:本題考查了二維數組元素的引用方法。選項A中a+i指向了數組a的第i+1行,*(a+i)則是第i+1行第0列的地址值,*(a+i)+j指向了數組a第i+1行,j+1列,*(*(a+i)+j)取到的是數組a的a[i][j]元素。

43.A解析:本題主要考查的知識點是結構類型的概念和定義,結構定義的一般形式是:

struct結構類型名稱

{數據類型成員名1;

數據類型成員名2;

數據類型成員名n;

};

struct為關鍵字,是結構的標識符:{}中包圍的是組成該結構的成員項;每個成員的數據類型既可以是簡單的數據類型,也可以是復雜的數據類型。整個定義作為一個完整的語句,用分號結束。結構類型名稱是可以省略的,此時定義的結構稱為無名結構。

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

45.C解析:本題考查的知識點是數組名作為函數的參數以及函數與排序算法結合在一起的綜合應用.本題中首先定義一個長度為10的一個整型數組,并初始化為“1,2,3,4,5,6,7,8,9,10”,然后調用排序函數sort(),通過分析不難看出,sort()數是對具有n個元素的a數組進行從大到小排序.由于函數的第一個參數是數組名,其對應的實參可以是函數名或地址。本題在調用該函數時,實參是&aa[3)的地址,即把aa[3]的地址傳給?行參數蛆名a,函數也就是對aa[3]開始的5個元素進行從大到小的排序,aa[0]。aa[1],aa[2]、aa[8]、aa[9]并沒有變化.Sort()執(zhí)行完畢后,接著執(zhí)行后面的for語句輸出數組aa中各個元素的值,由于函數sort()只是對aa[3]開始的5個元素進行從大到小的排序,aa[0]、aa[1]、aa[2]、aa[8]、aa[9]并沒有變化,所以輸出為“1,2,3,8,7,6,5,4,9,10”。所以4個選項中C正確。

46.B

47.D解析:本題程序第一輪循環(huán)后b的值為9,在進行循環(huán)條件測試時,先取b的現(xiàn)值9與0比較,然后再將b減1。由于9<0不成立,因此循環(huán)結束,這時b的值已變成8,本題正確答案為D。

48.D解析:數據模型應該反映和規(guī)定本數據模型必須遵守的、基本的、通用的完整性約束條件。完整性規(guī)則是給定的數據模型中數據及其聯(lián)系所具有的制約和依存規(guī)則,用以限定符合數據模型的數據庫狀態(tài)及其狀態(tài)的變化,以保證數據的正確性、有效性和相容性。

49.B解析:本題考查的是數組名作函數的參數。數組名實際上是一個指向該數組首地址的指針常量,所以數組名作函數的參數和用同類型的指針作參數沒有區(qū)別.題目首先定義了一個函數,該函數通過一個for循環(huán)將指針m到m+n-1所指內存中的數據自增1,所以主函數中執(zhí)行了prt(a,5);語句后,數組a中的所有元素被自增1。所以,4個選項中選項B符合題意。

50.D解析:邏輯結構是反映了元素之間的邏輯關系的數據結構,存儲結構是邏輯結構在計算機中的存放形式,它們都具有線性結構和非線性結構。邏輯結構有順序、鏈接、索引等存儲結構,采用不同的存儲結構,數據處理的效率不同。

51.A解析:本題考查帶參數的宏的定義及相關運算。P(P(5)*x)=P(2.84+5*2)=P(12.84),調用w(12.84),輸出(int)(12.84)=12。

52.C解析:alpha[0]指向“ABCD'’的首地址;alpha[1]指向“EFGH'’的首地址;alpha[2]指向“IJKL”的首地址,依此類推。當初行p=alpha后,p指向指針數組alpha的首地址。for循環(huán)中輸出了4個字符串。

53.D

54.C解析:根據混合運算規(guī)則,如果有一個數據是float型或double型,則其他數據類型先轉化為double型,運算的結果最終也是double型。

55.A解析:調用sum(&a[2])時,a[0]=a[2]=3,a[-1]=a[1]=2,a[1)=a[3]=4,因此a[2]=6,可以看到sum函數的功能是將數組的一項的值改成其前一項的值與后一項的值之和。

56.D解析:本題考查了考生對字符串常量的理解。字符串常量是一段以雙引號括起來的字符序列,它既可以出現(xiàn)在對字符數組的初始化中,也可以出現(xiàn)在表達式中。當它用于對字符數組的初始化時,應注意系統(tǒng)自動為其添加的結束標志'\\0'。而當它出現(xiàn)在表達式中時,應該將其看作一個constchar*類型的指針常量。在選項A中,首先定義了一個字符指針sp,然后將一個字符串賦給甲所指的地址,這是錯誤的。因為sp是一個未經初始化的野指針,不知其指向哪兒,往一個不確定的地址中寫數據很容易讓程序出錯。選項B首先定義了一個字符數組,然后將一個字符串賦給數組名,這是錯誤的。因為數組名是一個指針常量,不可以被改變。選項C首先定義了一個字符數組,然后將一個字符串賦給數組的第一個元素,這也是錯誤的。因為字符串在表達式中相當于一個常字符指針,將一個指針值賦給一個字符型變量是行不通的。選項D是定義一個字符指針sp,同時使其指向一個字符串常量,即將一個常字符型指針賦給sp。這是可行的。所以,4個選項中選項D符合題意。

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

58.C解析:通常認為,面向對象方法具有封裝性、繼承性、多態(tài)性幾大特點。就是這幾大特點,為軟件開發(fā)提供了一種新的方法學。

封裝性:所謂封裝就是將相關的信息、操作與處理融合在一個內含的部件中(對象中)。簡單地說,封裝就是隱藏信息。這是面向對象方法的中心,也是面向對象程序設計的基礎。

繼承性:子類具有派生它的類的全部屬性(數據)和方法,而根據某一類建立的對象也都具有該類的全部,這就是繼承性。繼承性自動在類與子類間共享功能與數據,當某個類作了某項修改,其子類會自動改變,子類會繼承其父類所有特性與行為模式。繼承有利于提高軟件開發(fā)效率,容易達到一致性。

多態(tài)性:多態(tài)性就是多種形式。不同的對象在接收到相同的消息時,采用不同的動作。例如,一個應用程序包括許多對象,這些對象也許具有同一類型的工作,但是卻以不同的做法來實現(xiàn)。不必為每個對象的過程取一過程名,造成復雜化,可以使過程名復用。同一類型的工作有相同的過程名,這種技術稱為多態(tài)性。

經過上述分析可知,在面向對象方法中,實現(xiàn)信息隱蔽是依靠對象的封裝。正確答案是選項C。

59.C

60.D解析:字符變量的值為單個字符,并用單引號包含,而本題中的單引號中是兩個字符,不是合法說明。

61.A函數fgete()從文件讀入一個字符到指定變量。函數fputc()將指定字符寫入審文件中,函數fprinff(),fwrite()均是寫入文件操作函數。因此選項B,c。D錯誤。答案為A選項。

62.AC語言源程序名的后綴為.C’所以A)正確。

63.B

64.D

65.D

66.D

67.B\r\n

68.A\n循環(huán)隊列是將順序隊列首尾相連形成的,隨著插入元素或刪除元素的進行,其隊頭指針及隊尾指針是在不斷變化的,有時可能會出現(xiàn)隊頭指針大于隊尾指針的情況,也可能是隊尾指針大于隊頭指針。

\n

69.B

70.C函數是指預先定義功能塊,其目的是提高程序的重用性。在C語言中函數的源程序,后綴名可以為C。C語言所編寫的函數都可以是一個獨立的源文件。一個C語言程序只能有一個主函數。C語言中編寫的函數不是每個都可以獨立地編譯和執(zhí)行的,因為C語言中程序的開始為主函數,如果程序中沒有主函數則無法進行編譯和執(zhí)行。

71.B根據二叉樹的性質,在二叉樹的第K層上,最多有2k-1個結點。所以,第五層的結點數最多為16。

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

73.C

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

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

75.A

76.A本題考查函數的實參形式。函數的實參可以是常量、變量或表達式,但是要有確定的值。題目中第一個實參為f2(A1,A2),以整個函數值為實參。第二個實參是A5,(A3,A4,A5)是一個逗號表達式,其值為最后一個表達式的值,即A5。第三個實參為max(A7,A8),即A7和A8中的最大值。

77.C根據混合運算規(guī)則,如果有一個數據是float型或double型,則其他數據類型先轉化為double型,運算的結果最終也是double型。

78.D解析:數據流圖是描述數據處理過程的工具,是需求理解的邏輯模型的圖形表示,它直接支持系統(tǒng)的功能建模。數據流圖從數據傳遞和加工的角度,來刻畫數據流從輸入到輸出的移動變換過程。數據流圖中的主要的圖形元素與說明如下:

加工(轉換):輸入數據經加工變換產生輸出。

數據流:沿箭頭方向傳送數據的通道,一般在旁邊標注數據流名。

存儲文件(數據源):表示處理過程中存放各種數據的文件。

源,潭:表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實體。

79.B

\n從題目中可知,\0、\t、\\分別為一個字符,而sizeof是裝字節(jié)個數的函數,其中包括\O占的字節(jié),strlen函數是求數組長度的函數;其以\0結束,因此

\nstrlen的值為5,sizeof的值為20。

\n

80.A整數不能用逗號隔開,所以A)錯誤。

81.(1)錯誤:t=0;

正確:*t=0;

(2)錯誤:if(d%2==0)

正確:if(d%2!=O)或if(d%2==1)

【解析】變量t定義為指針型變量,所以不能對t賦初值,不應該是t=0,而是*t=0;題目要求將長整型數中各位上為奇數的數依次取出,因此if語句里應該是d%2!=0。此題較簡單,考查的是指針變量作為函數參數和奇偶的判斷。

82.\n\tintproc(STREC*a,STREC*b,intl,inth)\n\n\n\t{\n\n\n\tinti,j=0;\n\n\n\tfor(i=0;i<M;i++)\n\n\n\tif((a[i].s>=0&&a[i].s<1)||(a[i].s>h&&a\n\n\n\t[i].s<=l00))

//通過if語句,來判斷指定范圍\n\n\n\t之外的數\n\n\n\tb[j++]=a[i];//放到b數組中\(zhòng)n\n\n\treturnj;//最后把其個數返回到主函數中\(zhòng)n\n\n\t}\n\n\n\t【解析】題目要求把指定范圍之外的數放到b中,將每一個學生的成績與指定的成績相比較,將符合條件的學生成績放在數組b中,并將符合要求的學生個數返回給主函數。\n2021年遼寧省沈陽市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列敘述中正確的是()。

A.一個邏輯數據結構只能有一種存儲結構

B.邏輯結構屬于線性結構,存儲結構屬于非線性結構

C.一個邏輯數據結構可以有多種存儲結構,且各種存諸結構不影響數據處理的效率

D.一個邏輯數據結構可以有多種存儲結構,且各種存諸結構影響數據處理的效率

2.

3.設x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

4.若在線性表中采用折半查找法查找元素,該線性表應該()A.元素按值有序B.構采用順序存儲結C.元素按值有序且采用順序存儲結構D.元素按值有序且采用鏈式存儲結構

5.對于循環(huán)隊列,下列敘述中正確的是()。

A.隊頭指針是固定不變的

B.隊頭指針一定大于隊尾指針

C.隊頭指針一定小于隊尾指針

D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針

6.設二維數組A[1...m,1...n]按行存儲在數組B中,則二維數組元素A[i,j]在一維數組B中的下標為()。A.A.n*(i-1)+jB.n*(i-1)+j-1C.i*(j-1)D.j*m+i-1

7.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",執(zhí)行其結果為()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234

8.算法分析的兩個主要方面是()。

A.空間復雜性和時間復雜性B.正確性和簡明性C.可讀性和文檔性D.數據復雜性和程序復雜性

9.數據庫設計包括兩個方面的設計內容,它們是()

A.概念設計和邏輯設計B.模式設計和內模式設計C.內模式設計和物理設計D.結構特性設計和行為特性設計

10.

11.采用折半查找法查找長度為n的線性表時,每個元素的平均查找長度為()。

A.O(n2)B.O(nlog2n)C.O(n)D.O(log2n)

12.下面程序段的運行結果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));

A.8B.12C.4D.7

13.設一個鏈表最常用的操作是在末尾插入結點和刪除尾結點,則選用()最節(jié)省時間。

A.單鏈表B.單循環(huán)鏈表C.帶尾指針的單循環(huán)鏈表D.帶頭結點的雙循環(huán)鏈表

14.

15.若有定義語句:“charS[3][10],(*k)[3],*p;”,則以下賦值語句正確的是()。

A.p=S;B.p=k;C.p=s[0];D.k=s;

16.下列關于棧敘述正確的是A.棧頂元素最先能被刪除B.棧頂元素最后才能被刪除C.棧底元素永遠不能被刪除D.上述三種說法都不對

17.以下關于字符串的敘述中正確的是()。

A.C語言中有字符串類型的常量和變量

B.兩個字符串中的字符個數相同時才能進行串符串大小的比較

C.可以用關系運算符對字符串的大小進行比較

D.空串一定比空格打頭的字符串小

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

A.表達式“sizeof(FILE*)==sizeof(int*)”的值為真

B.文件指針的值是一個整數,它的值一定小于文件字節(jié)數

C.文件指針的值是所指文件的當前讀取位置

D.使用fscanf函數可以向任意類型的文件中寫入任意數量的字符

19.當n=5時,函數輸出為()A.5B.11C.29D.10

20.下列能正確進行字符串賦值的是()。

A.chars[5]={"ABCDE"};

B.chars[5]={'A','B','C','D','E'};

C.char*s;s="ABCDE";

D.char*s;printf("%s",s);

二、2.填空題(20題)21.在結構化設計方法中,數據流圖表達了問題中的數據流與加工間的關系,并且每一個______實際上對應一個處理模塊。

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

23.下面程序的輸出是【】

main()

{enumem{eml=3,em2=1,em3};

char*aa[]={"AA',"BB","CC","DD"}

printf("%s%s%\n",aa[em1],aa[em2],aa[em3]);

}

24.下列程序的功能是輸入一個整數,判斷其是否是素數,若為素數則輸出1,否則輸出0。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti,x,y=1;

scanf("%d",&x);

for(i=2;i<=x/2;i++)

if【】{y=0;break;}

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

}

25.為了便于對照檢查,測試用例應由輸入數據和預期的【】兩部分組成。

26.以下函數把b字符串連接到a字符串的后面,并返回a中新字符串的長度。請?zhí)羁铡?/p>

strcen(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

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

return(num);

}

27.設函數findbig已定義為求3個數中的最大值。以下程序將利用函數指針調用findbig函數。請?zhí)羁铡?/p>

main()

{intfindbig(int,int,int);

int(*f)(),x,y,z,big;

f=【】;

seanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,2);

printf("big=%d\n",big);

}

28.以下函數rotate的功能是:將a所指N行N列的二維數組中的最后一行放到b所指二維數組的第0列中,把a所指二維數組中的第0行放到b所指二維數組的最后一列中,b所指二維數組中其他數據不變。

#defineN4

voidrotate(inta[][N],intb[][N])

{inti,j;

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

{b[i][N-1]=______;______=a[N-1][i];}

}

29.以下程序的運行結果是______。

intx;

main()

{inta=5,b=8;

swap(a,b);

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

}

swap(inta,intb)

{inttemp;

temp=a;a=b;

b=temp;x=a/b;

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

}

30.下列程序的輸出結果是______。

main()

{inti,sum;

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

sum+=i;

primf("%d",sum);

}

31.在C語言中,while和do…while循環(huán)的主要區(qū)別是______的循環(huán)至少被執(zhí)行一次。

32.執(zhí)行以下for語句后,變量i的值是【】。

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

33.在一棵二叉樹上第6層的結點個數最多是______個。

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

main()

{charc;intn=100;

loatf=10;doublex;

x=f*=n/=(c=50);

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

}

35.數據庫的設計通??梢苑譃?個步驟:需求分析、概念設計、【】和物理設計。

36.以下程序的輸出結果是()。#include<stdio.h>fun(){staticinta=0;a+=3;printf("%d",A);}main(){intcc;for(cc=1;cc<5;cc++)fun();printf("\n");}

37.以下程序段打開文件后,先利用fseek函數將文件位置指針定位在文件末尾,然后調用ftell函數返回當前文件位置指針的具體位置,從而確定文件長度。請?zhí)羁铡?/p>

FILE*myf;longf1;

myf=【】("test,t","rb");

fseek(myf,0,SEEK_END);f1=ftell(myf);

fclose(myf);

printf("%1d\n",f1);

38.以下程序段中,錯誤的行號是【】。①#include<stdio.h>②main()③{charstr[14];str[]={"IloveChina!"};④printf("%s",str);⑤}

39.理解下面的程序,填空完善程序。

main()

{inta,b,c;

scanf("%d%d",【】);

c=【】(a,b);

printf("a=%db=%dmax=%d\n",a,b,c);

}

intmax(x,y)

【】;

{intz;

if(x>y)z=x;

elsez=y(tǒng);

【】;

}

40.以下程序的功能是調用函數fun計算:m=1-2+3-4+…+9-10,并輸出結果。請?zhí)羁铡?/p>

intfun(intn)

{intm=0,f=1,i;

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

m+=i*f;

f=【】;

returnm;

}

main()

{printf("m=%d\n",【】);}

三、1.選擇題(20題)41.以下運算符中優(yōu)先級最低的算符是______。

A.&&B.&C.+=D.?:

42.若有定義inta[2][3];,則對a數組的第i行第j列(假調i,j已正確說明并賦值)元素值的正確引用為

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

43.下列語句段中,正確的是()。

A.struct{intx;floaty;inta[2];unsignedb[3];charname[10];};

B.structstu{unsigneda[3];unsignedb[4];}x;int*p=&x.a;

C.streetstu{inta;floatx[4];}y={1,1.0};floatdata=y.x;

D.structnd{inta,b;unsignedc[2]=5;};

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

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

45.以下程序中函數sort的功能足對a所指數組中的數據進行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+l,j<n;j++)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[3],5);for(i=0;i<10;i++)print("%d,",aa[i]);printf('\n");}程序運行后輸出的結果是

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

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

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

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

46.執(zhí)行以下語句后的輸出結果是______。intx=3,y=0;printf("%d,%d”,-1>x>-10&&1<x<10,-1>y>-10&&1<y<10);

A.12B.11C.12D.22

47.假設a和b為int型變量,則執(zhí)行以下語句后,b的值為______。a=1;b=10;do{b-=a;a++;}while(b--<0);

A.9B.-2C.-1D.8

48.數據的完整性是指數據的正確性、有效性和______。

A.可維護性B.獨立性C.安全性D.相容性

49.有以下程序prt(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,5,B.2,3,4,5,6,C.3,4,5,6,7,D.2,3,4,5,1

50.下列敘述中正確的是______。

A.一個邏輯數據結構只能有一種存儲結構

B.數據的邏輯結構屬于線性結構,存儲結構屬于非線性結構

C.一個邏輯數據結構可以有多種存儲結構,且各種存儲結構不影響數據處理效率

D.一個邏輯數據結構可以有多種存儲結構,且各種存儲結構影響數據處理效率

51.下列程序的輸出結果是()。#include<stdio.h>#defineF(x)2.84+x#definew(y)printf("%d",(int)(y))#defineP(y)w(y)putchar('\n')main(){intx=2;P(F(5)*x);}

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

52.以下程序輸出的結果為______。main(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};char**p;inti;p=alpha;for(i=0,i<4;i++)prntf("%s",p[i]);}

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM

53.如果需要打開一個已經存在的非空文件“Demo”進行修改,下面選項中正確的是

A.fp=fopen("Demo","r");

B.fp=fopen("Demo","ab+");

C.fp=fopen("Demo","w+");

D.fp=fopen("Demo","r+");

54.現(xiàn)有格式化輸入語句,

A.intB.floatC.doubleD.不確定

55.有以下程序:voidsum(inta[]){a[0]=a[-1)+a[1];}main(){inta[10]=(1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf("%d\n",a[2]);}程序運行后的輸出結果是______。

A.6B.7C.5D.8

56.以下語句或語句組中,能正確進行字符串賦值的是______。A.char*sp;*sp="right!";

B.chars[10];s="right!";

C.chars[10];*s="right!";

D.char*sp="right!";

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

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

58.在面向對象方法中,實現(xiàn)信息隱蔽是依靠()。

A.對象的繼承B.對象的多態(tài)C.對象的封裝D.對象的分類

59.下列語句組中,不正確的是()。

A.char*s;s="Olympic";

B.chars[]="Olympic";

C.char*s;s={"Olympic"};

D.chars[]={"Olympic"};

60.設有語句“chara='72';”則變量a()。

A.包含一個字符B.包含二個字符C.包含三個字符D.說明不合法

四、選擇題(20題)61.若文件指針fp已正確指向文件,ch為字符型變量,以下不能把字符輸出到文件中的語句是()。

A.fget(f0,ch);

B.foutc(ch,fo);

C.fprinff(fp,”%c”,ch);

D.fwrite(&ch,sizeof(ch),1,fp);

62.C語言源程序名的后綴是()。A.CB.exeC.obiD.ep

63.

64.

65.

66.

67.

68.對于循環(huán)隊列,下列敘述中正確的是()。

A.循環(huán)隊列中元素的個數是由隊頭指針和隊尾指針共同決定的

B.在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況

C.在循環(huán)隊列中,隊頭指針一定大于隊尾指針

D.在循環(huán)隊列中,隊頭指針一定小于隊尾指針

69.

70.以下敘述中錯誤的是()。

A.C語言編寫的函數源程序,其文件名后綴可以是C

B.C語言編寫的函數都可以作為一個獨立的源程序文件

C.C語言編寫的每個函數都可以進行獨立的編譯并執(zhí)行

D.一個C語言程序只能有一個主函數

71.(3)在一棵二叉樹上第5層的結點數最多是______。

A.8

B.16

C.32

D.15

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

A.WindowsXP、AutoCAD、PowerPoint

B.VisualFoxPro、Excel、SPSS

C.Word、Photoshop、Excel

D.C++、CorelDraw、Firefox2.0

73.

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

75.

76.下面的函數調用語句中func函數的實參個數是

func(f2(A1,A2),(A3,A4,A5),(A6,max(A7,A8)));

A.3B.4C.5D.8

77.

A.intB.floatC.doubleD.不確定

78.數據流圖中帶有箭頭的線段表示的是()。

A.控制流B.事件驅動C.模塊調用D.數據流

79.

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

main

{charst[20]="hello\0\t\\\";

printf("%d%d\n",strlen(st).sizeof(st));

}

A.99B.520C.1320D.2020

80.以下選項中不能用作C程序合法常量的是()。

五、程序改錯題(1題)81.下列給定程序中,函數fun()的功能是:將長整型數中各位上為奇數的數依次取出,構成一個新數放在t中。高位仍在高位,低位仍在低位。例如,當s中的數為87653142時,t中的數為7531。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構!試題程序:

六、程序設計題(1題)82.學生的記錄由學號和成績組成,M名學生的數據已在主函數中放人結構體數組stu中,請編寫函數proc,它的功能是:把指定分數范圍之外的學生數據放在b所指的數組中,分數范圍之外的學生人數由函數值返回。

例如,輸入的分數是70和79,則應當把分數低于70和高于79的學生數據輸出,不包含70分和79分的學生數據。主函數中把70放在low中,把79放在heigh中。

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

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

試題程序:

#include<stdio.h>

#defineM16

typedefstruct

{

charnum[10];

ints:

}

STREC;

intproc(STREC*a,STREC*b,int1,inth)

{}

voidmain

{

STRECstu[M]={{"GA005",55),{"GA003",96},

{"GA002",80),{"GA004",68),

{"GA001",88},{"GA007",74},

{"GA008",85),{"GA006",89},

{"GA015",90),{"GA013”,53),

{"GA012",66},{"GA014”,82),

{"GA011",73},{"GA017",69),

{"GA018",64),{"GA016",86}};

STRECh[M];

inti,n,low,heigh,t;

printf("Enter2integernumberlow&

heigh:");

scanf("%d%d",&low,&heigh);

if(heigh<low)’

{

t=heigh:

heigh=low;

low=t;

}

n=proc(stu,h,low,heigh);

printf("Thestudent’Sdataout

%d--%d:\n",low,heigh);

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

printf("%S%4d\n",h[i].num,h[i].s);

//輸出指定分數范圍內的學生記錄

printf("\n");

}

參考答案

1.D數據的存儲結構是指數據的邏輯結構在計算機存儲空間中的存放形式,一種數據結構可以根據需要采用不同的存儲結構,用的存儲結構有順序和鏈式結構。用不同的存儲結構,其處理的效率是不同的。

2.C

3.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252化成二進制為0000001010101010,兩者相與得0000001000101000。

4.C

5.D循環(huán)隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進行變化。因為是循環(huán)利用的隊列結構,所以隊頭指針有時可能大于隊尾指針,有時也可能小于隊尾指針。

6.A

7.D

8.A

9.A解析:模式設計和內模式設計是概念設計的兩種方法。物理設計是根據特定的計算機系統(tǒng),對數據的存儲結構和存取方法進行設計,從而實現(xiàn)從邏輯結構到物理結構的轉換。從系統(tǒng)開發(fā)的角度來看,結構特性設計和行為特性-設計是數據庫應用系統(tǒng)所具有的兩個特性。結構特性的設計,設計各級數據庫模式(靜態(tài)特性):行為特性的設計,改變實體及其特性,決定數據庫系統(tǒng)的功能(動態(tài)特性)。

10.C

11.D

12.C在本題中,程序段首先定義了字符型指針變量p,并使其指向一個字符串,然后將指針變量p加3,即使其指向字符串的第四個元素。然后執(zhí)行輸出語句,通過輸出語句的輸

溫馨提示

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

評論

0/150

提交評論