2022-2023年山東省日照市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第1頁
2022-2023年山東省日照市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第2頁
2022-2023年山東省日照市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第3頁
2022-2023年山東省日照市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第4頁
2022-2023年山東省日照市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022-2023年山東省日照市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.沒有任何關(guān)系

2.

3.考慮下圖中的程序段,①號語句的輸出結(jié)果是()。A.A.'a'B.'t'C.'c'D.'k'

4.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。

A.hAppychristmAs

B.happychristmas

C.HAppyCHrIstmAs

D.HAPPYCHRISTMAS

5.程序運(yùn)行后的輸出結(jié)果是()。A.3B.4C.1D.9

6.程序運(yùn)行后的輸出結(jié)果是()。A.10B.11C.20D.21

7.如有inta=11;則表達(dá)式(a++*1/3)的值是()。

A.0B.3C.4D.12

8.堆是一種有用的數(shù)據(jù)結(jié)構(gòu)。下列關(guān)鍵碼序列()是一個(gè)堆。

A.94,31,53,23,16,72

B.94,53,31,72,16,23

C.16,53,23,94,31,72

D.16,31,23,94,53,72

9.判斷一個(gè)棧ST(最多元素為Maxsize)為空的條件是()。

A.ST->top!==一1

B.ST->top==-1

C.ST->top!==Maxsize-1

D.ST->top==Maxsize-1

10.若x、y、z、m均為int型變量,則執(zhí)行下面語句后m的值是()m=1;x=2;y=3;m=(m<x)?m:x;m=(m<y)?m:y;m=(m<y)?m:z;

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

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

A.C語言函數(shù)可以嵌套調(diào)用,例如:fim(fun(X))

B.C語言程序是由過程和函數(shù)組成的

C.C語言函數(shù)不可以單獨(dú)編譯

D.C語言中除了main函數(shù)外,其他函數(shù)不可作為單獨(dú)文件形式存在

12.若要用函數(shù)fopen打開一個(gè)新的二進(jìn)制文件,該文件要既能讀也能寫,則應(yīng)以哪種方式打開文件()。

A.wbB.wb+C.rb+D.rb

13.已知函數(shù)test定義為()。A.執(zhí)行函數(shù)test后,函數(shù)沒有返回值

B.執(zhí)行函數(shù)test后,函數(shù)不再返回

C.執(zhí)行函數(shù)test后,函數(shù)返回任意類型值

D.以上三個(gè)答案都是錯(cuò)誤的

14.對線性表進(jìn)行二分法檢索,其前提條件是()。

A.線性表以順序方式存儲(chǔ),并按關(guān)鍵碼值排好序

B.線性表以順序方式存儲(chǔ),并按關(guān)鍵碼的檢索頻率排好序

C.線性表以鏈?zhǔn)椒绞酱鎯?chǔ),并按關(guān)鍵碼值排好序

D.線性表以鏈?zhǔn)椒绞酱鎯?chǔ),并按關(guān)鍵碼的檢索頻率排好序

15.冒泡排序在最壞情況下的比較次數(shù)是()。

A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2

16.下面程序的運(yùn)行結(jié)果是()。

#inelude<stdio.h>

voiddel(char*s)

{inti,j;

char*a;

a=s:

for(i=0,j=0;a[i]!='\0';i++)

{if(a[i]>='0'&&a[i]<='9')

{s[j]=a[i];

j++;

}

s[j]='\0';

}

}

main

{char*s="aa89gggh";

del(s):

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

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

17.第

11

若有定義:char*st="howareyou";下列程序段中正確的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

18.有以下程序:#include<stdio.h>structnode{charid;structnode*next;}a={‘A’},b={‘B’},c={‘C’},*p=&a,*pt;main(){p->next=&b;p=p->next;p->next=&c;p=p->next;p->next=NULL;p=&a;}若程序經(jīng)運(yùn)行后形成下圖所示的數(shù)據(jù)結(jié)構(gòu)。則以下可以刪除中間節(jié)點(diǎn)b的正確選項(xiàng)是()。

A.pt=p->next;p->next=p->next->next;free(pt);

B.pt=p->next;p->next=p->next->next->next;free(pt);

C.pt=&b;free(pt);

D.pt=&b;p->next=p->next->next->next;free(pt);

19.以下正確的字符常量是()。A.'\089'B.'\012'C.'\0XAB'D.'\0xab'

20.若一棵二叉樹具有10個(gè)度為2的結(jié)點(diǎn),5個(gè)度為1的結(jié)點(diǎn),則度為0的結(jié)點(diǎn)的個(gè)數(shù)是()。

A.9B.11C.15D.不能確定

二、2.填空題(20題)21.以下程序的運(yùn)行結(jié)果是【】。

#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;

case3:a++;b++;

}

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

}

22.若想通過以下輸入語句使a=5.0,b=4,c=3,則輸入數(shù)據(jù)的形式應(yīng)該是【】。

intb,c;floata;

scanf("%f,%d,c=%d",&a,&b,&c)

23.下列程序的運(yùn)行結(jié)果是______。

main()

{inti,a[10];

a[0]=a[1]=1;

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

a[i]=a[i-2]+a[i-1];

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

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

printf("%d",a[i]);

}

}

24.在先左后右的原貝嚇,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種:前序遍歷、【】遍歷和后序遍歷。

25.以下程序運(yùn)行后的輸出結(jié)果是【】。

main()

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

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

{for(j=0;j<3;j++)printf("%d",a[i][j]);

printf("\n");

}

}

26.以下程序中函數(shù)huiwen的功能是檢查一個(gè)字符串是否是回文,當(dāng)字符串是回文時(shí),函數(shù)返回字符串:yes!,否則函數(shù)返回字符串:no!,并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda。請?zhí)羁铡?/p>

#include<string.h>

char*huiwen(char*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=【】;

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;bteak;}

if(【】)return("yes!");

elsereturn("no!");

}

main()

{charsb[50];

printf("Input:");scanf("%s",str);

ptintf("%s\n",【】);

}

27.在程序設(shè)計(jì)階段應(yīng)該采取______和逐步求精的方法,把一個(gè)模塊的功能逐步分解,細(xì)化為一系列具體的步驟,繼而用某種程序設(shè)計(jì)語言寫成程序。

28.數(shù)據(jù)庫系統(tǒng)的主要特點(diǎn)為數(shù)據(jù)集成性、數(shù)據(jù)的高_(dá)_____和低冗余性、數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)一管理和控制。

29.度為10的線性表進(jìn)行冒泡排序,最壞情況下需要比較的次數(shù)為______。

30.有以下程序

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

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

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

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

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wb");

fwtite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

for(i=0;i<10;i++)printf("%d",a[i]);

}

33.本程序用改進(jìn)冒泡法對數(shù)組a[n]的元素從小到大排序,請?jiān)诔绦蚩瞻滋幪羁铡?/p>

voidbubble(inta[],intn)

