2021-2022年安徽省阜陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第1頁
2021-2022年安徽省阜陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第2頁
2021-2022年安徽省阜陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第3頁
2021-2022年安徽省阜陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第4頁
2021-2022年安徽省阜陽市全國計(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)

文檔簡介

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

一、單選題(20題)1.軟件調(diào)試的目的是A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.驗(yàn)證軟件的正確性

2.若一組記錄的排序碼為(7,9,3,5,1,2,10),則利用堆排序的方法建立的初始堆為()

A.10,7,9,3,5,1,2

B.10,9,7,5,1,2,3

C.10,9,7,5,3,2,1

D.10,9,7,3,2,1,5

3.有以下程序程序執(zhí)行后的輸出結(jié)果是()

A.60B.50C.45D.55

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

5.

6.若有定義“inta,b;”,通過語句“scanf(“%d;%d,”&a,&b)能把整數(shù)3賦給變量a、5賦給變量b的輸入數(shù)據(jù)是()。

A.35B.3,5C.3;5D.35

7.有以下程序:#include<stdio.h>main(){ints[12]=(1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++) c[s[i]]++; for(i=1;i<5;i++) printf(“%d”,c[i]);printf(“\n”);}程序的運(yùn)行結(jié)果是()。

A.2344B.4332C.1234D.1123

8.設(shè)森林F對應(yīng)的二叉樹為B,它有m個結(jié)點(diǎn),B的根為p,p的右子樹的結(jié)點(diǎn)個數(shù)為n,森林F中第一棵樹的結(jié)點(diǎn)的個數(shù)是()。

A.m-nB.m-n-1C.n+1D.不能確定

9.帶有頭節(jié)點(diǎn)的單向鏈表head,其3個數(shù)據(jù)節(jié)點(diǎn)A、B、C的連接關(guān)系如下圖所示:節(jié)點(diǎn)類型的定義為structlink{doubledt;structlink*next;};若指針P指向A節(jié)點(diǎn),在不改變P指向的前提下,以下選項(xiàng)中不能訪問C節(jié)點(diǎn)數(shù)據(jù)成員dt的表達(dá)式是()。A.*(*p).next->next->dt

B.p->next->next->dt

C.(*(*(*p).next).next).dt

D.(*(p->next->next)).dt

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

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

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

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

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

13.以下能夠正確描述“k是大于0的偶數(shù)”的表達(dá)式是()。

A.(k>0)&&(k%2!=1)

B.(k>0)&&(k%2=0)

C.(k>0)||!(k%2)

D.(k>0)||(k%2==0)

14.需求分析階段的任務(wù)是確定()

A.軟件開發(fā)方法B.軟件開發(fā)工具C.軟件開發(fā)費(fèi)用D.軟件系統(tǒng)功能

15.有以下程序

#include<stdio.h>

main()

{inta=1,b=0;

if(--a)b++;

elseif(a==0)b+=2;

elseb+=3:

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

}

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

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

B.afgebcdhnopqmijklhnopqmijkl

C.efgabcdmnopqhijkl

D.mijklhnopqebcdafg

17.有以下程序:程序運(yùn)行后的輸出結(jié)果是()。A.1.000000B.0.000000C.0.250000D.0.500000

18.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}執(zhí)行程序時,給變量X輸入10,程序的輸出結(jié)果是()。A.55B.54C.65D.45

19.判斷一個順序存儲的隊(duì)列sp為空的條件是()。

A.sp->front=sp->rear

B.sp->front=sp->rear+1

C.sp->front=sp->rear-1

D.sp->front=NULL

20.

二、2.填空題(20題)21.設(shè)一棵完全二叉樹共有500個結(jié)點(diǎn),則在該二叉樹中有【】個葉子結(jié)點(diǎn)。

22.以下程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){intf,f1,f2,i;f1=0;f2=1;printf("%d%d",f1,f2);for(i=3;i<=5;i++){f=-f1+f2,printf("%d",f);f2=f1;f1=f;}printf("\n");}

23.設(shè)i,j,k均為int型變量,則執(zhí)行完下面的for語句后,k的值為【】。

for(i=0,j=10;i<=j;i++,j--)k=i+j;

24.在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖(DFD)中,利用【】對其中的圖形元素進(jìn)行確切解釋。

25.以下程序通過函數(shù)SunFun求。這里f(x)=x2+l,由F函數(shù)實(shí)現(xiàn)。請?zhí)羁铡?/p>

main()

{

printf("Thesum=%d\n",SunFun(10));

}

SunFun(intn)

{

intx,s=0;

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

S+=F(______);

returns;

}

F(intx)

{

return(______);

}

26.以下程序中函數(shù)huiwen的功能是檢查一個字符串是否是回文,當(dāng)字符串是回文時,函數(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.在面向?qū)ο蠓椒ㄖ校瑢ο笾g進(jìn)行通信的構(gòu)造稱為()。

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

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[0];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);

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

}

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

main()

{intx=10,y=20,t=0;

if(x==y)t=x;x=Y;Y=t;

printf(“%d,%d\n”,x,y);

}

30.以下程序給指針p分配三個double型動態(tài)內(nèi)存單元,請?zhí)羁铡?/p>

#include<stdio.h>

#include<stdlib.h>

main()

{double*p;

p=(double*)malloc(【】);

p[0]=1.5;p[1]=2.5;P[2]=3.5;

printf("%f%f%f\n",p[0],p[1],p[2]);

}

31.設(shè)二進(jìn)制數(shù)A是00101101,若想通過異或運(yùn)算ab使A的高4位取反,低4位不變,則二進(jìn)制數(shù)B應(yīng)是【】。

32.若有下列定義和語句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結(jié)果為______。

33.設(shè)順序輸入數(shù)列為:24,30,8,5,1,27,24,26,10,21,9,28,7,13,15。假定每個結(jié)點(diǎn)的查找概率相同,若用順序存儲方式組織該數(shù)列,則查找一個數(shù)成功的平均比較次數(shù)為【】;若按二叉排序樹結(jié)構(gòu)組織該數(shù)列,則查找一個數(shù)成功的平均比較次數(shù)為【】。

34.數(shù)據(jù)管理技術(shù)的發(fā)展過程經(jīng)過人工管理、文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)三個階段,其中數(shù)據(jù)獨(dú)立性最高的階段是【】。

35.閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是【】。

#include"stdio.h"

main()

{charfun(char,int);

chara='A';

intb=13;

a=fun(a,b);

putchar(a);}

charfun(chara,intb)

{chark;

k=a+b;

returnk;}

36.棧中允許進(jìn)行插入和刪除的一端叫做______。

37.分析下列程序:

main()

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

switch(a)

{case1:switch(b)

{case0:x++;

case1:y++;break;

}

case2:x++;y++;break;

}

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

}

運(yùn)行程序的輸出結(jié)果是______。

38.若有定義:inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},則初始化后,a[2][2]得到的初值是______。

39.類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的【】。

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

三、1.選擇題(20題)41.若變量已正確定義,下列正確的程序段是()。

