2021-2022年浙江省衢州市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第1頁
2021-2022年浙江省衢州市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第2頁
2021-2022年浙江省衢州市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第3頁
2021-2022年浙江省衢州市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第4頁
2021-2022年浙江省衢州市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年浙江省衢州市全國計算機等級考試C語言程序設(shè)計真題(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.對于線性表(7,34,55,25,64,46,20,10)進行散列存儲時,若選用H(K)=K%9作為散列函數(shù),則散列地址為1的元素有()個。

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

2.下列關(guān)于棧的描述中錯誤的是()。A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

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

A.在賦值表達式中,賦值號的左邊既可以是變量,也可以是任意表達式

B.實型變量中允許存放整型數(shù)

C.若a和b類型相同,在執(zhí)行賦值a=b后,b中的值將放入a中,但b中的值不變

D.在C程序中,求余算符“%”兩邊的類型相同時才能進行運算

4.C語言可執(zhí)行程序的開始執(zhí)行點是()。

A.包含文件中的第一個函數(shù)B.程序中第一個函數(shù)C.程序中的main()函數(shù)D.程序中第一條語句

5.

6.無向圖中一個頂點的度是指圖中與該頂點相鄰接的頂點數(shù)。若無向圖G中的頂點數(shù)為n,邊數(shù)為e,則所有頂點的度數(shù)之和為()

A.n*eB.n+eC.2nD.2e

7.能正確表示x>=3或者x<1的關(guān)系表達式是()。

A.x>=3orx<1B.x>=3|x<1C..x>=3||x<1D.x>=3||x<1

8.一個有n個頂點的連通無向圖至少有()條邊。

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

9.有以下程序執(zhí)行程序時,給變量X輸入l0,程序的輸出結(jié)果是()。

A.55B.54C.65D.45

10.以下語句中存在語法錯誤的是()。A.charss[6][20];s[1]="right?";

B.charss0[20]={"right?"};.

C.char*ss[6];s[1]="right?";

D.char*ss[={"rignt?"};

11.

12.

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

#include<stdio.h>

main

{inta[2][3]={{1,2,3),{4,5,6)),(*p)[3],i;

p=a;

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

{if(i<2)

p[1][i]=p[1][i]-1;

else

p[1][i]=1;

}

printf("%d\n",a[o][1]+a[1][1]+a[1][2]);

}

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

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

A.算法就是程序B.設(shè)計算法時只需要考慮數(shù)據(jù)結(jié)構(gòu)的設(shè)計C.設(shè)計算法時只需要考慮結(jié)果的可靠性D.以上3種說法都不對

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

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

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

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

D.將q所指字符串復制到p所指字符串中

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

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

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

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

D.以上說法均錯

16.以下說法錯誤的是A.A.高級語言都是用接近人們習慣的自然語言和數(shù)學語言作為語言的表達形式

B.計算機只能處理由0和1的代碼構(gòu)成的二進制指令或數(shù)據(jù)

C.C語言源程序經(jīng)過C語言編譯程序編譯之后生成一個后綴為.EXE的二進制文件

D.每一種高級語言都有它對應的編譯程序

17.以下不合法的數(shù)值常量是()。

A.8.0E0.5B.1e1C.011D.0xabcd

18.將10階對稱矩陣壓縮存儲到一維數(shù)組A中,則數(shù)組A的長度最少為()

A.100B.40C.55D.80

19.有以下程序:main(){intm=3,n=4,x;x=-m++;x=x+8/++n;printf("%d\n",x);}程序運行后的輸出結(jié)果是______。

A.3B.5C.-1D.-216

20.若有說明語句:double*p,a;則通過scanf語句正確給輸入項讀人數(shù)據(jù)的程序段是()。

A.*p=&a;scanf("%1f”,p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%",*p);

D.p=&a;scanf("%1f",p);

二、2.填空題(20題)21.以下程序的作用是:從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;charch;

fp=fopen(______);

ch=fSetc(fp);

while(!feof(fp)){putchar(ch);ch=fSetc(fp);}

putchar('\n');fclose(fp);

}

22.若輸入字符串:abcde,則以下while循環(huán)體將執(zhí)行【】次。

while((ch=getchar())=='e')printf("*");

23.若有如下定義,則該數(shù)組的第一維大小為【】。

intb[][4]={1,2,3,4,5,6,7,8,9);

24.若x為int類型,請寫出與!x等價的C語言表達式______。

25.棧的3種基本運算是:入棧、退棧和______。

26.數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和【】3種。

27.在面向?qū)ο蠓椒ㄖ校尽棵枋龅氖蔷哂邢嗨茖傩耘c操作的一組對象。

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