{intj,k,jmax,temp;

jmax=【】;

do{

k=0;

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

if(a[j]>a[j+1])

{temp=a[j];a[j]=a[j+1];a[j+1]=temp;k=【】;

jmax=k;

}while(jmax>0);}

34.若已知a=10,b=20,則表達(dá)式!a<b的值為【】。

35.軟件危機(jī)出現(xiàn)于60年代末,為了解決軟件危機(jī),人們提出了【】的原理來設(shè)計(jì)軟件,這就是軟件工程誕生的基礎(chǔ)。

36.設(shè)有以下定義和語句,則*(*(p+2)+1)的值為【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

37.下面的程序是將從終端讀入的20個(gè)字符放入字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti;

chars[21],*p;

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

s[i]=getehar();

s[i]=【】;

p=【】;

while(*p)putchar(【】);

}

38.設(shè)有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序運(yùn)行后,從鍵盤上輸入(<CR>代表回車符):CDEF<CR>BADEF<CR>QTHRG<CR>,則程序的輸出結(jié)果是______。

39.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫?shí)現(xiàn)拷貝。(注:不使用逗號表達(dá)式)

whi1e()s[i]){d[j]=【】:j++;}

d[j]=0;

40.程序的運(yùn)行結(jié)果為【】。

main()

{charc1='a',c2='b',c3='c';

printf("a%cb%c\tc%c\n",c1,c2,c3);

}

三、1.選擇題(20題)41.軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測試數(shù)據(jù)屬于A.硬件資源B.通信資源C.支持軟件D.輔助資源

42.假定w、x,y、z、m均為int型變量,有如下程序段;w=1;x=2;y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m=(m<z)?m:z;則該程序段執(zhí)行后,m的值是()

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

43.若二維數(shù)組a有m列,且設(shè)a[0][0]位于數(shù)組的第一個(gè)位置上,則計(jì)算任一元素a[i][j]在數(shù)組中的位置的式子為()

A.i*m+jB.j*m+iC.i*m+j-1D.i*m+j+1

44.表示“在使用x之后,使x的值加1”的正確方式是()

A.++xB.x++C.+xD.+x+

45.請選出正確的程序段

A.int*p;scanf("%d",p);…

B.int*s,k;*s=100;…

C.int*s,k;char*p,c;s=&k;p=&c;*p='a';…

D.int*s,k;char*p,e;s=&k;p=&c;s=p;*s=1;…

46.下列不是合法的C語言語句是()。

A.a=5B.{inti;i++;}C.;D.{;}

47.沒有定義語句intx[6]={2,4,6,8,5,7},*p=x,i;要求依次輸出x數(shù)組6個(gè)元素中的值,不能完成此操作的語句是

A.for(i=0;i<6;i++)printf("%2d",*(p++));

B.for(i=0;i<6;i++)printf("%2d",*(p+i);

C.for(i=0;i<6;i++)printf("%2d",*p++);

D.for(i=0;i<6;i++)printf("%2d",(*p)++);

48.為了將所有擴(kuò)展名為.PAS的文件改成擴(kuò)展名為.P,應(yīng)使用命令()

A.REN*.PAS.?ASB.RENPASPC.REN*.PAS*.PD.REN*.PAS*.P??

49.SQL語言又稱為______。

A.結(jié)構(gòu)化定義語言B.結(jié)構(gòu)化控制語言C.結(jié)構(gòu)化查詢語言D.結(jié)構(gòu)化操縱語言

50.有以下程序(提示,程序中fseek(fp,-2L*sizeof(int),SEEK_END);語句的作用是使位置指針從文件末尾向前移2*sizeof(int)字節(jié)):#include<stdio.h>main(){FILE*fp;inti,a[4]={l,2,3,4},b;fp=fopen("data.dat","wb");for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);fclose(fp);fp=fopen("data.dar","rb");fseek(fp,-2L*sizeof(int),SEEKEND);fread(&b,sizeof(int),1,fp);/*從文件中讀取sizeof(int)字節(jié)的數(shù)據(jù)到變量b中*/fclose(fp);printf("%d\n",b);}執(zhí)行后輸出結(jié)果是()。

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

51.設(shè)有下列二叉樹:對此二叉樹前序遍歷的結(jié)果為()

A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY

52.以下程序的運(yùn)行結(jié)果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf("Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);}

A.Y=3B.存在語法錯(cuò)誤C.Y=7D.Y=0

53.以下程序中函數(shù)sort的功能足對a所指數(shù)組中的數(shù)據(jù)進(jìn)行由大到小的排序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");}程序運(yù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.1,2,3,8,7,6,5,4,9,10

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

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

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

55.軟件是指()。A.程序B.程序和文檔C.算法加數(shù)據(jù)結(jié)構(gòu)D.程序、數(shù)據(jù)與相關(guān)文檔的完整集合

56.若有定義intx,y;并已正確給變量賦值,則下列選項(xiàng)中與表達(dá)式(x-y)?(x++):(y++)中的條件表達(dá)式(x-y)等價(jià)的是()。

A.(x-y>0)B.(x-y<0)C.(x-y<0||x-y>0)D.(x-y==0)

57.與數(shù)學(xué)式子對應(yīng)的C語言表達(dá)式是

A.3*xn(2*x-1)

B.3*x**n(2*x-1)

C.3*pow(x,n)*(1/(2*x-1))

D.3*pow(n,x)/(2*x-1)

58.字符串"\\\"ABCDEF\"\\"的長度是()。

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

59.已知—個(gè)有序表為(12,18,24,35,47,50,62,83,90,115,134),當(dāng)二分查找值為47的元素時(shí),經(jīng)過______次比較后查找成功。

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

60.若x=4,y=5,則x&y的結(jié)果是()。

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

四、選擇題(20題)61.

62.

63.若有定義“intb[8],*p=b;”,則p+6表示()。

A.數(shù)組元素b[6]的值B.數(shù)組元素b[6]的地址C.數(shù)組元素b[7]的地址D.數(shù)組元素b[o]的值加上6

64.

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

A.循環(huán)隊(duì)列是隊(duì)列的一種鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)

B.循環(huán)隊(duì)列是隊(duì)列的一種順序存儲(chǔ)結(jié)構(gòu)

C.循環(huán)隊(duì)列是非線性結(jié)構(gòu)

D.循環(huán)隊(duì)列是一種邏輯結(jié)構(gòu)

66.假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為()。

A.log2nB.n2

C.n/2D.n(n-1)/2

67.

當(dāng)執(zhí)行下面的程序時(shí),如果輸入ABC,則輸出結(jié)罘是()。

#include<stdio.h>

#include<string.h>

main()

{charss[10]="1,2,3,4,5":

gets(ss);strcat(ss,"6789");printf("%s\n",ss);

}

A.ABC6789B.ABC67C.12345ABC6D.ABC456789

68.一個(gè)函數(shù)內(nèi)有數(shù)據(jù)類型說明語句如下:

doublex,y,z(10)

關(guān)于此語句的解釋,下面說法正確的是()。

A.z是一個(gè)數(shù)組,它有10個(gè)元素

B.z是一個(gè)函數(shù),小括號內(nèi)的10是它的實(shí)參的值

C.x是一個(gè)變量,小括號內(nèi)的10是它的初值

D.語句中有錯(cuò)誤,因?yàn)椤皕(10)”應(yīng)該為“z[10]”