A.while(ch=getchar()=='\N')putchar(ch);

B.while((ch=getchar())=='\n')putchar(ch);

C.while((ch=getchar())!='\N')putchar(ch);

D.while((ch=getchar())!='\n')putchar(ch);

42.有以下程序:voidchange(intk[]){k[0]=k[5];}main(){intx[10]=(1,2,3,4,5,6,7,8,9,10},n=0;while(n<=4){change(&x[n]);n++;}for(n=0;n<5;n++)printf("%d",x[n]);printf("\n");}程序運(yùn)行后輸出的結(jié)果是()。

A.678910B.13579C.12345D.62345

43.數(shù)據(jù)庫系統(tǒng)的核心部分是______。

A.數(shù)據(jù)模型B.數(shù)據(jù)庫C.數(shù)據(jù)庫管理系統(tǒng)D.計(jì)算機(jī)硬件

44.下列關(guān)于棧的描述正確的是()。

A.在棧中只能插入元素而不能刪除元素

B.在棧中只能刪除元素而不能插入元素

C.棧是特殊的線性表,只能在一端插入或刪除元素

D.棧是特殊的線性表,只能在一端插入元素,而在另一端刪除元素

45.有以下結(jié)構(gòu)體說明和變量定義,如圖所示,指針p、q、r分別指向此鏈表中的3個連續(xù)結(jié)點(diǎn)。structnode{intdata;structnode*next;}*p,*q,*r;

現(xiàn)要將q所指結(jié)點(diǎn)從鏈表中刪除,同時要保持鏈表的連續(xù),以下不能完成指定操作的語句是

A.p->next=q->next;

B.p-next=p->next->next;

C.p->next=r;

D.p=q->enxt;

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

A.在模塊化程序設(shè)計(jì)中,一個模塊應(yīng)該盡量多的包括與其他模塊聯(lián)系的信息

B.在自頂向下、逐步細(xì)化的設(shè)計(jì)過程中,首先應(yīng)設(shè)計(jì)解決問題的第一個細(xì)節(jié)

C.在模塊化程序設(shè)計(jì)中,一個模塊內(nèi)部的控制結(jié)構(gòu)也要符合結(jié)構(gòu)化原則

D.在程序設(shè)計(jì)過程中,不能同時采用結(jié)構(gòu)化程序設(shè)計(jì)方法與模塊化程序設(shè)計(jì)方法

47.下列程序的輸出結(jié)果是______。#defineSQR(X)X*Xmain(){inta=16,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}

A.16B.2C.9D.1

48.在C語言中,函數(shù)調(diào)用時()。

A.實(shí)參和形參各占獨(dú)立的存儲單元

B.實(shí)參和形參共用存儲單元

C.由系統(tǒng)自動確定實(shí)參和形參是否共用存儲單元

D.由用戶指定實(shí)參和形參是否共用存儲單元

49.下面程序的運(yùn)行結(jié)果是()。#include<stdio.h>voiddelch(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*item="a34bc";delch(item);printf("\n%s",item);}

A.abcB.34C.a34D.a34bc

50.fseek函數(shù)是C語言系統(tǒng)提供的標(biāo)準(zhǔn)庫函數(shù),其實(shí)現(xiàn)的具體操作是______。

A.實(shí)現(xiàn)文件的順序讀寫B(tài).實(shí)現(xiàn)文件的隨機(jī)讀寫C.改變文件的位置指針D.以上答案均不正確

51.以下程序運(yùn)行后,輸出結(jié)果是______。#include<stdio.h>#definePT5.5#difineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1f/n",S(a+b));}

A.49.5B.9.5C.22D.45

52.有以下程序:#include<stdio.h>voidf(int*x,int*y)intt;t=*x;*x=*y;*y=t;main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序運(yùn)行后的輸出結(jié)果是()。

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

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

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

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

53.數(shù)據(jù)結(jié)構(gòu)作為計(jì)算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算,以及()。A.A.數(shù)據(jù)的存儲結(jié)構(gòu)B.計(jì)算方法C.數(shù)據(jù)映象D.邏輯存儲

54.目前因特網(wǎng)(Internet)尚未提供的服務(wù)是()

A.電子郵件B.文件傳送C.遠(yuǎn)程使用計(jì)算機(jī)D.電視廣播

55.若有以下程序

#include<stdio.h>

inta[]={2,4,6,8};

main()

{inti;

int*p=a;

for(i=0;i<4;i++)a[i]=*p;

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

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

A.6B.8C.4D.2

56.已知下列函數(shù)定義setw(int*b,intm,intn,intdat){intk;for(k=0;k<m*n,k++){*b=dat;b++;}}則調(diào)用此函數(shù)的正確寫法是(假設(shè)變量a的說明為inta[50])()

A.setw(*a,5,8,1);

B.setw(&a,5,8,1);

C.setw((int*)a,5,8,1);

D.setw(a,5,8,1);

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

A.構(gòu)成C程序的基本單位是函數(shù)

B.可以在一個函數(shù)中定義另一個函數(shù)

C.main()函數(shù)必須放在其他函數(shù)之前

D.所有被調(diào)用的函數(shù)一定要在調(diào)用之前進(jìn)行定義

58.下列程序的輸出結(jié)果是()。#include<stdio.h>voidp(int*x){printf("%d",++*x);}voidmain(){inty=3;p(&y);}

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

59.以下運(yùn)算符中優(yōu)先級最高的運(yùn)算符是______。

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

60.在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示______。

A.控制程序的執(zhí)行順序B.模塊之間的調(diào)用關(guān)系C.數(shù)據(jù)的流向D.程序的組成成分

四、選擇題(20題)61.

62.

63.設(shè)有以下函數(shù):

voidfun(intn,char*s){…}

則下面對函數(shù)指針的定義和賦值均正確的是()。

A.void(*pf)();pf=fun;

B.void*pf();pf=fun

C.void*pf();*pf=fun;

D.void(*pf)(int,char);pf=&fun;

64.若a為int類型,且其值為3,則執(zhí)行完表達(dá)式a+=a-=a*a后,a的值是()。

A.-3B.9C.-12D.6

65.以下函數(shù)的功能是:通過鍵盤輸入數(shù)據(jù),為數(shù)組中的所有元素賦值。

#defineN10

voidmain(int__________)

{inti=0;

while(i<N)

scanf("%d",x+(i++));

}

A.*xB.x[N]C.xD.&x

66.有兩個關(guān)系R、S如下:

由關(guān)系R通過運(yùn)算得到關(guān)系s,則所使用的運(yùn)算為()。

A.選擇B.投影C.插入D.連接

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

A.C程序中注釋部分只能放在程序最后

B.花括號“{“和”}”可以作為函數(shù)體的定界符,也可以作為復(fù)合語句的定界符

C.構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名

D.分號不是語句的一部分,是C語句之間的分隔符

68.設(shè)有如下函數(shù)定義:

若執(zhí)行調(diào)用語句“l(fā)l=fm(3);”,則函數(shù)tim總共被調(diào)用的次數(shù)是()。

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

69.以下選項(xiàng)中不能作為C語言合法常量的是

A.’Fab’B.0.7e+9C."\b"D.’\01211’

70.

已知有如下結(jié)構(gòu)體:

structsk

{inta;

floatb;

}data,*p;

若有P=&data,則對data的成員a引用正確的是()。

A.(*p).data.a(chǎn)B.(*p).a(chǎn);C.p->data.a(chǎn)D.p.data.a(chǎn)

71.

72.

73.

74.

75.C語言中用于結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu)是A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