29.\13'在內(nèi)存中占1個字節(jié),"\12"在內(nèi)存中占______個字節(jié)。

30.常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖(SC),也稱程序結(jié)構(gòu)圖。其中,用矩形表示______,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。

31.Jackson結(jié)構(gòu)化程序設(shè)計方法是英國的M.Jackson提出的,它是一種面向______的設(shè)計方法。

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

#include<stdio.h>

int(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,d);

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

}

33.下列程序的運行結(jié)果為【】。

main()

{intx=2,y,z;

x*=3+1;

printf("%d,",x++);

x+=y=z=5;

printf("%d,",x);

K=y==Z;

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

}

34.有以下程序:

main()

{inta[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++)p[i]=i+1;

printf("%d\n",a[1][2]);

}

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

35.請選出以下程序的輸出結(jié)果#include<stdio.h>main(){inta[]={1,2,3,4},i;intx=0;for(i=0;i<4;i++){sub(a,x);Printf("%d",x);}printf("\n");}sub(S,y)int*s,y;{staticintt=3;y=s[t];t--;}

36.若有以下函數(shù)定義,函數(shù)返回值的類型是【】。

fun(doubleA)

{returna*a*a;}

37.下面invert函數(shù)的功能是將一個字符串str的內(nèi)容顛倒過來,請?zhí)羁铡?/p>

#include<string.h>

voidinvert(charstr[])

{inti,j,【】;

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;

}

}

38.某二叉樹中度為2的結(jié)點有n個,則該二叉樹中有【】個葉子結(jié)點。

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

#include<stdlib.h>

main()

{char*s1,*s2,m;

s1=s2=(char*)malloc(sizeof(char));

*s1=15;*s2=20;m=*s1+*s2;

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

}

40.已知a=1,b=2,則表達式(a&B)&b||b的結(jié)果為()。

三、1.選擇題(20題)41.設(shè)有以下定義和語句,輸出的結(jié)果是(用small模式編譯,指針變量2個字節(jié))______。structdate{long*cat;structdate*next;doubledog;}too;printf("%d",sizeof(too));

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

42.下面四個選項中,均是不正確的八進制數(shù)或十六進制數(shù)的選項是

A.0160x8f018

B.0abc0170xa

C.010-0x110x16

D.0a127ff-123

43.對建立良好的程序設(shè)計風格,下面描述正確的是______。

A.程序應簡單、清晰、可讀性好B.符號名的命名要符合語法C.充分考慮程序的執(zhí)行效率D.程序的注釋可有可無

44.在函數(shù)調(diào)用過程中,如果函數(shù)funA調(diào)用了函數(shù)funB,函數(shù)funB又調(diào)用了函數(shù)funA,則()。

A.稱為函數(shù)的直接遞歸調(diào)用B.稱為函數(shù)的間接遞歸調(diào)用C.稱為函數(shù)的循環(huán)調(diào)用D.C語言中不允許這樣的遞歸調(diào)用

45.若有定義:intx=0,*p=&x;則語句printf("%d\n",*p);的輸出結(jié)果是()。

A.隨機值B.0C.x的地址D.p的地址

46.要為讀/寫操作打開一個字符文件,其正確的打開方式為_______。

A.wrB.r+C.rb+D.rw

47.若有以下定義;chara;intb;floatc;doubled;則表達式“a*b+d-c”值的類型為()

A.floatB.intC.charD.double

48.在面向?qū)ο笾?,一個對象請求另一個對象為其服務(wù)的方式是通過發(fā)送

A.調(diào)用語句B.命令C.口令D.消息

49.以下只有在使用時才為該類型變量分配內(nèi)存的存儲類說明是______。