69.下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)原則的是()。

A.可封裝B.自頂向下C.模塊化D.逐步求精

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

A.c語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令

B.c程序經(jīng)過編譯、連接步驟之后才能形成一個(gè)真正可執(zhí)行的二進(jìn)制機(jī)器指令文件

C.用c語言編寫的程序稱為源程序,它以ASCIl代碼形式存放在一個(gè)文本文件中

D.c語言源程序經(jīng)編譯后生成后綴為.obj的目標(biāo)程序

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

A.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,各個(gè)對象之間具有密切的關(guān)系

B.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,各個(gè)對象都是公用的

C.在面向?qū)ο蟮某绦蛟O(shè)中,各個(gè)對象之間相對獨(dú)立,相互依賴性小

D.上述3種說法都不對

72.

73.有以下程序程序運(yùn)行后的輸出結(jié)果是()。

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

74.

75.

76.有以下程序程序的運(yùn)行結(jié)果是()。

A.1B.41C.2D.331

77.

78.若變量已正確定義,有以下程序段:

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

A.程序段有語法錯(cuò)誤B.3,5,3C.3,5,5D.3,5,7

79.

80.

五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的功能是:根據(jù)以下公式求π的值,并作為函數(shù)值返回。例如,給指定精度的變量eps輸人0.0001時(shí),應(yīng)當(dāng)輸出Pi=3.141358。π/2=1+t/3+1/3*e/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9……請修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:,

六、程序設(shè)計(jì)題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請編寫一個(gè)函數(shù)fun(),該函數(shù)的功能是使變量h的值保留兩位小數(shù),并對第3位進(jìn)行四舍五入(規(guī)定h的值為正數(shù))。若h的值為1234.567,則函數(shù)返回1234.570000;若h的值為1234.564,則函數(shù)返回1234.560000。注意:部分源程序在文件prog1.c中。請勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.C(10)C)解析:DB即數(shù)據(jù)庫(Database),是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合;DBMS即數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem),是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪問DB的方法;DBS即數(shù)據(jù)庫系統(tǒng)(DatabaseSystem)由如下5部分組成,數(shù)據(jù)庫(數(shù)據(jù))、數(shù)據(jù)庫管理系統(tǒng)(軟件)、數(shù)據(jù)庫管理員(人員)、系統(tǒng)平臺之一——硬件平臺(硬件)、系統(tǒng)平臺之二——軟件平臺(軟件)。

2.A

3.D

4.C程序定義一個(gè)字符數(shù)組b和一個(gè)字符變量k。for循環(huán)通過循環(huán)變量k,遍歷數(shù)組b中的各個(gè)字符,通過if語句判斷當(dāng)前下標(biāo)為k的字符的ASCII值與字符'm'的ASCII值的大小,ASCII值小于‘m’的ASCII值的字符改成大寫字母(b[k]=b[k]-'a'+'A'),然后輸出b[k]。在字符串“happychristmas”中,ASCII值小于'm'的字符有h,a,c,h,i,a,所以程序輸出:HAppyCHrIstmAs。本題答案為C選項(xiàng)。

5.B[解析]每次內(nèi)循環(huán)只循環(huán)一-次就結(jié)束,第一次外循環(huán)時(shí)t=t+b[][0][]=1+b[0][0]=1+0=1;第二次外循環(huán)時(shí)t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第三次外循環(huán)時(shí)t=t+b[][2][]=2+b[2][2]=2+2=40

6.D[解析]聲明data是結(jié)構(gòu)S數(shù)組。初始化data[0].a=10;data[O]b=100;data[1].a=20;data[]b=200.主函數(shù)中p=data[1];即p.a=data[1].a;p.b=data[1].b;執(zhí)行語句prit("%odn",++(pa);打印輸出時(shí)p.a先增1再打印。p.a=data\u3000\u3000[1].a=20.先增1等于21.

7.B

8.D

9.B

10.A解析:?:運(yùn)算符首先執(zhí)行?之前的表達(dá)式,如果表達(dá)式的值為真,則返回?和:之間的表達(dá)式的值,否則返回:之后的表達(dá)式的值。本題中m比x和y都要小,所以,3個(gè)表達(dá)式都沒有改變m的值,故應(yīng)該選擇A。

11.AC語言程序是由函數(shù)組成的,所以B選項(xiàng)錯(cuò)誤。C語言函數(shù)可以單獨(dú)進(jìn)行編譯,所以C選項(xiàng)錯(cuò)誤。每個(gè)C語言程序必須包含一個(gè)main函數(shù),但不是每個(gè)C語言程序文件都必須有一個(gè)main函數(shù),用戶單獨(dú)編寫的某個(gè)函數(shù)也可以存儲(chǔ)為一個(gè)C語言程序文件,所以D選項(xiàng)錯(cuò)誤。故本題答案為A選項(xiàng)。

12.B解析:本題考查文件使用方式標(biāo)識符。方式“wb”為輸出打開一個(gè)二進(jìn)制文件;方式“wb+”為讀寫建立一個(gè)新的二進(jìn)制文件;方式“rb+”為讀寫打開一個(gè)二進(jìn)制文件:方式“rb”為輸入打開一個(gè)二進(jìn)制文件。

13.A

14.A解析:對線性表進(jìn)行二分法檢索,要求線性表是按順序方式存儲(chǔ)的,并按關(guān)鍵碼值的大小排好序,而不是按關(guān)鍵碼的檢索頻率排序。

15.C冒泡排序的基本思想是:將相鄰的兩個(gè)元素進(jìn)行比較,如果反序,則交換;對于一個(gè)待排序的序列,經(jīng)一趟排序后,最大值的元素移動(dòng)到最后的位置,其他值較大的元素也向最終位置移動(dòng),此過程稱為一趟冒泡。對于有n個(gè)數(shù)據(jù)的序列,共需n-1趟排序,第i趟對從l到n-i個(gè)數(shù)據(jù)進(jìn)行比較、交換。冒泡排序的最壞情況是待排序序列逆序,第l趟比較n-1次,第2趟比較n-2次。依此類推,最后趟比較1次,一共進(jìn)行n-l趟排序。因此,冒泡排序在最壞情況下的比較次數(shù)是(n-1)+(n-2)+…+l,結(jié)果為n(n-1)/2。本題的正確答案是選項(xiàng)C。

16.D本題中del(char*s)函數(shù)實(shí)現(xiàn)的功能是:逐個(gè)讀入S數(shù)組中的字符,如果遇到數(shù)字,則將數(shù)字存在s中,遇到非數(shù)字字符則跳過。所以最后輸出的應(yīng)該是字符串S中所有的數(shù)字的個(gè)數(shù)。

17.A本題綜合考查字符數(shù)組的賦值和strcpy函數(shù)的用法。C語言不允許用賦值表達(dá)式對字符數(shù)組賦值,如下面的語句就是非法的:str1='China',如果想把“China”這5個(gè)字符放到數(shù)組str1中,除了逐個(gè)輸入外,還能使用strcpy函數(shù),該函數(shù)的功能是將一個(gè)字符串復(fù)制到一字符數(shù)組中。例如,strcpy(str1,'China');或strcpy(str1,str2);注意,不能企圖用以下語句來實(shí)行賦值(將str2的值傳給str1):str1=str2;不能用賦值語句將一個(gè)字符串常量或字符數(shù)組直接給一個(gè)字符數(shù)組。

strcpy函數(shù)的結(jié)構(gòu)是:strcpy(字符數(shù)組1,字符串2)

其中,需要注意的是,字符數(shù)組1的長度不應(yīng)小于字符串2的長度,“字符數(shù)組1”必須寫成數(shù)組名形式,如(str1),“字符串2”可以是字符數(shù)組名,也可以是字符串常量,不能用賦值語句將一個(gè)字符串常量或字符數(shù)組直接給一個(gè)字符數(shù)組。

18.A題干中,a、b、c3個(gè)節(jié)點(diǎn)都是node類型,它們都有兩個(gè)成員:字符成員id,node類型指針成員next。由于a的next指向b,b的next指向c,因此a、b、c構(gòu)成了鏈表。要想刪除b節(jié)點(diǎn),只需要將a節(jié)點(diǎn)的next(p->next)指向c(p->next->next),然后將節(jié)點(diǎn)b的存儲(chǔ)空間釋放即可。所以刪除b節(jié)點(diǎn)的語句為“pt=p->next;p->next=p->next->next;free(pt);”。故本題答案為A選項(xiàng)。

19.B題目中的選項(xiàng)都以轉(zhuǎn)義字符“\\”開頭,“\\ddd”表示3位八進(jìn)制數(shù)代表的一個(gè)ASCII字符,“\\xhh”表示2位十六進(jìn)制數(shù)代表的一個(gè)ASCII字符。選項(xiàng)A中“089”是不合法的八進(jìn)制數(shù),錯(cuò)誤;選項(xiàng)C、D中“\\0X”或“\\0x”不合法,錯(cuò)誤;選項(xiàng)B表示八進(jìn)制數(shù)012代表的ASCII字符,正確。本題答案為B選項(xiàng)。

20.B

21.a=2b=1a=2,b=1解析:本題考查了switch結(jié)構(gòu)的內(nèi)容。C語言中,程序執(zhí)行完一個(gè)case標(biāo)號的內(nèi)容后,如果沒有break語句,控制結(jié)構(gòu)會(huì)轉(zhuǎn)移到下一個(gè)case繼續(xù)執(zhí)行,因?yàn)閏ase常量表達(dá)式只是起語句標(biāo)號作用,并不是在該處進(jìn)行條件判斷。本題程序在執(zhí)行完內(nèi)部switch結(jié)構(gòu)后,繼續(xù)執(zhí)行了外部switch結(jié)構(gòu)的case2分支,最后a和b的值分別為2和1。