B.if、switch、break

C.for、while、do-while

D.if、for、continue

76.設(shè)有定義:charpE]={’1’,‘2’,’3’},*q=p;,以下不能計(jì)算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達(dá)式是()。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

77.

78.有三個關(guān)系R、S和T如下:

則由關(guān)系R和s得到關(guān)系T的操作是()。

A.自然連接B.并C.交D.差

79.

80.有以下程序

structst

{intx;

int*y;

}*p;

intdt[4]={1,2,3,4};

structstaa[4]={10,&dt[0],20,&dt[1],30,&dt[2],40,&dt[3]};

main()

{p=aa;

printf("%d\n",++p->x);

printf("%d\n",(++p)->x);

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

程序的運(yùn)行結(jié)果是

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:將m(1≤m≤10)個字符串連接起來,組成一個新串,放入pt所指字符串中,例如,把2個字符串a(chǎn)bc、CD串聯(lián)起來,結(jié)果是abcCD。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計(jì)題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個源程序文件prog1.c。在此程序中,已知學(xué)生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun(),該函數(shù)的功能是找出成績最低的學(xué)生記錄,通過形參將其返回主函數(shù)(規(guī)定只有一個最低分)。已給出函數(shù)的首部,請完成該函數(shù)。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)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本題考查軟件工程調(diào)試。調(diào)試與測試是兩個不同的過程,有著根本的區(qū)別:調(diào)試是一個隨機(jī)的、不可重復(fù)的過程,它用于隔離和確認(rèn)問題發(fā)生的原因,然后修改軟件來糾正問題;測試是一個有計(jì)劃的,可以重復(fù)的過程,它的目的是為了發(fā)現(xiàn)軟件中的問題。因此,軟件調(diào)試的目的是為了改正軟什中的錯誤。本題的正確答案是選項(xiàng)\u3000B。

2.B

3.A函數(shù)fun的功能是求數(shù)組的n個元素之和。fun(a,5)=15。由于s岫是靜態(tài)局部變量,所以保持l5不變,fun(b,4)=45,所以s=fun(a,5)+fun(b,4)=60。

4.C在for循環(huán)中,當(dāng)y的值為9、6或3時,執(zhí)行輸出語句,輸出表達(dá)式--Y的值。Y先自減l,然后再輸出y的值。

5.D

6.C輸入數(shù)據(jù)的格式必須與scanf的格式控制字符串完全匹配。函數(shù)中非格式字符需要原樣輸入,所以輸入時必須在3和5之間輸入“;”。故本題答案為C選項(xiàng)。

7.B在“for(i=0;i<12;i++)c[s[i]]++”中,數(shù)組元素s[i]的值作為數(shù)組c的下標(biāo)。當(dāng)退出循環(huán)時,數(shù)組c的4個元素的值分別為4、3、3、2。故本題答案為B選項(xiàng)。

8.A

9.Alink結(jié)構(gòu)體中的next是鏈表中下一個節(jié)點(diǎn)的地址。由于p當(dāng)前指向節(jié)點(diǎn)A,因此p->next是B的地址。p->next->next是C的地址,訪問C的節(jié)點(diǎn)數(shù)據(jù)成員dt可以使用C的地址訪問,即p->next->next->dt,選項(xiàng)B正確?;蛘呤褂媒庖谩?”運(yùn)算符:(*p)表示節(jié)點(diǎn)A,(*p).next表示B的地址,*((*p).next)表示節(jié)點(diǎn)B,(*((*p).next)).next表示C的地址,*((*((*p).next)).next)表示節(jié)點(diǎn)C,所以C的數(shù)據(jù)成員dt可以表示為(*((*(*p).next).next)).dt,因?yàn)椤?”運(yùn)算符優(yōu)先級高于“*”運(yùn)算符,所以也可以寫為(*(*(*p).next).next).dt,選項(xiàng)C正確。同理,也可以既使用指針運(yùn)算符,又使用解引用運(yùn)算符來訪問C的節(jié)點(diǎn)數(shù)據(jù)成員dt,即(*(p->next->next)).dt,選項(xiàng)D正確。選項(xiàng)A中,*p表示A節(jié)點(diǎn),(*p).next表示節(jié)點(diǎn)B的地址,由于“->”運(yùn)算符的優(yōu)先級高于“*”運(yùn)算符,因此先執(zhí)行“->”,即表達(dá)式(*p).next->next->dt引用了C節(jié)點(diǎn)的數(shù)據(jù)成員dt,然后再執(zhí)行解引用運(yùn)算“*”,這是錯誤的。故本題答案為A選項(xiàng)。

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

11.C冒泡排序的基本思想是:將相鄰的兩個元素進(jìn)行比較,如果反序,則交換;對于一個待排序的序列,經(jīng)一趟排序后,最大值的元素移動到最后的位置,其他值較大的元素也向最終位置移動,此過程稱為一趟冒泡。對于有n個數(shù)據(jù)的序列,共需n-1趟排序,第i趟對從l到n-i個數(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。

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

13.A判斷k大于0的表達(dá)式為“k>0”,判斷k是偶數(shù)的表達(dá)式為“k%2==0”或“k%2!=1”。兩個表達(dá)式必須都成立才能確定k是大于0的偶數(shù),則對應(yīng)的表達(dá)式為“(k>0)&&(k%2==0)”或“(k>0)&&(k%2!=1)”。故本題答案為A選項(xiàng)。

14.D解析:結(jié)構(gòu)化分析方法,數(shù)據(jù)流圖,數(shù)據(jù)字典,軟件需求規(guī)格說明書

評析,需求分析是軟件定義時期的最后一個階段,它的基本任務(wù)就是詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對象(組織,部門、企業(yè)等),充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在此基礎(chǔ)上確定新系統(tǒng)的功能.選項(xiàng)A)軟件開發(fā)方法是在總體設(shè)計(jì)階段完成的任務(wù);選項(xiàng)B)軟件開發(fā)工具是在實(shí)現(xiàn)階段需完成的任務(wù):選項(xiàng)C)軟件開發(fā)費(fèi)用是在可行性研究階段需完成的任務(wù)。

15.C解析:本題考察運(yùn)算符和選擇語句,執(zhí)行到if語句時,--a為0,所以不會執(zhí)行后面的語句,但是會執(zhí)行elseif后面的語句,所以執(zhí)行后,b=2,選項(xiàng)C)正確。