A.auto和static

B.auto和register

C.register和static

D.extern和register

50.下面程序的輸出結(jié)果是_______。#defineP1(x)printf(x)main(){chard[]="p";P1(d);P1("d");}

A.pdB.d"d"C.pdD.p"d

51.有以下程序

main()

{inti;

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

{if(i++%5==0)

if(++i%8==0)printf("%d",i);

}

printf("\n");

}

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

A.5B.24C.32D.40

52.若變量均已正確定義并賦值,以下合法的C語言賦值語句是

A.x=y==5;B.x=n%2.5;C.x+n=i;D.x=5-4+1;

53.軟件調(diào)試的目的是______。

A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.挖掘軟件的潛能

54.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inti;for(i=1;i<=10;i++){if((i*i>=20)&&(i*i<=100))break;}printf("%d\n",i*i);}

A.49B.36C.25D.64

55.請讀程序:#include<stdio.h>#include<string.h>main(){char*s1="AbCdEf",*s2="aB";s1++;s2++;printf("%d\n",strcmp(s1,s2));}上面程序的輸出結(jié)果是______。

A.正數(shù)B.負數(shù)C.零D.不確定的值

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

A.可以通過typedef增加新的類型

B.可以用tyPedef將已存在的類型用新的名字來表示

C.用typedef定義新的類型名后,原有類型名仍有效

D.用tyPedcf可以為各種類型起別名,但不能為變量起別名

57.CPU能夠直接訪問的存儲器是

A.軟盤B.硬盤C.RAMD.CD-ROM

58.以下程序企圖把從終端輸入的字符輸出到名為abc.txt的文件中,直到從終端讀入字符#號時結(jié)束輸入和輸出操作,但程序有錯。#include<stdio.h>main(){FILE*fout;charch;fout=fopen('abc.txt','w');ch=fgetc(stdin);while(ch!='#'){fputc(ch,fout);ch=fgetc(stdin);}fclose(fout);}出錯的原因是

A.函數(shù)fopen調(diào)用形式有誤B.輸入文件沒有關(guān)閉C.函數(shù)fgetc調(diào)用形式有誤D.文件指針stdin沒有定義

59.在一個C源程序文件中所定義的全局變量,其作用域為A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

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

A.一個返回整型值的函swap()

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

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

D.以上說法均錯

四、選擇題(20題)61.設(shè)有定義:intx=3;,以下表達式中,值不為l2的是()。

A.x*=x+1B.x++,3*xC.x*=(1+x)D.2*x.x+=6

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

A.INPUTx,y、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.);

63.

64.

65.現(xiàn)有以下結(jié)構(gòu)體說明和變量定義,如圖所示,指針P、q、r分別指定一個鏈表中連續(xù)的3個結(jié)點。

structnode

{hardata;

structnode*next;)*P,*q,*r;

現(xiàn)要將q和r所指結(jié)點交換前后位置,同時要保持鏈表的結(jié)構(gòu),下列不能完成此操作的語句是()。A.q-:>next=r->next;p--:>next=r;rm:>next=q;

B.q-:>next=r;q->next=r->next;r->next=q;

C.q-:>next=r->next;r->next=q;p->next=r;

D.q-:>next=q;p->next=r;q->next=r->next;

66.HTML是一種標記語言,它是由()解釋執(zhí)行的。

A.不需要解釋B.WindowsC.瀏覽器D.標記語言處理軟件

67.已知數(shù)據(jù)表A中每個元素距其最終位置不遠,為節(jié)省時間,應采用的算法是()

A.堆排序B.直接插入排序C.快速排序D.直接選擇排序

68.若x,i,j和k都是int型變量,則計算表達式x=(i=4,j=16,k=32)后,x的值為()。

A.4B.16C.32D.52

69.

70.

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

A.c語言規(guī)定必須用main作為主函數(shù)名,程序?qū)拇碎_始執(zhí)行

B.可以在程序中由用戶指定任意一個函數(shù)作為主函數(shù),程序?qū)拇碎_始執(zhí)行

C.c語言程序?qū)脑闯绦蛑械谝粋€函數(shù)開始執(zhí)行、

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

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