22.5.04c=35.0,4,c=3解析:scanf(掐式控制,地址列表),如果在“格式控制”字符串中除了格式說明以外還有其他字符,則在輸入數(shù)據(jù)時(shí)應(yīng)輸入與這些字符相同的字符。所以此題中輸入數(shù)據(jù)的形式是5.04,c=3。

23.11<CR>23<CR>5(<CR代表換行)11<CR>23<CR>5(<CR,代表換行)解析:本題通過語句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”將數(shù)組中前面兩項(xiàng)的和賦值給數(shù)組當(dāng)前元素,得到a的值應(yīng)為(1,1,2,3,5)。語句if(i%2==0)pfintf('\\n')是要將數(shù)組中的元素以每行2個(gè)的形式輸出。

24.中序中序解析:在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷。前療遍歷是指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時(shí),仍然先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹。中序遍歷指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹;并且遍歷左、右子樹時(shí),仍然先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹。后序遍歷指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷右子樹,然后訪問根結(jié)點(diǎn),最后遍歷左子樹;并且遍歷左、右子樹時(shí),仍然先遍歷右子樹,然后訪問根結(jié)點(diǎn),最后遍歷左子樹。

25.123056009123\r\n056\r\n009解析:本題中,定義了一個(gè)元素類型為整型的二維數(shù)組a[][3]={1,2,3,4,5,6,7,8,9},它是一個(gè)3*3的矩陣,“for(i=0;i<3;i++)for(j=i=1;j<3;j++)a[j][i]=0;”將列下標(biāo)i小于行下標(biāo)j的元素a[1][0]、a[2][0]、a[2][1]賦值為0,最后“for(j=0;j<3;j++)printf('%n',a[i][j]);printf('\\n');”進(jìn)行換行輸出,所以輸出結(jié)果為:

123

056

009

26.str+strlen(p1)-1或str+strlen(str)-1或str-1+strlen(str)或str-1+strlen(p1)t==0或!t或t=='\0'huiwen(str)str+strlen(p1)-1或str+strlen(str)-1或str-1+strlen(str)或str-1+strlen(p1)\r\nt==0或!t或t=='\\0'\r\nhuiwen(str)解析:函數(shù)huiwen中開始定義了兩個(gè)字符指針p1和p2,并讓p1指向sb的開始位置,所以p2應(yīng)該指向str的尾部,即&str[strlen(str)-1]或?qū)懗蓅tr+strlen(str)-1或者其他等價(jià)形式。然后使用一個(gè)循環(huán),循環(huán)str的長度的一半次數(shù),比較p1和p2的內(nèi)容,并分別遞增和遞減這兩個(gè)指針。若有不同,則讓標(biāo)志t為1,并跳出循環(huán)。所以最后一個(gè)if語句應(yīng)該為判斷標(biāo)志t是否為1,即應(yīng)該填t==0或者其它等價(jià)形式。在主函數(shù)中,應(yīng)該輸出huiwen()函數(shù)的返回結(jié)果,即最后一空應(yīng)該填huiwen(str)。

27.自頂向下自頂向下解析:在程序設(shè)計(jì)時(shí),應(yīng)先考慮總體,后考慮細(xì)節(jié),逐步使問題具體化,對復(fù)雜的問題,應(yīng)該設(shè)計(jì)一些子目標(biāo)作為過渡,上述方法概括為:自頂向下,逐步細(xì)化。

28.共享性共享性解析:數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)能被不同的應(yīng)用程序使用,實(shí)現(xiàn)了數(shù)據(jù)的高度共享,從而降低了數(shù)據(jù)的冗余,這也是數(shù)據(jù)庫的主要目的。

29.4545解析:對于長度為N的線性表,在最壞情況下(即線性表中元素現(xiàn)在的順序與目標(biāo)順序正好相反),冒泡排序需要經(jīng)過N/2遍的從前往后的掃描和N/2遍的從后往前的掃描,需要的比較次數(shù)為N(N-1)/2。

30.00解析:本題中的for循環(huán)共執(zhí)行了6次,每執(zhí)行一次將相應(yīng)i的值相乘,最后當(dāng)i=-1時(shí)停止循環(huán).該for循環(huán)執(zhí)行完后t的值為5*4*3*2*1*0=0,故最后輸出I的值為0。

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