16.B程序首先定義二維字符數(shù)組v,使用4個字符串初始化,另外定義字符指針數(shù)組P。通過第1個for循環(huán),將v的4個字符串的首地址賦給p。第2for循環(huán)通過兩層內(nèi)嵌循環(huán)將p中元素指向的字符串首字母進(jìn)行排序交換。規(guī)則是將指向的字符串的首字母字符按照字母表中的順序排序后交換。注意,這里交換的是首字母,而不是整個字符串,所以程序輸出:afgebcdhnopqmijkl。本題答案為B選項(xiàng)。

17.D程序定義double變量x、y,給x賦初值2.0。if語句判斷,當(dāng)x小于0.0時,給y賦值0.0。否則當(dāng)x小于10.0時,y的值為1.0/x;當(dāng)x大于等于10.0時,y的值為1.0。題干中x的值為2.0,所以y的值為1.0/x,即0.500000。本題答案為D選項(xiàng)。

18.A函數(shù)intfun(intn)的功能是求1+2+…+n的值并返回。所以執(zhí)行程序時,給變量x輸入10后,執(zhí)行語句“x=fun(x);”,X的值將變?yōu)?到10中10個整數(shù)的累加和,即55。

19.A

20.D

21.250250解析:所謂完全二叉樹是指除最后一層外,每—層上的結(jié)點(diǎn)數(shù)均達(dá)到最大值;在最后—層上只缺少右邊的若干結(jié)點(diǎn)。具有n個結(jié)點(diǎn)的完全二叉樹,其父結(jié)點(diǎn)數(shù)為int(n/2),而葉子結(jié)點(diǎn)數(shù)等于總結(jié)點(diǎn)數(shù)減去父結(jié)點(diǎn)數(shù)。本題n=500,故父結(jié)點(diǎn)數(shù)等于int(500/2)=250,葉子結(jié)點(diǎn)數(shù)等于500-25=250。

22.0111201112解析:在主函數(shù)中定義了整型變量f1和f2,并把其值賦為0和1,在屏幕上輸出。然后在第一次運(yùn)行for循環(huán)語句時,變量f的值等于1,把其值輸出,把變量f1的值0賦給變量f2,變量f的值1賦給n,在執(zhí)行第二次for循環(huán)語句時,變量f的值等于1,把此值輸出。然后再把變量f1的值1賦給變量f2,變量f的值1賦給f1,在執(zhí)行第三次for循環(huán)語句時,變量f的值等于2,把此值輸出。所以程序運(yùn)行后的結(jié)果為01112。

23.1010解析:該for語句以i為0,j為10作為初始值,循環(huán)條件是i<=j,每次循環(huán)后i增1、j減1,循環(huán)體是將i與j的和賦給k,這樣變量k將保存的是最后一次賦給它的值。一次循環(huán)后i為1、j為9,二次循環(huán)后i為2、j為8,……,五次循環(huán)后i為5、j為5,第六次循環(huán),將i與j的和10賦給k后,i為6、j為4,循環(huán)結(jié)束,k值為10。

24.數(shù)據(jù)字典或DD數(shù)據(jù)字典或DD解析:數(shù)據(jù)流圖用來對系統(tǒng)的功能需求進(jìn)行建模,它可以用少數(shù)幾種符號綜合地反映出信息在系統(tǒng)中的流動、處理和存儲情況。數(shù)據(jù)詞典(DataDictionary,DD)用于對數(shù)據(jù)流圖中出現(xiàn)的所有成分給出定義,它使數(shù)據(jù)流圖上的數(shù)據(jù)流名字、加工名字和數(shù)據(jù)存儲名字具有確切的解釋。

25.xX*X+1或1+x*xx\r\nX*X+1或1+x*x解析:題目中要求從x=0開始將f(x)的值累加起來,直到x=10。在SunFun()函數(shù)中用了一個for循環(huán),每循環(huán)一次將f(x)累加到s中,所以在本題的第一個空格處我們應(yīng)該填x,,然后x+1,共循環(huán)10次。F()函數(shù)的功能應(yīng)該是求數(shù)學(xué)表達(dá)式f(x)得值,所以其返回值應(yīng)該為x*x+1。

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

27.消息消息解析:對象之間進(jìn)行通信的構(gòu)造叫做消息,它請求對象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。

28.66解析:經(jīng)過分析將遞歸函數(shù)寫成其數(shù)學(xué)表達(dá)式如下:

本題中定義了一個長度為3的數(shù)組aa并初始化。接著調(diào)用遞歸函數(shù)f,由上面的數(shù)學(xué)表達(dá)式以計(jì)算其返回值s=1+2+3=6,所以空格處應(yīng)該填6。

29.20020,0解析:在主函數(shù)中首先定義了三個整型變量x、y、t,并分別給它們賦初值為10,20,0,接著執(zhí)行if語句,在if后面括號內(nèi)的條件表達(dá)式中,條件“x==y”即“10==20”不成立,則不執(zhí)行其后的語句“t=x”,然后退出if語句,順序執(zhí)行語句x=Y;Y=t;。執(zhí)行完這兩條語句后x的值變?yōu)?0,y的值變?yōu)?,所以最后輸出x,y的值為20和0。

30.3*sizeof(double)或243*sizeof(double)或24解析:觀察程序可知,本題要求用malloc函數(shù)分配三個double型的動態(tài)內(nèi)存單元。

31.1111000011110000解析:按位異或運(yùn)算的一個重要應(yīng)用是讓某個整型變量的二進(jìn)制位取反,0變成1,而1變成0。這只要設(shè)計(jì)這樣一個位串信息,讓要變反的位為1,不要改變的位為0,用這個位串信息與整型變量按位加就能得到希望的結(jié)果。要使字節(jié)的高4位取反,低4位不變,則需要位串信息是11110000。

32.44解析:strcpy(s1,s2)函數(shù)的作用是將字符串s2中的內(nèi)容拷貝到字符串s1中的內(nèi)容覆蓋。strlen()函數(shù)是求字符串的長度。本題實(shí)際上是要求s2字符串的長度,即是4。

33.857/15

34.數(shù)據(jù)庫系統(tǒng)階段數(shù)據(jù)庫系統(tǒng)階段解析:在數(shù)據(jù)管理技術(shù)的發(fā)展過程中,經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段,其中數(shù)據(jù)獨(dú)立性最高的階段是數(shù)據(jù)庫系統(tǒng)階段。

35.NN解析:函數(shù)說明語句中的類型名必須與函數(shù)返回值的類型一致。本題實(shí)現(xiàn)的是在字符“A”的ASCII碼值上加上一個常數(shù),使之變成另一個ASCII碼值,從而輸出字符。

36.棧頂棧頂解析:棧是限定在表的一端進(jìn)行插入和刪除操作的線性表。在表中,允許插入和刪除的一端叫做“棧頂”,不允許插入和刪除的一端叫做“棧底”。

37.x=1y=0。x=1,y=0。解析:本題程序的主體部分是switch語句的嵌套結(jié)構(gòu),當(dāng)變量a的值為0時,在第一層switch-case語句中,沒有匹配的case分支。因此,x和y的值沒有變化,仍然是1和0。