A.gets函數(shù)用于從終端讀人字符串

B.getehar函數(shù)用于從磁盤文件讀人字符

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

D.fwrite函數(shù)用于以二進制形式輸出數(shù)據(jù)到文件

73.有以下程序:

#definef(x)(x*x)main

{

inti1,i2;

i1=f(8)/(4);i2=f(4+4)/f(2+2);

printf("%d,%d\n",i1,i2);

}

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

A.64,28B.4,4C.4,3D.64,64

74.下述程序執(zhí)行的輸出結(jié)果是()。

#include<stdio.h>

main()

{chara[2][4];,

strcpy(a。"are");strcpy(a[1],"you");

a[o][3]=&;

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

}

A.are&you

B.you

C.are

D.&

75.若有定義語句:

charS[10]=”1234567\0\0”;則strlen(s)的值是()。

A.7B.8C.9D.10

76.有以下程序#includemain{inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的運行結(jié)果是()。A.741B.963C.852D.875421

77.以下程序的輸出結(jié)果是()。unionmyun{struct{intx,y,z;)u;intk:}a;main{a.u.x=4;a.u.y=5;a.u.z=6;k=0;printf(%d\n",a.u.x);}A.4B.5C.6D.0

78.在以下選項中,不正確的賦值語句是()。

A.i++;B.nl=(n2=(n3=0..;C.m+n=1;D.i=k==j;

79.已定義以下函數(shù)

fun(char*p2,char*p1)

{

while((*p2=*p1)!=’\0’){p1++;p2++;}

}

函數(shù)的功能是

A.將p1所指字符串復制到p2所指內(nèi)存空間B.將p1所指字符串的地址賦給指針p2

C.對p1和p2兩個指針所指字符串進行比較D.檢查p1和p2兩個指針所指字符串中是否有’\0’

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCIl碼升序排序后輸出。例如,輸入opdye,則應輸出deopy。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include%string.h>#include%stdlib.h>#include<conio.h>#include<stdio.h>//****found****intproc(charstr[]){charC;unsignedi,j;for(i=0;i<strlen(str)-1;i++)for(j=i+1;j<strlen(str);j4-+)if(str[i]>str[j]){c=str[j]://****found****str[j]=str[i++];str[i]=C;}}voidmain{charst/[81];system("CLS");printf("\nPleaseenteracharacterstring:");gets(str);printf("\nknBeforesorting:\n%s",str);proc(str);printf("\nAftersortingdecendingly:\n%S",str);}

六、程序設(shè)計題(1題)82.請編一個函數(shù)fun(char*str),該函數(shù)的功能是把字符串中的內(nèi)容逆置。例如,字符串中原有的字符串為asdfg,則調(diào)用該函數(shù)后,串中的內(nèi)容為gfdsa。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D

2.B棧是限定只能在表的一端進行插入和刪除操作的線性表,入棧和出棧都是在棧頂進行,它們的操作特點是先進后出,因此具有記憶作用。??梢圆捎庙樞虼鎯Γ部梢圆捎面準酱鎯?。

3.D選項A,在賦值表達式中,賦值號的左邊只能是變量或者是代表某個存儲單元的表達式,不能是任意表達式,右邊也不得出現(xiàn)表達式;選項8中,整型變量中只能存放整型數(shù),但實型變量中能存放實型數(shù),也能存放整型數(shù);選項C,表達式a=b的意思是把變量b的值賦給變量a,從而覆蓋a中原來值;選項D,要求取余運算符"%"兩邊的類型均為整型。

4.C解析:每個C程序有且只有一個主函數(shù)main(),且程序必須從main函數(shù)開始執(zhí)行,并在main()函數(shù)中結(jié)束。

5.D

6.D

7.C

8.A

9.A本題考查的是遞歸算法的分析。一個直接或間接地調(diào)用自身的算法稱為遞歸算法。在一個遞歸算法中,至少要包含一個初始值和一個遞歸關(guān)系。本題的fun()函數(shù)在n等于l時返回1,而在其余情況下返[fi]n+fun(n一1),所以本題的遞歸算法可以這樣來表示:fun(n)=1(n=1)(初始值)fun(n)=n+fun(n一1)(n≠1)(遞歸關(guān)系)此時不難看出,該遞歸算法實現(xiàn)的是計算l+2+3+…+n,而且n必須大于0,否則會陷入死循環(huán)。故題目輸出的結(jié)果是l+2+3+..+10=55.應該選擇A)。

10.A[解析]數(shù)組定義后,不可以對數(shù)組整體賦值,s是二維數(shù)組,因ss[1]是一維字符數(shù)組,即字符串,字符串賦值可以使用strcpy[1],"right);這樣的形式,而選項A)中對二維數(shù)組中的第“1維(相當于一個一維數(shù)組)賦值,是不可以的。選項B)和D)是定義時對數(shù)組初始化,這是可以的。選項C)中,將字符串在內(nèi)存中的首地址賦給指針數(shù)組的一個元素,這是可以的。

11.A

12.B

\n本題考查for循環(huán)及if…else語句嵌套,第1次執(zhí)行for循環(huán),p[1][0]=p[1][0]=p[1][0]-1=3;第2次執(zhí)行for循環(huán),p[1][1]=p[1][1]-1=4;第3次執(zhí)行for循環(huán),p[1][2]=l,最后輸出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。

\n

13.D程序(program)是為實現(xiàn)特定目標或解決特定問題而用計算機語言編寫的命令序列的集合。設(shè)計算法時要考慮到數(shù)據(jù)結(jié)構(gòu)的設(shè)計,但是不僅僅是要考慮到數(shù)據(jù)結(jié)構(gòu)的設(shè)計,還要考慮到其他的程序結(jié)構(gòu)的問題。設(shè)計算法時不能只考慮結(jié)果的正確性和可靠性,還需要考慮到程序的時間冗余度等方面。所以答案選擇D。

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

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

16.C本題主要考查我們對C語言一些基礎(chǔ)知識的掌握情況。下面分別分析本題的四個選項。

由于高級程序設(shè)計語言具有可讀寫、可理解性好等特點,這就要求高級程序設(shè)計語言用接近人們習慣的自然語言和數(shù)學語言作為語言的表達形式,選項A的說法正確。

在計算機中,機器可以接受和處理的只能是由0和1組成的二進制代碼,用高級語言編寫的程序都需要經(jīng)過編譯和連接,使其轉(zhuǎn)化為二進制代碼才能被機器執(zhí)行。因此,選項B的說法正確。

C語言源程序經(jīng)過C語言編譯程序編譯之后生成一個后綴為.OBJ的二進制文件(稱為目標文件);最后要由“連接程序”把此.OBJ文件與C語言提供的各種庫函數(shù)連接起來生成一個后綴為.EXE的可執(zhí)行文件。因此,選項C的說法不正確。

由于高級語言編寫的程序都需要經(jīng)過編譯和連接,才能被計算機執(zhí)行,因此,每一種高級語言都有它對應的編譯程序,D選項的說法正確。

17.AA選項中E后面的指數(shù)必須為整數(shù),所以不合法。C選項中的011表示的是八進制常量,D選項中的0xabcd表示的是十六進制常量。故本題答案為A選項。

18.C

19.D解析:本題主要考查++執(zhí)行的次序。執(zhí)行過x=-m++;后,x=-3,m=4;執(zhí)行x=x+8/++n;時8/++n=1;因此最后x=-216。

20.Ddouble*p,a定義了一個指向雙精度型的指針變量P和雙精度型變量a,p=&a表示將變量a的地址賦給指針變量p;scanf("%If",p)表示用鍵盤輸入的數(shù)賦給指針變量P所指向的地址單元中,scanf函數(shù)要求在輸入double型數(shù)據(jù),格式控制符必須用%1f。否則,數(shù)據(jù)不能正確輸入。所以選項D正確。

21.解析:fopen函數(shù)的調(diào)用方式通常為fopen(文件名,使用文件方式)。本題中要求程序可以打開filea.dat文件,并且是要讀取文件中的內(nèi)容,所以空白處應當填入'filea.dat','r'。

22.00解析:函數(shù)getchar()是從鍵盤得用戶輸入的一個字符。用戶輸入的第1個字符a,不管后面輸入的是什么ch的值都是'a',因此條件(ch=getchar())=='e'為假,這個循環(huán)不會被執(zhí)行。

23.33解析:在初始化一個含有未指定維度的數(shù)組時,C語言總是在能完全容納初始化列表的基礎(chǔ)上盡可能小地設(shè)定該維度,來作為指定維度的標準。本題有9個初始值,若指定第一維度為2,則數(shù)組含有2*4=8個元素,容納不下,所以指定維度為3,3*4=12,足夠容納了。故應該填3。

24.x==0x==0解析:!x的邏輯意思就是x為非,即x==0。

25.讀棧頂元素讀棧頂元素解析:棧的基本運算有3種:入棧、退棧和讀取棧頂元素。其中,入棧是指在棧頂插入一個新的元素;退棧是指取出棧頂元素并賦值給一個變量;讀棧頂元素是將棧頂元素賦值給一個指定的變量,不刪除棧頂元素。

26.關(guān)系模型關(guān)系模型解析:數(shù)據(jù)庫管理系統(tǒng)是位于用戶與操作系統(tǒng)之間的一層系統(tǒng)管理軟件,是一種系統(tǒng)軟件,是用戶與數(shù)據(jù)庫之間的一個標準接口。其總是基于某種數(shù)據(jù)模型,可以分為層次模型、網(wǎng)狀模型和關(guān)系模型。

27.類類解析:在面向?qū)ο蠓椒ㄖ?,類描述的是具有相似屬性與操作的一組對象。

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

29.22解析:'\\13':表示八進制數(shù)13表示的ASCII字符,是一個字符,占一個字節(jié);而”\\12”是個字符串,除了八進制數(shù)12表示的ASCII字符占一個字節(jié)外,還有在字符串的末尾加上串結(jié)束標志“'\\0'”,所以共有2個字節(jié)。

30.模塊模塊解析:矩形表示的是模塊,箭頭表示的是模塊間的調(diào)用關(guān)系。用帶實心圓的箭頭表示傳遞的是控制信息,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。

31.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)

32.7979解析:因為在調(diào)用子函數(shù)時進行的是數(shù)值傳遞,調(diào)用于函數(shù)并不能改變實參的值,所以經(jīng)過調(diào)用子函數(shù),c、d的值并沒有發(fā)生變化還是原來的值。

33.8141

34.66解析:本題定義了二維數(shù)組a和指針變量p,p指向數(shù)組的首地址,for循環(huán)語句的功能是給數(shù)組元素賦值,結(jié)果為a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[2][0]=7、a[2][1]=8、a[2][2]=9,故printf函數(shù)的輸出結(jié)果為6。

35.C

36.int類型int類型

37.k-1k\r\n-1解析:本題通過定義一中間值k,實現(xiàn)字符串str內(nèi)容的交換。

38.n+1n+1解析:在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為0的結(jié)點多一個。

39.4040解析:本題中指針s1和s2都指向同一個內(nèi)存中的地址。因此語句“*s2=20;”執(zhí)行后,*\u3000s1=*s2=20。所以m最后的值為40。

40.1

41.D解析:sizeof函數(shù)計算已知類型所占的字節(jié)數(shù)。結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和。指針變量占2個字節(jié),所以cat和*next各占2個字節(jié);double型占8個字節(jié),故too共占12個字節(jié)。

42.D解析:八進制中,不可能包括8以上的數(shù)字,它的范圍只在07之間,以0開頭。同樣,十六進制是以0x開頭,數(shù)字在0~9和A~F之間。

43.A解析:要形成良好的程序設(shè)計風格,主要應注重和考慮下述一些因素:符號名的命名應具有一定的實際含義,以便于對程序功能的理解;正確的注釋能夠幫助讀者理解程序;程序編寫應優(yōu)先考慮清晰性,除非對效率有特殊要求,程序編寫要做到清晰第一,效率第二。

44.B解析:在C語言中所謂函數(shù)的遞歸是指在調(diào)用一個函數(shù)的過程中,又出現(xiàn)了直接或間接調(diào)用該函數(shù)本身,直接調(diào)用該函數(shù)本身的稱為函數(shù)遞歸,而間接調(diào)用該函數(shù)稱為函數(shù)的間接遞歸調(diào)用。顯然題目中所說得函數(shù)調(diào)用為函數(shù)的間接遞歸調(diào)用。所以,4個選項中選項B符合題意。

45.B解析:本題考查的是指針的運用。語句intx=O,*p=&x;定義7一個int型變量x并初始化為0,同時還定義了一個int型指針p指向變量x。語句ptintf('%d\\n',*p);是按十進制整數(shù)格式輸出指針p所指向的內(nèi)容,即x的值0。故本題應該選擇B。

46.B解析:在C中可以通過fopen函數(shù)來打開—個文件,在該函數(shù)的第二個參數(shù)中指定其打開方式。要以讀寫方式打開文件可以用'r+'、'w+'、'a+'來表示,要打開二進制文件,可以在打開方式中加上字母b,對于字符文件不要加b。

47.D解析:參加運算的數(shù)據(jù)類型不同,要轉(zhuǎn)換為統(tǒng)一的數(shù)據(jù)類型,double在數(shù)據(jù)類型轉(zhuǎn)換中的級別最高,其他數(shù)據(jù)類型都要轉(zhuǎn)化為double,因此表達式值的類型為double。

48.D解析:面向?qū)ο蟮氖澜缡峭ㄟ^對象與對象間彼此的相互合作來推動的,一個對象與另一個對象通過發(fā)送消息彼此交換信息,請求對方執(zhí)行某一處理或回答某一要求的信息。