32.12300123001,2,3,0,0,1,2,3,0,0,解析:本題考查文件讀寫函數(shù)fread和fwrite的用法。fwrite函數(shù)將數(shù)組a的前5個(gè)元素輸出到文件fp中兩次,共10個(gè)字節(jié),再調(diào)用fread函數(shù)從文件fp中讀取這10個(gè)字節(jié)的數(shù)據(jù)到數(shù)組a中,此時(shí)數(shù)組a的內(nèi)容就變?yōu)閧1,2,3,0,0,1,2,3,0,0},最后的輸出結(jié)果為'1,2,3,0,0,1,2,3,0,0,'。

33.n-1jn-1\r\nj解析:此題采用了do…while循環(huán)內(nèi)嵌for循環(huán)的雙層循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)了數(shù)組元素的排序。數(shù)組元素通過首地址和數(shù)組下標(biāo)的方式來引用的。

34.11解析:計(jì)算表達(dá)式!a<b,先計(jì)算!a,因a的值為10,!a的值為0,而關(guān)系表達(dá)式0<20為真,所以表達(dá)式!a<b的值為1。

35.軟件工程學(xué)軟件工程學(xué)

36.6060解析:程序中定義a是一個(gè)3行2列的二維數(shù)組,p是指向兩個(gè)元素的一維數(shù)組指針,并讓p指向二維數(shù)組a的首行。則代碼*(*(p+2)+1)中的p+2指向二維數(shù)組a的第三行a[2],*(p+2)指向a[2[]0],*(p+2)+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60。

37.\0s*p++\\0\r\ns\r\n*p++解析:本題先通過for循環(huán)從鍵盤讀入20個(gè)字符,然后賦值'\\0'作為字符串結(jié)束標(biāo)志,再使指針p指向字符串的首地址,最后通過while循環(huán)對字符串進(jìn)行掃描并輸出。

38.QTHRGQTHRG解析:strcmp(t,s)函數(shù)用來比較t和s所指字符串的大小,若t>s,則函數(shù)值大于0;若t=s,則函數(shù)值等于0:若t<s,則函數(shù)值小于0。strcpy(t,s)函數(shù)的功能是把字符數(shù)組s所指字符串的內(nèi)容復(fù)制到字符數(shù)組t所指的存儲(chǔ)空間中。本題中,t[10]='CDEF'。第一次循環(huán),s[10]='BADEF',if語句的控制條件strcmp(t,s)<0不成立,接著執(zhí)行第二次循環(huán).s='QTHRG',if語句的控制條件strcmp(t,s)<0成立,執(zhí)行下列的語句,將字符數(shù)組s所指字符串的內(nèi)容復(fù)制到字符數(shù)組t所指的存儲(chǔ)空間中,然后輸出字符數(shù)組t。

39.s[i++]s[i++]解析:本題中為了能實(shí)現(xiàn)字符串的拷貝,需要使字符數(shù)組s從頭到尾依次遍歷其所有元素。本題應(yīng)使用i的自增后置來實(shí)現(xiàn)。

40.aabbccaabbcc解析:printf函數(shù)先輸出a,遇%c,接著輸出變量c1的值a,然后輸出bb,遇%t,從第9個(gè)位置開始輸出cc。

41.D軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中主要的資源有硬件資源、通信資源、輔助資源等。(1)硬件資源是指組成計(jì)算機(jī)及相關(guān)應(yīng)用所需要的硬件,它是軟件開發(fā)必不可少的資源,因?yàn)闊o論什么樣的軟件工具都需要在硬件上完成任務(wù),它是其他資源的基礎(chǔ)資源。(2)通信資源是指為軟件開發(fā)提供通信支撐的資源,它與測試數(shù)據(jù)無關(guān)。(3)支持軟件是指為軟件開發(fā)提供操作平臺的軟件,如常用的面向?qū)ο箝_發(fā)的Rose軟件,它主要是軟件開發(fā)的工具。通過對上述分析的總結(jié),可以知道本題的正確答案選D。

42.D

43.D

44.B

45.C解析:本題的選項(xiàng)A)和B)犯了同樣的錯(cuò)誤,即指針變量在定義后并沒有指向具體的變量。也就是說,指針變量中沒有確定的地址值,它的值是不可預(yù)見的,所指的單元也是不可預(yù)見的,因此不能進(jìn)行賦值操作。另外,在選項(xiàng)D)中,s是血型指針變量,p是char型指針變量,所指向的內(nèi)存單元所占用的字節(jié)數(shù)是不同的,因而不能將字符指針變量p的值賦給整型指針變量s。

46.A解析:選項(xiàng)A)是一個(gè)表達(dá)式,它后面沒有分號結(jié)尾(C語言中規(guī)定語句必須以分號結(jié)束),所以它不是語句;選項(xiàng)B)用一個(gè)花括號把幾條語句括起來了,這是一個(gè)復(fù)合語句;選項(xiàng)C)中只有一個(gè)分號,是一個(gè)空語句;選項(xiàng)D)是個(gè)復(fù)合語句,也是一個(gè)空語句。

47.D解析:本題首先定義了一個(gè)一維數(shù)組并初始化,接著定義了一個(gè)指針變量p指向數(shù)組x。因此可以通過指針p的下移,即每次加1引用數(shù)組x中的元素,來指向數(shù)組中的每個(gè)元素,這樣循環(huán)6次即可引用數(shù)組的每個(gè)元素。選項(xiàng)A、B和選項(xiàng)C滿足要求,而在選項(xiàng)D中表達(dá)式為(*p)++,該表達(dá)式是先取*p的值然后將其值加1,而沒有將指針下移一位。

48.C

49.CC。【解析】SQL語言的全稱為StructuredQueryLanguage,它是一種介于關(guān)系代數(shù)與關(guān)系演算之間的結(jié)構(gòu)化查詢語言,是一種面向數(shù)據(jù)庫的通用數(shù)據(jù)處理語言規(guī)范。它包含數(shù)據(jù)查詢語言、數(shù)據(jù)操縱語言、數(shù)據(jù)定義語言和數(shù)據(jù)控制語言4個(gè)部分。

50.D解析:函數(shù)fopen(constchar*filename,constchar*mode)的功能足以mode指定的模式打開filename指定的磁盤文件;fclose(FILE*fp)的功能是關(guān)閉文件指針fp指向的文件;函數(shù)fscanf(FILE*fp,constchar*format[,address,--])的功能是根據(jù)format中的格式從fp指向的文件中讀取數(shù)據(jù),并存入到相應(yīng)的address指向的變量中。函數(shù)fprintf(FILE*fp,constchar*format[,argument,--])的功能是把a(bǔ)rgument列表中的表達(dá)式值寫到fp所指向的文件中;函數(shù)fwrite(void*ptr,intsize,intn,FILE*fp)的功能足把ptr指向的緩沖區(qū)中的size×n個(gè)字節(jié)寫到文件指針fp指向的文件中。本題中首先定義了一個(gè)文件指針fp,然后通過函數(shù)fopen以可wb的方式打開文件data.dat,直接通過一個(gè)for循環(huán),每循環(huán)一次調(diào)用函數(shù)fwrite將數(shù)組中的元素a[i]的值寫進(jìn)fp所指的文件中,該循環(huán)共循環(huán)4次,循環(huán)完后fp所指文件的內(nèi)容為123,然后通過fclose函數(shù)關(guān)閉fp所指文件。接著通過函數(shù)fopen以rb的方式打開文件data.dat,通過fseek函數(shù)讓指針fp從文件末尾向前移動(dòng)兩個(gè)血型大小字節(jié),再通過函數(shù)fread從fp所指的文件畔,讀取一個(gè)int型大小的數(shù)據(jù)到變量b中,故此時(shí)b的值為3,因此最后輸出b的值為3,所以,4個(gè)選項(xiàng)中選項(xiàng)D符合題意。