38.88解析:二維數(shù)組可以看成是按矩陣形式排列的,題目中給二維數(shù)組賦初值是按行分段賦值的,a[4][4]可以分解為4個一維數(shù)組,其數(shù)組名分別為a[0]、a[1]、a[2]、a[3],這4個一維數(shù)組都有4個元素,a[0]的元素為ap[0][0]、a[0][1]、a[0][2]、a[0][3]。

39.實(shí)例將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象的集合。所以,類是對象的抽象,對象則是其對應(yīng)類的一個實(shí)例。

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

41.D解析:本題考查兩個知識點(diǎn):①C語言用'\\n'這個字符常量表示換行;②函數(shù)getchar()的作用是從終端輸入一個字符,當(dāng)遇到換行時結(jié)束輸入。

42.A解析:本題的change()函數(shù)實(shí)現(xiàn)的是:將傳入的地址值的高5個單位的地址中的內(nèi)容復(fù)制到傳入的地址當(dāng)中,即等價于*k=*(k+5)。在主函數(shù)中,首先通過while循環(huán),循環(huán)5次調(diào)用change()函數(shù),依次將x[0]~x[4]的地址傳入,所以while循環(huán)結(jié)束后,x[0]~x[4]中的內(nèi)容等于x[5]~x[9]中的內(nèi)容。所以輸出結(jié)果為678910,故應(yīng)該選擇A。

43.C解析:數(shù)據(jù)庫系統(tǒng)(BBS)是指在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng)構(gòu)成。因此,數(shù)據(jù)庫系統(tǒng)不僅包括數(shù)據(jù)本身,還包括相應(yīng)的硬件、軟件和各類人員。在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)庫管理系統(tǒng)DBMS是在特定操作系統(tǒng)支持下建立、使用、維護(hù)和管理數(shù)據(jù)庫的一種軟件。數(shù)據(jù)庫的一切操作都是通過數(shù)據(jù)庫管理系統(tǒng)來實(shí)現(xiàn)的。數(shù)據(jù)庫管理系統(tǒng)DBMS是數(shù)據(jù)庫系統(tǒng)的核心部分。

44.C解析:根據(jù)數(shù)據(jù)結(jié)構(gòu)對棧的定義及其特點(diǎn)可知:棧是限定只在表尾進(jìn)行插入或刪除操作的線性表,因此棧是先進(jìn)后出的線性表,對棧的插入與刪除操作,不需要改變棧底元素。棧是限定只在表尾進(jìn)行插入或刪除操作的線性表。

45.D解析:本題考查鏈表結(jié)點(diǎn)的刪除。q->next中存放的是r所指結(jié)點(diǎn)的首地址,將r所指結(jié)點(diǎn)的首地址存于p->next中,則實(shí)現(xiàn)刪除q所指結(jié)點(diǎn)的功能,并保持鏈表連續(xù),p所指結(jié)點(diǎn)與r所指結(jié)點(diǎn)相連。

46.CC?!窘馕觥吭谀K化程序設(shè)計(jì)中,模塊之間的聯(lián)系可以通過程序的控制結(jié)構(gòu)來實(shí)現(xiàn),在自頂向下、逐步細(xì)化的設(shè)計(jì)過程中,首先要考慮全局目標(biāo),而不是細(xì)節(jié)。在程序設(shè)計(jì)中模塊化和結(jié)構(gòu)化可以同時使用,一個模塊的內(nèi)部結(jié)構(gòu)也要符合結(jié)構(gòu)化設(shè)計(jì)原則。

47.B

48.A解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。函數(shù)的形參是函數(shù)定義時由用戶定義的形式上的變量,實(shí)參是函數(shù)調(diào)用時,主調(diào)函數(shù)為被調(diào)函數(shù)提供的原始數(shù)據(jù)。

在函數(shù)調(diào)用時,實(shí)參和其所對應(yīng)的形參分別占用不同的存儲單元,彼此之間不影響。

49.B解析:指針a通過數(shù)組元素下標(biāo)來從頭逐個的引用字符串item中的字符,判斷不是0~9之間的數(shù)字時,就去掉這個字符,所以程序結(jié)束后,字符串item中就只剩下34兩個字符了。注意:形參為指針變量時,實(shí)參和形參之間的數(shù)據(jù)傳遞。

50.C解析:fseek函數(shù)的原形為intfseek(FILE*fp,longoffset,intbase);函數(shù)的功能是將fp所指向的位置指針移到以base所指位置為基準(zhǔn)、以offset為位移量的位置。可見,fseek是改變文件的位置指針。

51.B解析:C語言中宏替換只是字符替換,因此:S(a+b)=PT*a+b*a+b=5.5*1+2*1+2=9.5。

52.D解析:程序中函數(shù)f的作用是交換指針變量x和y所指向的存儲單元的值。在main函數(shù)中,通過P=a;q=&a[7];指針變量p指向數(shù)組的第一個元素,指針變量q指向數(shù)組的最后一個元素。通過調(diào)用函數(shù)f(p,q)進(jìn)行前后對稱位置上的數(shù)組元素的交換。當(dāng)while循環(huán)4次(即p=q)后,a數(shù)組中各元素的值分別為8,7,6,5,4,3,2,1,所以程序輸出的結(jié)果為:8,7,6,5,4,3,2,1,

53.A解析:數(shù)據(jù)結(jié)構(gòu)作為計(jì)算機(jī)的一門學(xué)科,主要研究和討論以下三個方面的問題:①數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系,即數(shù)據(jù)的邏輯結(jié)構(gòu);②在對數(shù)據(jù)進(jìn)行處理時,各數(shù)據(jù)元素在計(jì)算機(jī)中的存儲關(guān)系,即數(shù)據(jù)的存儲結(jié)構(gòu);③對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算。

54.D

55.D解析:在C語言中,數(shù)組元素下標(biāo)是從0開始的;指針變量p指向數(shù)組的首地址。for循環(huán)語句中,指針變量p始終指向數(shù)組的首地址,因而執(zhí)行循環(huán)賦值語句后數(shù)組各元素的值均變?yōu)?。

56.D

57.A解析:本題綜合考查C語言的概念部分,關(guān)于C語言,我們應(yīng)該了解以下必須要掌握的基礎(chǔ)知識:

①C程序是由函數(shù)構(gòu)成的。

②一個函數(shù)由兩部分組成:函數(shù)的首部和函數(shù)體。

③一個C程序總是從main函數(shù)開始執(zhí)行的,而不論main函數(shù)的整個程序中的位置如何(main函數(shù)可以放在程序最開始,也可以放在程序最后,或?qū)懺谝恍┖瘮?shù)之前,在另一些函數(shù)之后)。

④C程序在書寫上,表現(xiàn)形式比較自由,一行內(nèi)可以寫幾個語句,一個語句可以分寫在幾行上。每個語句和數(shù)據(jù)定義的最后必須有一個分號。

⑤C程序本身沒有輸入輸出語句。輸入和輸出的操作是由庫函數(shù)scanf和printf等函數(shù)來完成。

⑥可以用/*……*/對C語言的程序的任何部分作注釋。