49.B解析:extern、register、static、auto分別是定義外部變量、寄存器變量、靜態(tài)變量、自動變量,其中,自動變量和寄存器變量屬于動態(tài)存儲,調(diào)用時臨時分配單元而靜態(tài)變量和外部變量屬于靜態(tài)存儲,在整個程序運行時都存在。

50.A解析:帶參數(shù)的宏定義的一般形式為:#define宏名(參數(shù)表)字符串程序中的P1(d);經(jīng)宏置換后為printf(d);,所以輸出字符串p;程序中的P1('d');經(jīng)宏置換后printf('d')。

51.C解析:當for循環(huán)執(zhí)行到第30次時,i的值為30能被5整除,然后繼續(xù)執(zhí)行兩次if語句,i經(jīng)過兩次自加1運算,值變?yōu)?2,能被8整除,故此時第一次執(zhí)行'printf('%d',i);'語句,即輸出32。

52.A

53.B解析:在對程序進行測試時會發(fā)現(xiàn)錯誤,這就要進行程序調(diào)試(排錯)。程序調(diào)試活動由三部分組成:一是錯誤定位,根據(jù)錯誤的外部表現(xiàn)形式,確定程序中出錯的位置,找出錯誤的內(nèi)在原因;二是對程序進行修改,排除這個錯誤;三是進行回歸測試,防止引進新的錯誤。所以程序調(diào)試的目的就是診斷和改正程序中的錯誤。軟件調(diào)試不能改善軟件的性能,也不能挖掘軟件的潛能。