51.B解析:所謂二叉樹的前序遍歷(DLR)是指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這3者中,首先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹,并且,在遍歷左右子樹時(shí),上述規(guī)則同樣適用,即“根-左-右”。故該二叉樹的前序遍歷結(jié)果為“ATBZXCYP”。對于本題,若使用后序遍歷和中序遍歷的結(jié)果分別為“ZBTYCPXA”和“TZBACYXP”。

52.C解析:宏替換不像函數(shù)調(diào)用要進(jìn)行參數(shù)值的計(jì)算、傳遞等,而只是簡單按照原格式進(jìn)行字符串的替換。注意:宏定義的命令格式。

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

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

55.D軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合。其中,程序是軟件開發(fā)人員根據(jù)用戶需求開發(fā)的、用程序設(shè)計(jì)語言描述的、適合計(jì)算機(jī)執(zhí)行的指令(語句)序列;數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu);文檔是與程序開發(fā)、維護(hù)和使用有關(guān)的圖文資料。因此本題的正確答案是D。

56.C

57.C解析:本題考查的知識點(diǎn)是表達(dá)式的表示。在該題中,x的n次方應(yīng)該調(diào)用函數(shù)pow(x,n)計(jì)算,故選項(xiàng)A、B排除。而在選項(xiàng)D中,pow(x,n)的參數(shù)寫反了。選項(xiàng)C正確。

58.B解析:本題涉及字符串最基本的兩個(gè)概念:①字符串的長度是指字符串中字符的個(gè)數(shù),但不包括字符串結(jié)束符;②以反斜杠“\\”開頭的特殊字符序列,意思是把反斜杠后面的字符序列轉(zhuǎn)換成特定的含義,而不是原來的含義,不包含在字符串長度之內(nèi),“\\”連同后面的字符為一個(gè)長度。

59.D

60.B解析:本題主要考查按位與運(yùn)算的知識點(diǎn)。按位與是對兩個(gè)運(yùn)算量相應(yīng)的位進(jìn)行邏輯與,“&”的規(guī)則與邏輯與“&&”相同。x=4的二進(jìn)制為00000100,y=5的二進(jìn)制為00000101,x&y=00000100,轉(zhuǎn)化為十進(jìn)制即為4。

61.C

62.D

63.B指針中存放的是變量的地址,指針也可以進(jìn)行增減運(yùn)算,這時(shí)指針移動(dòng)的最小單位是一個(gè)存儲(chǔ)單元,而不是一個(gè)字節(jié)。所以題中p+6指的是將指針向后移動(dòng)了6個(gè)存儲(chǔ)單元,即指向b[6],存放的是b[6]的地址。

64.D

65.B本題主要考查循環(huán)隊(duì)列的概念,循環(huán)隊(duì)列作為隊(duì)列的一種也應(yīng)該是線性結(jié)構(gòu)。隊(duì)列是一種邏輯結(jié)構(gòu),而循環(huán)隊(duì)列是一種順序存儲(chǔ)結(jié)構(gòu)的隊(duì)列。

66.D冒泡排序;依次比較相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個(gè)和第2個(gè)數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個(gè)數(shù)和第3個(gè)數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個(gè)數(shù),將小數(shù)放前,大數(shù)放后。至此第一趟結(jié)束,將最大的數(shù)放到了最后。在第二趟:仍從第一對數(shù)開始比較(因?yàn)榭赡苡捎诘?個(gè)數(shù)和第3個(gè)數(shù)的交換,使得第1個(gè)數(shù)不再小于第2個(gè)數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到倒數(shù)第二個(gè)數(shù)(倒數(shù)第一的位置上已經(jīng)是最大的),第二趟結(jié)束,在倒數(shù)第二的位置上得到一個(gè)新的最大數(shù)(其實(shí)在整個(gè)數(shù)列中是第二大的數(shù))。如此下去,重復(fù)以上過程,直至最終完成排序。

67.A

\n當(dāng)執(zhí)行g(shù)ets(ss)后,ss數(shù)組中的元素為ABC,再執(zhí)行strcat(ss,'6789'),strcat的作用,是把6789連接到了ss數(shù)組后面,執(zhí)行完后SS數(shù)組為ABC6789,故選擇A選項(xiàng)。

\n

68.D數(shù)組的表示為z[10],也不是一個(gè)函數(shù),函數(shù)應(yīng)該有形參,變量沒有那樣的表示法,賦初值的形式的不對。

69.AA?!窘馕觥拷Y(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則可以概括為自頂向下、逐步求精、模塊化、限制使用goto語句等。

70.Ac語言中的非執(zhí)行語句不會(huì)被編譯,不會(huì)生成二進(jìn)制的機(jī)器指令,因此A)選項(xiàng)錯(cuò)誤。由C語言構(gòu)成的指令序列稱為C源程序,c源程序經(jīng)過c語言編譯程序編譯之后生成一個(gè)后綴為obj的二進(jìn)制文件(稱為目標(biāo)文件);最后要由“連接程序”把此.0bj文件與c語言提供的各種庫函數(shù)連接起來生成一個(gè)后綴為.exe的可執(zhí)行文件。根據(jù)上述分析可知,A)選項(xiàng)敘述錯(cuò)誤。

71.C本題考查對面向?qū)ο蟮睦斫?,面向?qū)ο蟮某绦蛟O(shè)計(jì)是對象模擬問題領(lǐng)域中的實(shí)體,各對象之間相對獨(dú)立,相互依賴性小,通過消息來實(shí)現(xiàn)對象之間的相互聯(lián)系。

72.C

73.A“&”按位與,如果兩個(gè)相應(yīng)的二進(jìn)制位都為l,則該位的結(jié)果值為l,否則為0。

“r’按位或,即兩個(gè)相應(yīng)的二進(jìn)制位中只要有一個(gè)為l,該位的結(jié)果值為l。2的二進(jìn)制為00000010.4的二進(jìn)制為00000100,因此做或運(yùn)算結(jié)果為00000110,該數(shù)與51/1100000101做與運(yùn)算,結(jié)果為00000100,即4,選項(xiàng)A)正確。

74.C

75.B

76.Ax>y不成立,之后的if

和lelse都不執(zhí)行,輸出x++表達(dá)式值為1。

77.A