58.B解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。在函數(shù)調(diào)用時,形參是指向?qū)崊⒌闹羔樧兞浚瑒tprintf的執(zhí)行結(jié)果為3+1=4。

59.A解析:四個運(yùn)算符的優(yōu)先級由高到低依次是:++,&&,?:,!=。

60.C解析:數(shù)據(jù)流相當(dāng)于一條管道,并有一級數(shù)據(jù)(信息)流經(jīng)它。在數(shù)據(jù)流圖中,用標(biāo)有名字的箭頭表示數(shù)據(jù)流。數(shù)據(jù)流可以從加工流向加工,也可以從加工流向文件或從文件流向加工,并且可以從外部實(shí)體流向系統(tǒng)或從系統(tǒng)流向外部實(shí)體。

61.B

62.D

63.A\n函數(shù)指針的定義格式為函數(shù)類型(*指針變量名)(形參列表);函數(shù)名和數(shù)組名一樣代表了函數(shù)代碼的首地址,因此在賦值時,直接將函數(shù)指針指向函數(shù)名就行了。所以選項(xiàng)A正確。

\n

64.C解析:本題中首先定義一個整型變量a并給它賦初值為3,在表達(dá)式中,從右開始執(zhí)行,即先執(zhí)行“a-=a*a;”等價于a=a-a*a即a=3-3*3=-6,此時a的值為-6,接著執(zhí)行“a+=a-;”相當(dāng)于執(zhí)行a=a+a即a=-6+(-6)=-12,此時a的值為-12。所以,4個選項(xiàng)中選項(xiàng)C符合題意。

65.B由輸入函數(shù)的輸入項(xiàng),我們知道在這里x代表的是一個地址,而函數(shù)的功能是為數(shù)組中的所有元素賦值,而數(shù)組名代表的就是數(shù)組的首地址,所以數(shù)組名是x,因此空格中應(yīng)該填x[N].

66.B解析:專門的關(guān)系運(yùn)算包括:選擇、投影和連接。1、選擇:從關(guān)系中找出滿足給定條件的元組的操作稱為選擇。選擇是從行的角度進(jìn)行的運(yùn)算,即從水平方向抽取記錄。2、投影:從關(guān)系模式中指定若干個屬性組成新的關(guān)系。投影是從列的角度進(jìn)行的運(yùn)算,相當(dāng)于對關(guān)系進(jìn)行垂直分解。3、連接:連接是關(guān)系的橫向結(jié)合。連接運(yùn)算將兩個關(guān)系模式拼接成一個更寬的關(guān)系模式,生成的新關(guān)系中包含滿足連接條件的元組。連接過程是通過連接條件來控制的,連接條件中將出現(xiàn)兩個表中的公共屬性名,或者具有相同語義、可比的屬性。選擇和投影運(yùn)算的操作對象只是一個表。相當(dāng)于對一個二維表進(jìn)行切割。連接運(yùn)算需要兩個表操作為操作對象。由圖可知關(guān)系R通過運(yùn)算得到關(guān)系S。關(guān)系S與關(guān)系R相比,記錄的條數(shù)沒有發(fā)生變化,屬性的個數(shù)發(fā)生了變化。因此所使用的運(yùn)算應(yīng)該是投影。選項(xiàng)C插入運(yùn)算會增加記錄的條數(shù)。所以選項(xiàng)B是正確的。

67.B花括號可以作為函數(shù)體的定界符,也可以作為復(fù)合語句的定界符。函數(shù)是c程序的基本單位,用戶可以命名自定義函數(shù),而庫函數(shù)名是固定的。c語句以分號結(jié)尾,分號是語句的一部分。

68.B首先n=fun(3),3被當(dāng)作參數(shù)傳遞進(jìn)去,這就進(jìn)行了-次調(diào)用,3被當(dāng)做參數(shù)傳進(jìn)去后,程序會執(zhí)行這句deerctlu"nfun(k-1)+1;這就調(diào)用了第二次,而參數(shù)是3—1也就是2。2被當(dāng)做參數(shù)傳進(jìn)去后,程序會執(zhí)行這句elseremmfun(k—I)+1;這就調(diào)用了第三次,而參數(shù)是2-1也就是1。1被當(dāng)做參數(shù)傳進(jìn)去后,程序會執(zhí)行這句elseif(k==1)return1:不再遞歸調(diào)用,所以最終結(jié)果為3次。

69.A本題考查C語言中常量的定義。常量是指程序在運(yùn)行過程中,其值不能被改變的量。C語言中常見的常量主要有整型常量、實(shí)型常量、字符型常量。整型常量包括十進(jìn)制整數(shù),如456;八進(jìn)制整數(shù),以0開頭,如0456;十六進(jìn)制整數(shù),以0x開頭,如0x456。實(shí)型變量包括十進(jìn)制小數(shù)形式,如.456;指數(shù)形式,如456e0,字母e前面必須有數(shù)字,e后面的數(shù)字必須為整數(shù),如456e-4。字符型常量是用單撇號括起來的一個字符。如,’a’,’A’等。’a’不等于’A’。字符型常量還包括一種轉(zhuǎn)義字符,以’\\’開頭,表示將’\\’后面的字符轉(zhuǎn)換成另外的意義。字符串也可以作為常量,用雙撇號括起來,如'abc'。本題A選項(xiàng)中單撇號括起來的不是一個字符,而是三個字符,故不是合法常量。B選項(xiàng)是實(shí)型變量的指數(shù)表示形式。C選項(xiàng)是字符串常量,用雙撇號引起來。D選項(xiàng)是字符’\\0’,因?yàn)樵谂龅健痋\0’后,字符串結(jié)束,因此只讀取到’\\0’,所以D選項(xiàng)是合法常量。

70.B

\n本題主要考查結(jié)構(gòu)指針:P=&data,訪問結(jié)構(gòu)體的成員。它可以通過結(jié)構(gòu)變量訪問,即data,可以用等價的指針形式:(*p).a(chǎn)和P->a來訪問結(jié)構(gòu)體變量中的成員。

\n

71.D

72.A

73.D\r\n

74.A

75.A解析:結(jié)構(gòu)化程序由3種基本結(jié)構(gòu)組成,即順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)(包括for語句、while語句及do…\u3000while語句)和選擇結(jié)構(gòu)(包括if語句和switch語句)。

76.A根據(jù)題目中的定義可以知道sizeof(p),計(jì)算的是數(shù)組P中所有元素所占用的字節(jié)數(shù),而不是ch”型數(shù)據(jù)所占字節(jié)數(shù)。

77.B

78.D關(guān)系T中的元組是關(guān)系R中有面關(guān)系s中沒有的元組的集合,即從關(guān)系R中除去與關(guān)系s中相同元組后得到的關(guān)系T。所以做的是差運(yùn)算。

79.B