54.C解析:本題考查if語句.當執(zhí)行到第一個滿足(i*i>=20)&&(i*i<=100)這個條件的i出現(xiàn)時,通過break語句跳出循環(huán),執(zhí)行下列的printf語句。

55.A解析:本題考查字符串比較函數(shù)strcmp()的應用。strcmp(s1,s2)是中比較函數(shù),當s1>s2時返回值為正數(shù),當s1<s2時返回值為負數(shù),當s1=s2時返回值為零。本題中s1,s2分別表示兩個串中第一個字符的地址,s1++和s2++是將指針指向串的第二個字符,指針變量s1指向的是串“bCdEf”的首地址,即字符b的地址,而指針變量s2指向的是字符'B'的地址。而在字符串比較中,寧符串大小的確定是各個字符串相應位置字符的ASCII碼值的大小決定的,字符'B'的ASCII碼值為66,字符“b”的ASCII碼值為98,所以s1>s2,返回值為正數(shù)。

56.A解析:選項A)錯誤,原因是typedef可以聲明新的類型名來代替已有的類型名,但卻不能增加新的類型。

57.C解析:CPU讀取和寫人數(shù)據(jù)都是通過內(nèi)存來完成的。

58.A解析:本題考核的知識點是文件的簡單應用。stdin是標準輸入設(shè)備的文件指針,不需定義直接可以使用,它隨系統(tǒng)的啟動而打開,隨系統(tǒng)的關(guān)閉而關(guān)閉,fgetc()函數(shù)的作用是從某個文件中讀取一個數(shù)據(jù),其參數(shù)為要讀取文件的文件指針,所以本題中的調(diào)用形式是正確的。fopen()函數(shù)有兩個參數(shù),第一個參數(shù)是打開的文件名,第二個參數(shù)是文件打開模式,兩個參數(shù)都是字符串,本例中'fout=fopen(\'abc.txt\',\'w’);”語句的fopen()函數(shù)參數(shù)是錯誤的,應該用雙引號'''',正確的應改為fout=fopen(“abc.txt”,“w”);。所以,A選項為所選。

59.D解析:全局變量的有效范圍是從定義變量的位置開始到本源文件結(jié)束。如果需要在其他源文件中使用該全局變量,則可以在其他源文件中使用extern關(guān)鍵字來聲明該全局變量,這樣該全局變量的作用域就被擴展到以extern聲明了該全局變量的位置開始到此源文件結(jié)束。故本題的正確答案為D。

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

61.D本題考查逗號運算符的運算方式,逗號運算符的作用是將若干表達式連接起來,它的優(yōu)先級別在所有運算符中是最低的,結(jié)合方向為”自左至右”。A)選項和c)選項的結(jié)果是一樣的,可展開為:x=x*(x+1)=3*4=12;B)選項中先執(zhí)行x++,因為++運算符有自加功能,逗號之前執(zhí)行后x的值為4,逗號后的值就是整個表達式的值,即12;D)選項逗號之前并未給x賦值,所以表達式的值就是x+=6的值,即9。因此,本題答案為D)。

62.B考查格式輸入函數(shù)scanf的使用。scanf函數(shù)的一般格式是:scanf(格式控制,地址表列)該格式中,地址表列中應是變量地址,而不是變量名。

63.A

64.D

65.D由題目中線性鏈表的定義可知,要將q和r所指的結(jié)點交換前后位置,只要使q指向r的后一個結(jié)點,P指向r結(jié)點,r指向q結(jié)點即可。而在選項D中,r->next=q,這時r指向的節(jié)點為q;p->next=r,這時P指向的節(jié)點為r;q->next:r->next,因為r節(jié)點已經(jīng)指向q,所以執(zhí)行這個語句后q又指向q,所以選項D不正確。

66.C

67.B堆排序。先把序列看成一棵大根堆或小根堆,摘取最大或最小元素后再建成新的根堆,再排序。堆排序的過程是:先建一個堆,輸出堆頂?shù)淖畲蠡蜃钚〉脑兀賹⑹S嗟膎-1個元素重新調(diào)整成一個新堆。如此反復進行,直到排序完成。

直接插入排序是一種最簡單的排序方法,它的基本操作是將一個記錄插入到已排好的有序表中,從而得到一個新的、記錄數(shù)增1的有序表。首先,將序列中的第1個記錄看成是一個有序的子序列,然后從第2個記錄起逐個進行插入,直至整個序列變成按關(guān)鍵字非遞減有序序列為止。

快速排序是對冒泡排序的一種改進。它的基本思想是通過一趟排序?qū)⒋庞涗浄指畛瑟毩⒌膬刹糠?,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,則可以分別對這兩部分記錄繼續(xù)進行排序,以達到整個序列有序。

直接選擇排序是通過n-i次關(guān)鍵字間的比較,從n-i+1個記錄中選出關(guān)鍵字最小的一個記錄,并和第i個記錄交換。這樣重復執(zhí)行n-1趟選擇排序。

在本題中,數(shù)據(jù)表A中每個元素距其最終位置不遠,即說明數(shù)據(jù)表基本有序,簡單移動一些元素即

溫馨提示

  • 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

提交評論