78.B兩個(gè)if語句的判斷條件都不滿足,程序只執(zhí)行了c=a這條語句,所以變量c的值等于3,變量b的值沒有變化,程序輸出的結(jié)果為3,5,3。

79.C

80.D

81.(1)錯(cuò)誤:while(tDeps)

正確:while(tD=eps)

(2)錯(cuò)誤:return(s);

82.1floatfun(floath)2{3inttmp=(int)(h*1000+5)/10;/*單精度數(shù)h乘以1000后再加5,相當(dāng)于對h中的第3位小數(shù)進(jìn)行四舍五入,除以10后將其賦給一個(gè)長整型數(shù)時(shí)就把第3位小數(shù)后的數(shù)全部截去*/4return(float)tmp/I00.0;/*除以100,保留2位小數(shù)*/5}注意:本題要求對變量h中的第3位小數(shù)進(jìn)行四舍五入運(yùn)算,而不是輸出,即不能用printf(“%7.2f”,h)輸出結(jié)果。四舍五入算法:如果要求精確到小數(shù)點(diǎn)后面的第n位,則需要對第n+1位進(jìn)行運(yùn)算。方法是將該小數(shù)乘以10的n+1次方后加5,然后除以10并強(qiáng)制轉(zhuǎn)換變量類型為整型,再將該數(shù)除以10的n次方,同時(shí)強(qiáng)制轉(zhuǎn)換類型為浮點(diǎn)型。代碼實(shí)現(xiàn)如下:intt;/*定義整型變量t*/t=(int)(h*10n+1+5)/10;/*對h進(jìn)行操作,得到浮點(diǎn)型值,t取值時(shí)取整數(shù)部分。10n+1為要擴(kuò)大的倍數(shù)*/h=(float)t/10n;/*將t縮小10n倍,并轉(zhuǎn)換成浮點(diǎn)型*/2022-2023年山東省日照市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.沒有任何關(guān)系

2.

3.考慮下圖中的程序段,①號語句的輸出結(jié)果是()。A.A.'a'B.'t'C.'c'D.'k'

4.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。

A.hAppychristmAs

B.happychristmas

C.HAppyCHrIstmAs

D.HAPPYCHRISTMAS

5.程序運(yùn)行后的輸出結(jié)果是()。A.3B.4C.1D.9

6.程序運(yùn)行后的輸出結(jié)果是()。A.10B.11C.20D.21

7.如有inta=11;則表達(dá)式(a++*1/3)的值是()。

A.0B.3C.4D.12

8.堆是一種有用的數(shù)據(jù)結(jié)構(gòu)。下列關(guān)鍵碼序列()是一個(gè)堆。

A.94,31,53,23,16,72

B.94,53,31,72,16,23

C.16,53,23,94,31,72

D.16,31,23,94,53,72

9.判斷一個(gè)棧ST(最多元素為Maxsize)為空的條件是()。

A.ST->top!==一1

B.ST->top==-1

C.ST->top!==Maxsize-1

D.ST->top==Maxsize-1

10.若x、y、z、m均為int型變量,則執(zhí)行下面語句后m的值是()m=1;x=2;y=3;m=(m<x)?m:x;m=(m<y)?m:y;m=(m<y)?m:z;

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

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

A.C語言函數(shù)可以嵌套調(diào)用,例如:fim(fun(X))

B.C語言程序是由過程和函數(shù)組成的

C.C語言函數(shù)不可以單獨(dú)編譯

D.C語言中除了main函數(shù)外,其他函數(shù)不可作為單獨(dú)文件形式存在

12.若要用函數(shù)fopen打開一個(gè)新的二進(jìn)制文件,該文件要既能讀也能寫,則應(yīng)以哪種方式打開文件()。

A.wbB.wb+C.rb+D.rb

13.已知函數(shù)test定義為()。A.執(zhí)行函數(shù)test后,函數(shù)沒有返回值

B.執(zhí)行函數(shù)test后,函數(shù)不再返回

C.執(zhí)行函數(shù)test后,函數(shù)返回任意類型值

D.以上三個(gè)答案都是錯(cuò)誤的

14.對線性表進(jìn)行二分法檢索,其前提條件是()。

A.線性表以順序方式存儲(chǔ),并按關(guān)鍵碼值排好序

B.線性表以順序方式存儲(chǔ),并按關(guān)鍵碼的檢索頻率排好序

C.線性表以鏈?zhǔn)椒绞酱鎯?chǔ),并按關(guān)鍵碼值排好序

D.線性表以鏈?zhǔn)椒绞酱鎯?chǔ),并按關(guān)鍵碼的檢索頻率排好序

15.冒泡排序在最壞情況下的比較次數(shù)是()。

A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2

16.下面程序的運(yùn)行結(jié)果是()。

#inelude<stdio.h>

voiddel(char*s)

{inti,j;

char*a;

a=s:

for(i=0,j=0;a[i]!='\0';i++)

{if(a[i]>='0'&&a[i]<='9')

{s[j]=a[i];

j++;

}

s[j]='\0';

}

}

main

{char*s="aa89gggh";

del(s):

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

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

17.第

11

若有定義:char*st="howareyou";下列程序段中正確的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

18.有以下程序:#include<stdio.h>structnode{charid;structnode*next;}a={‘A’},b={‘B’},c={‘C’},*p=&a,*pt;main(){p->next=&b;p=p->next;p->next=&c;p=p->next;p->next=NULL;p=&a;}若程序經(jīng)運(yùn)行后形成下圖所示的數(shù)據(jù)結(jié)構(gòu)。則以下可以刪除中間節(jié)點(diǎn)b的正確選項(xiàng)是()。

A.pt=p->next;p->next=p->next->next;free(pt);

B.pt=p->next;p->next=p->next->next->next;free(pt);

C.pt=&b;free(pt);

D.pt=&b;p->next=p->next->next->next;free(pt);

19.以下正確的字符常量是()。A.'\089'B.'\012'C.'\0XAB'D.'\0xab'

20.若一棵二叉樹具有10個(gè)度為2的結(jié)點(diǎn),5個(gè)度為1的結(jié)點(diǎn),則度為0的結(jié)點(diǎn)的個(gè)數(shù)是()。

A.9B.11C.15D.不能確定

二、2.填空題(20題)21.以下程序的運(yùn)行結(jié)果是【】。

#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;

case3:a++;b++;

}

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

}

22.若想通過以下輸入語句使a=5.0,b=4,c=3,則輸入數(shù)據(jù)的形式應(yīng)該是【】。

intb,c;floata;

scanf("%f,%d,c=%d",&a,&b,&c)

23.下列程序的運(yùn)行結(jié)果是______。

main()

{inti,a[10];

a[0]=a[1]=1;

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

a[i]=a[i-2]+a[i-1];

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

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

printf("%d",a[i]);

}

}

24.在先左后右的原貝嚇,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種:前序遍歷、【】遍歷和后序遍歷。

25.以下程序運(yùn)行后的輸出結(jié)果是【】。

main()

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

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

{for(j=0;j<3;j++)printf("%d",a[i][j]);

printf("\n");

}

}