80.A題目給出的結(jié)構(gòu)體包含兩個成員,一個為整型變量,一個為整型指針。定義了一個結(jié)構(gòu)體數(shù)組aa,aa的大小為4,定義結(jié)構(gòu)體指針p。題目要求輸出“++p->x”,“(++p)->x”,“++(*p->y))”的值。“++p->x”是將p指向的結(jié)構(gòu)體變量中的成員n的值加1,然后使用p的初始值為aa,“++p->x”為將aa[0].x的值加1,結(jié)果為11?!?++p)->x”是將p的指針加1,指向aa[1],再將aa[1].x輸出,結(jié)果為20?!?+(*p->y))是求出當(dāng)前p所指向的結(jié)構(gòu)體變量中y地址中的值,再加1,當(dāng)前p所指的是aa[1],aa[1].y的值為&dt[1],該地址內(nèi)數(shù)據(jù)的值為2,進(jìn)行加1運(yùn)算后得到3,輸出結(jié)果為11,20,3。

81.(1)錯誤:intproc(charstrr3[103,intm,char*pt)

正確:voidproc(charstr[][10],intm,char*pt)

(2)錯誤:pt[i]=strEk,i3

正確:pt[i]=str[k][i]

【解析】由主函數(shù)中的函數(shù)調(diào)用和proc()函數(shù)的定義可知,函數(shù)proc()沒有返回值。因此,“intproc(charstr[][10],intm,char*pt)”中的int應(yīng)改為void;根據(jù)C語言的語法規(guī)則,二維數(shù)組的行下標(biāo)和列下標(biāo)應(yīng)分別加中括號,因此“pt[i]=str[k,i]”應(yīng)改為“pt[i]=str[k][i]”。

82.1fun(STUa[],STU*s)2{3inti;4*s=a[0];/*假設(shè)第1個元素值最小*/5for(i=0;i<N;i++)/*如果在循環(huán)的過程中再發(fā)現(xiàn)比第1個元素值更小的元素則賦給*s*/6if(s->s>a[i].s)7*s=a[i];8}題目要求找出結(jié)構(gòu)體數(shù)組元素中的最小值。假設(shè)數(shù)組中第1個元素值最小,即*s=a[0];,如果在循環(huán)的過程中發(fā)現(xiàn)比第1個元素值更小的,就將指針s指向該元素,直到找到值最小的元素。另外,本題還涉及結(jié)構(gòu)體中的指向運(yùn)算符。2021-2022年安徽省阜陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.軟件調(diào)試的目的是A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.驗(yàn)證軟件的正確性

2.若一組記錄的排序碼為(7,9,3,5,1,2,10),則利用堆排序的方法建立的初始堆為()

A.10,7,9,3,5,1,2

B.10,9,7,5,1,2,3

C.10,9,7,5,3,2,1

D.10,9,7,3,2,1,5

3.有以下程序程序執(zhí)行后的輸出結(jié)果是()

A.60B.50C.45D.55

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

5.

6.若有定義“inta,b;”,通過語句“scanf(“%d;%d,”&a,&b)能把整數(shù)3賦給變量a、5賦給變量b的輸入數(shù)據(jù)是()。

A.35B.3,5C.3;5D.35

7.有以下程序:#include<stdio.h>main(){ints[12]=(1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++) c[s[i]]++; for(i=1;i<5;i++) printf(“%d”,c[i]);printf(“\n”);}程序的運(yùn)行結(jié)果是()。

A.2344B.4332C.1234D.1123

8.設(shè)森林F對應(yīng)的二叉樹為B,它有m個結(jié)點(diǎn),B的根為p,p的右子樹的結(jié)點(diǎn)個數(shù)為n,森林F中第一棵樹的結(jié)點(diǎn)的個數(shù)是()。

A.m-nB.m-n-1C.n+1D.不能確定

9.帶有頭節(jié)點(diǎn)的單向鏈表head,其3個數(shù)據(jù)節(jié)點(diǎn)A、B、C的連接關(guān)系如下圖所示:節(jié)點(diǎn)類型的定義為structlink{doubledt;structlink*next;};若指針P指向A節(jié)點(diǎn),在不改變P指向的前提下,以下選項(xiàng)中不能訪問C節(jié)點(diǎn)數(shù)據(jù)成員dt的表達(dá)式是()。A.*(*p).next->next->dt

B.p->next->next->dt

C.(*(*(*p).next).next).dt

D.(*(p->next->next)).dt

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

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

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

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

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

13.以下能夠正確描述“k是大于0的偶數(shù)”的表達(dá)式是()。

A.(k>0)&&(k%2!=1)

B.(k>0)&&(k%2=0)

C.(k>0)||!(k%2)

D.(k>0)||(k%2==0)

14.需求分析階段的任務(wù)是確定()

A.軟件開發(fā)方法B.軟件開發(fā)工具C.軟件開發(fā)費(fèi)用D.軟件系統(tǒng)功能

15.有以下程序

#include<stdio.h>

main()

{inta=1,b=0;

if(--a)b++;

elseif(a==0)b+=2;

elseb+=3:

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

}

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

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

B.afgebcdhnopqmijklhnopqmijkl

C.efgabcdmnopqhijkl

D.mijklhnopqebcdafg

17.有以下程序:程序運(yùn)行后的輸出結(jié)果是()。A.1.000000B.0.000000C.0.250000D.0.500000

18.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}執(zhí)行程序時,給變量X輸入10,程序的輸出結(jié)果是()。A.55B.54C.65D.45

19.判斷一個順序存儲的隊(duì)列sp為空的條件是()。

A.sp->front=sp->rear

B.sp->front=sp->rear+1

C.sp->front=sp->rear-1

D.sp->front=NULL

20.

二、2.填空題(20題)21.設(shè)一棵完全二叉樹共有500個結(jié)點(diǎn),則在該二叉樹中有【】個葉子結(jié)點(diǎn)。

22.以下程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){intf,f1,f2,i;f1=0;f2=1;printf("%d%d",f1,f2);for(i=3;i<=5;i++){f=-f1+f2,printf("%d",f);f2=f1;f1=f;}printf("\n");}

23.設(shè)i,j,k均為int型變量,則執(zhí)行完下面的for語句后,k的值為【】。

for(i=0,j=10;i<=j;i++,j--)k=i+j;

24.在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖(DFD)中,利用【】對其中的圖形元素進(jìn)行確切解釋。

25.以下程序通過函數(shù)SunFun求。這里f(x)=x2+l,由F函數(shù)實(shí)現(xiàn)。請?zhí)羁铡?/p>

main()

{

printf("Thesum=%d\n",SunFun(10));

}

SunFun(intn)

{

intx,s=0;

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

S+=F(______);

returns;

}

F(intx)

{

return(______);

}

26.以下程序中函數(shù)huiwen的功能是檢查一個字符串是否是回文,當(dāng)字符串是回文時,函數(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.在面向?qū)ο蠓椒ㄖ校瑢ο笾g進(jìn)行通信的構(gòu)造稱為()。

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

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[0];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);

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

}

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

main()

{intx=10,y=20,t=0;

if(x==y)t=x;x=Y;Y=t;

printf(“%d,%d\n”,x,y);

}

30.以下程序給指針p分配三個double型動態(tài)內(nèi)存單元,請?zhí)羁铡?/p>

#include<stdio.h>