26.以下程序中函數(shù)huiwen的功能是檢查一個(gè)字符串是否是回文,當(dāng)字符串是回文時(shí),函數(shù)返回字符串:yes!,否則函數(shù)返回字符串:no!,并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda。請?zhí)羁铡?/p>

#include<string.h>

char*huiwen(char*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=【】;

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;bteak;}

if(【】)return("yes!");

elsereturn("no!");

}

main()

{charsb[50];

printf("Input:");scanf("%s",str);

ptintf("%s\n",【】);

}

27.在程序設(shè)計(jì)階段應(yīng)該采取______和逐步求精的方法,把一個(gè)模塊的功能逐步分解,細(xì)化為一系列具體的步驟,繼而用某種程序設(shè)計(jì)語言寫成程序。

28.數(shù)據(jù)庫系統(tǒng)的主要特點(diǎn)為數(shù)據(jù)集成性、數(shù)據(jù)的高_(dá)_____和低冗余性、數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)一管理和控制。

29.度為10的線性表進(jìn)行冒泡排序,最壞情況下需要比較的次數(shù)為______。

30.有以下程序

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

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

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

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

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wb");

fwtite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

for(i=0;i<10;i++)printf("%d",a[i]);

}

33.本程序用改進(jìn)冒泡法對數(shù)組a[n]的元素從小到大排序,請?jiān)诔绦蚩瞻滋幪羁铡?/p>

voidbubble(inta[],intn)

{intj,k,jmax,temp;

jmax=【】;

do{

k=0;

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

if(a[j]>a[j+1])

{temp=a[j];a[j]=a[j+1];a[j+1]=temp;k=【】;

jmax=k;

}while(jmax>0);}

34.若已知a=10,b=20,則表達(dá)式!a<b的值為【】。

35.軟件危機(jī)出現(xiàn)于60年代末,為了解決軟件危機(jī),人們提出了【】的原理來設(shè)計(jì)軟件,這就是軟件工程誕生的基礎(chǔ)。

36.設(shè)有以下定義和語句,則*(*(p+2)+1)的值為【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

37.下面的程序是將從終端讀入的20個(gè)字符放入字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti;

chars[21],*p;

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

s[i]=getehar();

s[i]=【】;

p=【】;

while(*p)putchar(【】);

}

38.設(shè)有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序運(yùn)行后,從鍵盤上輸入(<CR>代表回車符):CDEF<CR>BADEF<CR>QTHRG<CR>,則程序的輸出結(jié)果是______。

39.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫?shí)現(xiàn)拷貝。(注:不使用逗號表達(dá)式)

whi1e()s[i]){d[j]=【】:j++;}

d[j]=0;

40.程序的運(yùn)行結(jié)果為【】。

main()

{charc1='a',c2='b',c3='c';

printf("a%cb%c\tc%c\n",c1,c2,c3);

}

三、1.選擇題(20題)41.軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測試數(shù)據(jù)屬于A.硬件資源B.通信資源C.支持軟件D.輔助資源

42.假定w、x,y、z、m均為int型變量,有如下程序段;w=1;x=2;y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m=(m<z)?m:z;則該程序段執(zhí)行后,m的值是()

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

43.若二維數(shù)組a有m列,且設(shè)a[0][0]位于數(shù)組的第一個(gè)位置上,則計(jì)算任一元素a[i][j]在數(shù)組中的位置的式子為()

A.i*m+jB.j*m+iC.i*m+j-1D.i*m+j+1

44.表示“在使用x之后,使x的值加1”的正確方式是()

A.++xB.x++C.+xD.+x+

45.請選出正確的程序段

A.int*p;scanf("%d",p);…

B.int*s,k;*s=100;…

C.int*s,k;char*p,c;s=&k;p=&c;*p='a';…

D.int*s,k;char*p,e;s=&k;p=&c;s=p;*s=1;…

46.下列不是合法的C語言語句是()。

A.a=5B.{inti;i++;}C.;D.{;}

47.沒有定義語句intx[6]={2,4,6,8,5,7},*p=x,i;要求依次輸出x數(shù)組6個(gè)元素中的值,不能完成此操作的語句是

A.for(i=0;i<6;i++)printf("%2d",*(p++));

B.for(i=0;i<6;i++)printf("%2d",*(p+i);

C.for(i=0;i<6;i++)printf("%2d",*p++);

D.for(i=0;i<6;i++)printf("%2d",(*p)++);

48.為了將所有擴(kuò)展名為.PAS的文件改成擴(kuò)展名為.P,應(yīng)使用命令()

A.REN*.PAS.?ASB.RENPASPC.REN*.PAS*.PD.REN*.PAS*.P??

49.SQL語言又稱為______。

A.結(jié)構(gòu)化定義語言B.結(jié)構(gòu)化控制語言C.結(jié)構(gòu)化查詢語言D.結(jié)構(gòu)化操縱語言

50.有以下程序(提示,程序中fseek(fp,-2L*sizeof(int),SEEK_END);語句的作用是使位置指針從文件末尾向前移2*sizeof(int)字節(jié)):#include<stdio.h>main(){FILE*fp;inti,a[4]={l,2,3,4},b;fp=fopen("data.dat","wb");for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);fclose(fp);fp=fopen("data.dar","rb");fseek(fp,-2L*sizeof(int),SEEKEND);fread(&b,sizeof(int),1,fp);/*從文件中讀取sizeof(int)字節(jié)的數(shù)據(jù)到變量b中*/fclose(fp);printf("%d\n",b);}執(zhí)行后輸出結(jié)果是()。

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

51.設(shè)有下列二叉樹:對此二叉樹前序遍歷的結(jié)果為()

A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY

52.以下程序的運(yùn)行結(jié)果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf("Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);}

A.Y=3B.存在語法錯(cuò)誤C.Y=7D.Y=0

53.以下程序中函數(shù)sort的功能足對a所指數(shù)組中的數(shù)據(jù)進(jìn)行由大到小的排序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");}程序運(yù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.1,2,3,8,7,6,5,4,9,10

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

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

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

55.軟件是指()。A.程序B.程序和文檔C.算法加數(shù)據(jù)結(jié)構(gòu)D.程序、數(shù)據(jù)與相關(guān)文檔的完整集合

56.若有定義intx,y;并已正確給變量賦值,則下列選項(xiàng)中與表達(dá)式(x-y)?(x++):(y++)中的條件表達(dá)式(x-y)等價(jià)的是()。

A.(x-y>0)B.(x-y<0)C.(x-y<0||x-y>0)D.(x-y==0)

57.與數(shù)學(xué)式子對應(yīng)的C語言表達(dá)式是

A.3*xn(2*x-1)

B.3*x**n(2*x-1)

C.3*pow(x,n)*(1/(2*x-1))

D.3*pow(n,x)/(2*x-1)

58.字符串"\\\"ABCDEF\"\\"的長度是()。

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

59.已知—個(gè)有序表為(12,18,24,35,47,50,62,83,90,115,134),當(dāng)二分查找值為47的元素時(shí),經(jīng)過______次比較后查找成功。

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

60.若x=

溫馨提示

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

評論

0/150

提交評論