#include<stdlib.h>

main()

{double*p;

p=(double*)malloc(【】);

p[0]=1.5;p[1]=2.5;P[2]=3.5;

printf("%f%f%f\n",p[0],p[1],p[2]);

}

31.設(shè)二進(jìn)制數(shù)A是00101101,若想通過異或運(yùn)算ab使A的高4位取反,低4位不變,則二進(jìn)制數(shù)B應(yīng)是【】。

32.若有下列定義和語句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結(jié)果為______。

33.設(shè)順序輸入數(shù)列為:24,30,8,5,1,27,24,26,10,21,9,28,7,13,15。假定每個結(jié)點(diǎn)的查找概率相同,若用順序存儲方式組織該數(shù)列,則查找一個數(shù)成功的平均比較次數(shù)為【】;若按二叉排序樹結(jié)構(gòu)組織該數(shù)列,則查找一個數(shù)成功的平均比較次數(shù)為【】。

34.數(shù)據(jù)管理技術(shù)的發(fā)展過程經(jīng)過人工管理、文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)三個階段,其中數(shù)據(jù)獨(dú)立性最高的階段是【】。

35.閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是【】。

#include"stdio.h"

main()

{charfun(char,int);

chara='A';

intb=13;

a=fun(a,b);

putchar(a);}

charfun(chara,intb)

{chark;

k=a+b;

returnk;}

36.棧中允許進(jìn)行插入和刪除的一端叫做______。

37.分析下列程序:

main()

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

switch(a)

{case1:switch(b)

{case0:x++;

case1:y++;break;

}

case2:x++;y++;break;

}

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

}

運(yùn)行程序的輸出結(jié)果是______。

38.若有定義:inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},則初始化后,a[2][2]得到的初值是______。

39.類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的【】。

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

三、1.選擇題(20題)41.若變量已正確定義,下列正確的程序段是()。

A.while(ch=getchar()=='\N')putchar(ch);

B.while((ch=getchar())=='\n')putchar(ch);

C.while((ch=getchar())!='\N')putchar(ch);

D.while((ch=getchar())!='\n')putchar(ch);

42.有以下程序:voidchange(intk[]){k[0]=k[5];}main(){intx[10]=(1,2,3,4,5,6,7,8,9,10},n=0;while(n<=4){change(&x[n]);n++;}for(n=0;n<5;n++)printf("%d",x[n]);printf("\n");}程序運(yùn)行后輸出的結(jié)果是()。

A.678910B.13579C.12345D.62345

43.數(shù)據(jù)庫系統(tǒng)的核心部分是______。

A.數(shù)據(jù)模型B.數(shù)據(jù)庫C.數(shù)據(jù)庫管理系統(tǒng)D.計(jì)算機(jī)硬件

44.下列關(guān)于棧的描述正確的是()。

A.在棧中只能插入元素而不能刪除元素

B.在棧中只能刪除元素而不能插入元素

C.棧是特殊的線性表,只能在一端插入或刪除元素

D.棧是特殊的線性表,只能在一端插入元素,而在另一端刪除元素

45.有以下結(jié)構(gòu)體說明和變量定義,如圖所示,指針p、q、r分別指向此鏈表中的3個連續(xù)結(jié)點(diǎn)。structnode{intdata;structnode*next;}*p,*q,*r;

現(xiàn)要將q所指結(jié)點(diǎn)從鏈表中刪除,同時要保持鏈表的連續(xù),以下不能完成指定操作的語句是

A.p->next=q->next;

B.p-next=p->next->next;

C.p->next=r;

D.p=q->enxt;

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

A.在模塊化程序設(shè)計(jì)中,一個模塊應(yīng)該盡量多的包括與其他模塊聯(lián)系的信息

B.在自頂向下、逐步細(xì)化的設(shè)計(jì)過程中,首先應(yīng)設(shè)計(jì)解決問題的第一個細(xì)節(jié)

C.在模塊化程序設(shè)計(jì)中,一個模塊內(nèi)部的控制結(jié)構(gòu)也要符合結(jié)構(gòu)化原則

D.在程序設(shè)計(jì)過程中,不能同時采用結(jié)構(gòu)化程序設(shè)計(jì)方法與模塊化程序設(shè)計(jì)方法

47.下列程序的輸出結(jié)果是______。#defineSQR(X)X*Xmain(){inta=16,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}

A.16B.2C.9D.1

48.在C語言中,函數(shù)調(diào)用時()。

A.實(shí)參和形參各占獨(dú)立的存儲單元

B.實(shí)參和形參共用存儲單元

C.由系統(tǒng)自動確定實(shí)參和形參是否共用存儲單元

D.由用戶指定實(shí)參和形參是否共用存儲單元

49.下面程序的運(yùn)行結(jié)果是()。#include<stdio.h>voiddelch(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*item="a34bc";delch(item);printf("\n%s",item);}

A.abcB.34C.a34D.a34bc

50.fseek函數(shù)是C語言系統(tǒng)提供的標(biāo)準(zhǔn)庫函數(shù),其實(shí)現(xiàn)的具體操作是______。

A.實(shí)現(xiàn)文件的順序讀寫B(tài).實(shí)現(xiàn)文件的隨機(jī)讀寫C.改變文件的位置指針D.以上答案均不正確

51.以下程序運(yùn)行后,輸出結(jié)果是______。#include<stdio.h>#definePT5.5#difineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1f/n",S(a+b));}

A.49.5B.9.5C.22D.45

52.有以下程序:#include<stdio.h>voidf(int*x,int*y)intt;t=*x;*x=*y;*y=t;main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序運(yùn)行后的輸出結(jié)果是()。

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

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

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

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

53.數(shù)據(jù)結(jié)構(gòu)作為計(jì)算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算,以及()。A.A.數(shù)據(jù)的存儲結(jié)構(gòu)B.計(jì)算方法C.數(shù)據(jù)映象D.邏輯存儲

54.目前因特網(wǎng)(Internet)尚未提供的服務(wù)是()

A.電子郵件B.文件傳送C.遠(yuǎn)程使用計(jì)算機(jī)D.電視廣播

55.若有以下程序

#include<stdio.h>

inta[]={2,4,6,8};

main()

{inti;

int*p=a;

for(i=0;i<4;i++)a[i]=*p;

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

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

A.6B.8C.4D.2

56.已知下列函數(shù)定義setw(int*b,intm,intn,intdat){intk;for(k=0;k<m*n,k++){*b=dat;b++;}}則調(diào)用此函數(shù)的正確寫法是(假設(shè)變量a的說明為inta[50])()

A.setw(*a,5,8,1);

B.setw(&a,5,8,1);

C.setw((int*)a,5,8,1);

D.setw(a,5,8,1);

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

A.構(gòu)成C程序的基本單位是函數(shù)

B.可以在一個函數(shù)中定義另一個函數(shù)

C.main()函數(shù)必須放在其他函數(shù)之前

D.所有被調(diào)用的函數(shù)一定要在調(diào)用之前進(jìn)行定義

溫馨提示

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

評論

0/150

提交評論