2021年四川省雅安市全國計算機(jī)等級考試C語言程序設(shè)計_第1頁
2021年四川省雅安市全國計算機(jī)等級考試C語言程序設(shè)計_第2頁
2021年四川省雅安市全國計算機(jī)等級考試C語言程序設(shè)計_第3頁
2021年四川省雅安市全國計算機(jī)等級考試C語言程序設(shè)計_第4頁
2021年四川省雅安市全國計算機(jī)等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩112頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021年四川省雅安市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.能正確表示x>=3或者x<1的關(guān)系表達(dá)式是()。

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

2.在存儲數(shù)據(jù)時,通常不僅要存儲各數(shù)據(jù)元素的值,而且還要存儲()。

A.數(shù)據(jù)的處理方法B.數(shù)據(jù)元素的類型C.數(shù)據(jù)元素之間的關(guān)系D.數(shù)據(jù)的存儲方法

3.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序運(yùn)行后,若從鍵盤輸入(從第1列開始)

123<回車>

45678<回車>

則輸出結(jié)果是

A.1267B.1256C.1278D.1245

4.在C語言中,函數(shù)返回值的類型最終取決于()。

A.函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型

B.return語句中表達(dá)式值的類型

C.調(diào)用函數(shù)時主調(diào)函數(shù)所傳遞的實(shí)參類型

D.函數(shù)定義時形參的類型

5.一個序列中有10000個元素,若只想得到其中前10個最小元素,最好采用_______方法

A.快速排序B.堆排序C.插入排序D.二路歸并排序

6.在ASC算法team日常開發(fā)中,常常面臨一些數(shù)據(jù)結(jié)構(gòu)的抉擇,令人糾結(jié)。目前大家在策劃一個FBI項目(FastBinaryIndexing),其中用到的詞匯有6200條,詞匯長度在10-15之間,詞匯字符是英文字母,區(qū)分大小寫。請在下面幾個數(shù)據(jù)結(jié)構(gòu)中選擇一個使檢索速度最快的()

A.二叉搜索樹,比較函數(shù)開銷:1次運(yùn)算/每字符

B.哈希表,hash算法開銷:10次運(yùn)算/每字符

C.鏈表,比較函數(shù)開銷:1次運(yùn)算/每字符

D.TRIE樹,尋找子節(jié)點(diǎn)開銷:1次運(yùn)算/每字符

7.交換兩個變量的值,不允許用臨時變量,應(yīng)該使用下列()位運(yùn)算符。

A.&.B.^C.||D.~

8.在位運(yùn)算中,操作數(shù)每左移兩位,其結(jié)果相當(dāng)于()。

A.操作數(shù)乘以2B.操作數(shù)除以2C.操作數(shù)除以4D.操作數(shù)乘以4

9.下列能正確進(jìn)行字符串賦值的是()。A.B.C.D.

10.

11.標(biāo)準(zhǔn)庫函數(shù)fgets(s,n,file)的功能是()。

A.從文件file中讀取長度為n的字符串存入字符數(shù)s由

B.從文件file中讀取長度不超過n-1個字符的字符放到字符數(shù)組S中

C.從文件file中讀到n個字符串存入字符數(shù)組s中

D.從文件file中讀取長度為n-1個字符的字符串存字符數(shù)組S中

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

A.數(shù)據(jù)庫系統(tǒng)是一個獨(dú)立的系統(tǒng),不需要操作系統(tǒng)的支持

B.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的共享問題

C.數(shù)據(jù)庫管理系統(tǒng)就是數(shù)據(jù)庫系統(tǒng)

D.以上3種說法都不對

13.下列一維數(shù)組初始化語句中,正確且與語句floata[]={0,3,8,0,9};等價的是().

A.floata[6]={0,3,8,0,9};

B.floata[4]={0,3,8,0,9};

C.floata[7]={0,3,8,0,9};

D.floata[5]={0,3,8,0,9};

14.有以下程序:main(){intk=5,n=0;do{switch(k){case1:case3:n+=l;k--;break;defalut:n=0;k--;case2:case4:n+=2;k--;break:}printf("%d",n);}while(k>0&&n<5);}程序運(yùn)行后的輸出結(jié)果是()。A.235B.0235C.02356D.2356

15.設(shè)有以下語句:inta=1,b=2,c;c=a^(b<<2);執(zhí)行后,c的值為()。A.6B.7C.8D.9

16.有以下程序:

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

A.0987654321

B.4321098765

C.5678901234

D.0987651234

17.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“TEXT”,*b=“++”,c[3]=“1”;printf(“%d,%d,”,strlen(a),sizeof(a));printf(“%d,%d,”,strlen(b),sizeof(b));printf(“%d,%d,\n”,strlen(c),sizeof(c));}程序運(yùn)行后的輸出結(jié)果是()。A.4,5,2,4,1,3,B.4,4,2,2,1,1,C.5,5,3,3,2,2,D.4,4,2,2,1,3

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

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

19.在以下的敘述中,正確的是()。

A.線性表的順序存儲結(jié)構(gòu)優(yōu)于鏈表存儲結(jié)構(gòu)

B.二維數(shù)組是其數(shù)據(jù)元素為線性表的線性表

C.棧的操作方式是先進(jìn)先出

D.隊列的操作方式是先進(jìn)后出

20.若有定義語句:“charsE10]="1234567\0\0";”,則strlen(s)的值是()。A.A.7B.8C.9D.10

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

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

22.Jackson方法是一種面向【】的結(jié)構(gòu)化方法。

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

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

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

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

10ngfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

printf("%1d\n",x);}

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

intm=17;

intfun(intx,inty)

{intm=3;

return(x*Y-m);

}

main()

{inta=5,b=7;

printf("%d\n",fun(a,B)/m);

}

27.軟件維護(hù)活動包括以下幾類:改正性維護(hù)、適應(yīng)性維護(hù)、【】維護(hù)和預(yù)防性維護(hù)。

28.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們之和。請?zhí)羁铡?/p>

main()

{

inti,a[20],sum,count;

sum=count=0;

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

scanf("%d",(______);

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

{

if(a[i]>0)

{

count++;

sum+=(______);

}

}

printf("sum=%d,count-%dkn",sum,count);

}

29.若a的值為1,則表達(dá)式!a‖++a的值是______。

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

31.以下函數(shù)用來求出2個整數(shù)之和,并通過形參將結(jié)果傳回。

voidfunc(intx,inty,【】z)

{*z=x+y;}

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

main()

{inti,j,row=0,colum=0,max,

a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};

max=a[0][0];

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

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

if(max<a[i][j])

{max=a[i][j];

row=i;

colum=j;

}

printf("max=%-5drow=%-3dcolum=%-3d\n",max,row,colum);

}

33.以下程序中函數(shù)fun的功能是:構(gòu)成一個如圖所示的帶頭結(jié)點(diǎn)的單向鏈表,在結(jié)點(diǎn)的數(shù)據(jù)域中放入了具有兩個字符的字符串。函數(shù)disp的功能是顯示輸出該單鏈表中所有結(jié)點(diǎn)中的字符串。請?zhí)羁胀瓿珊瘮?shù)disp。

#include<stdio.h>

typedefstructnode/*鏈表結(jié)點(diǎn)結(jié)構(gòu)*/

{charsub[3];

structnode*next;

}Node;

Nodefun(chars)/*建立鏈表*/

{……}

voiddisp(Node*h)

{Node*p;

p=h->next;

while(【】)

{printf("%s\n",P->sub);p=【】;}

}

main()

{Node*hd;

hd=fun();disp(hd);printf("\n");

}

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

#include<stdio.h>

main()

{charm;

m='B'+32;

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

}

35.下列表達(dá)式用于判斷y是否為閏年。閏年的判斷條件是:年號能被4整除但不能被100整除或年號能被400整除,請?zhí)羁誣_____。

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

main()

{inti;

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

{if(i>4)

{printf("%d\n",i);

break;}

printf("%d\n",i++);}}

37.請在以下程序第一行的下劃線處填寫適當(dāng)內(nèi)容,使程序能正確運(yùn)行。

【】(double,double);

main()

{doublex,y;

seanf("%1f%1f",&x,&y);

pfintf("%1f\n",max(x,y));

}

doublemax(doublea,doubleb)

{return(a>b?a:b);}

38.診斷和改正程序中錯誤的工作通常稱為【】。

39.下述函數(shù)統(tǒng)計—個字符串中的單詞個數(shù),單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】='')flag=0;

elseif(【】){flag=1;num++}

}

return【】;}

40.若有以下程序

main()

{inta[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-21,32,-33,0}};

inti,j,s=0;

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

{for(j=0;j<4;j++)

{if(a[i][j]<0)continue;

if(a[i][j]==0)break;

s+=a[i][j];

}

}

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

}

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

三、1.選擇題(20題)41.軟件設(shè)計中模塊劃分應(yīng)遵循的準(zhǔn)則是()。A.低內(nèi)聚低耦合

B.高內(nèi)聚低耦合

C.低內(nèi)聚高耦合

D.高內(nèi)聚高耦合

42.設(shè)有:inta=1,b=2,c=3,d=4,m=2,n=2;執(zhí)行(m=a>b)&&(n=c>d)后n的值是

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

43.在數(shù)據(jù)庫技術(shù)中,面向?qū)ο髷?shù)據(jù)模型是一種______。

A.概念模型B.結(jié)構(gòu)模型C.物理模型D.形象棋型

44.若有定義:inta[4][10];,則以下選項中對數(shù)組元素a[i][j]引用錯誤的是______。(o<=i<4,0<=j<=10

A.*(&a[0][0]+10*i+j)B.*(a+i)+jC.*(*(a+i)+j)D.*(a[i]+j)

45.有以下程序:int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*P,*q,*r;P=&a;q=&b;r=f(p,q);print("%d,%d,%d\n",*P,*q,*r);}執(zhí)行后的輸出結(jié)果是______。

A.7,8,8B.7,8,7C.8,7,7D.8,7,8

46.有以下定義:#include<stdio.h>chara[l0],*b=a;不能給a數(shù)組輸入字符串的語句是______。

A.gets(A)B.gets(a[0]);C.gets(&a[0]);D.gets(b);

47.設(shè)有如下定義intx=10,y=3,z;則語句printf("%d\n",z=(x%y,x/y));的輸出結(jié)果是()

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

48.下列選項中,當(dāng)x為大于1的奇數(shù)時,值為0的表達(dá)式是()。

A.x%2==1B.x/2C.x%2!=0D.x%2==0

49.以下程序的功能是:建立一個帶有頭結(jié)點(diǎn)的單向鏈表,并將存儲在數(shù)組中的字符依次轉(zhuǎn)存到鏈表的各個結(jié)點(diǎn)中,請從與下劃線處號碼對應(yīng)的一組選項中選擇出正確的選項。

#include<stdlib.h>

structnode

{chardata;structnode*next;};

(48)CreatList(char*s)

{structnode*h,*p,*q;

h=(structnode*)malloc(sizeof(Structnode));

p=q=h;

while(*s!=‘\0’)

{p=(structnode*)malloc(sizeof(structnode));

p->data=(49);

q->next=p;

q=(50);

s++;

}

p->next=0;

returnh;

}

main()

{charstr[]="linklist";

structnode*head;

head=CreatList(str);

}

A.char*B.stmctnodeC.strumnode*D.char

50.有以下程序#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen("d1.dat","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fprintf(fp,"\n");fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);printf("%d\n",n);}程序的運(yùn)行結(jié)果是

A.12300B.123C.1D.321

51.設(shè)a為整型變量,不能正確表達(dá)數(shù)學(xué)關(guān)系“10<a<15”的C語言表達(dá)式是______。

A.10<a<15

B.a==11||a==12||a==13||a==14

C.a>10&&a<15

D.!(a<=10)&&!(a>=15)

52.按照“后進(jìn)先出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

53.有以下程序:#include<stdio.h>main(){inti=1,j=1,k=2;if((j++||k++)&&i++)printf("%d,%d,%d\n",i,j,k);}執(zhí)行后輸出結(jié)果是()。

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

54.下面各選項中,均是C語言合法標(biāo)識符的選項組是

A.33weautoB._23me_3ewC._433e_elseD.ER-DF32

55.SQL語言又稱為______。

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

56.設(shè)有下列語句inta=1,b=2,c;c=a^(b<<2);執(zhí)行后,C的值為()。

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

57.下列二維數(shù)組的說明中,不正確的是()。

A.floata[][4]={0,1,8,5,9};

B.inta[3][4]

C.#defineN5floata[N][3]

D.inta[2][9.5];

58.有以下程序:main(){intx=0,y=0,i;for(i=1;++i){if(i%2==0){x++;continue;}if(i%5==0){y++;break;}}printf("%d,%d",x,y);}程序的輸出結(jié)果是()。

A.2,1B.2,2C.2,5D.5,2

59.以下敘述中錯誤的是

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

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

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

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

60.設(shè)在C語言中,float類型數(shù)據(jù)占4個字節(jié),則double類型數(shù)據(jù)占()個字節(jié)。

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

四、選擇題(20題)61.有以下程序:

#include<stdio.h>

main()

{unsignedchara=8,C;

C=a>>3:

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

}

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

A.32B.16C.1D.0

62.有以下程序:

point(char*p){*p=’d’;}

main()

{charb[4]={’a’,’b’,’c’,’d’},*p=b;

Point(p);printf("%c\n",*p);

}

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

A.a(chǎn)B.bC.cD.d

63.有以下程序

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

A.6B.9C.11D.7

64.有以下程序:

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

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

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

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

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

66.軟件設(shè)計包括軟件的結(jié)構(gòu)、數(shù)據(jù)接口和過程設(shè)計,其中軟件的過程設(shè)計是指()

A.模塊間的關(guān)系B.系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述C.軟件層次結(jié)構(gòu)D.軟件開發(fā)過程

67.

68.有以下程序:

voidmain()

{intk=0,n=0;

while(k<5)

{switch(k)

{default:break;

case1:n+=k;

case2:

case3:n+=k;

}

k++;

}

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

}

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

A)0B)4

C)6D)7

69.設(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;

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

A.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的

B.預(yù)處理命令行的最后不能以分號表示結(jié)束

C.#defineMAX是合法的宏定義命令行

D.在程序中凡是以“#”開始的語句行都是預(yù)處理命令行

71.用數(shù)據(jù)流圖(DFD.作為描述工具的軟件開發(fā)階段是()。

A.可行性分析B.需求分析C.概要設(shè)計D.詳細(xì)設(shè)計

72.有以下程序(函數(shù)fun只對下標(biāo)為偶數(shù)的元素進(jìn)行操作):

#include<stdio.h>

voidfun(int*n)

{inti,j,k,t;

for(i=0;i<n-1;i+=2)

{k=i;

for(j=i;j<n;j+=2)if(a[j]>a[k])k=j;

t[a[i];a[i]=a[k];a[k]=t;

}

}

main

{intaa[lO]=[1,2,3,4,5,6,7],a;

fun(aa,7);

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

printf("n");

}

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

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

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

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

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

73.

74.有以下程序

#include<stdio.h>

main()

{inti=5;

do

{if(i%3==1)

if(i%5==2)

{printf("*%d",i);break;}

i++;

}while(i!=0);

printf("\n");

}

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

A.*7B.*3*5

C.*5D.*2*6

75.

76.若有說明“chars1[30]="abc",s2[]="defghi";",則在使用函數(shù)stoat(s1,s2)后,結(jié)果是()。A.A.s1的內(nèi)容更新為abcdefghiB.s1的內(nèi)容更新為defghi\0

C.s1的內(nèi)容更新勾defghiabc\0

D.s1的內(nèi)容更新為abcdefghi\0

77.

78.有以下程序:

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

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

79.有以下程序:

程序運(yùn)行時,輸入的值在哪個范圍才會有輸出結(jié)果()。

A.小于3的整數(shù)B.不等于10的整數(shù)C.大于3或等于10的整數(shù)D.大于3且不等10的整數(shù)

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

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的作用是:將字符串tt中的大寫字母都改為對應(yīng)的小寫字母,其他字符不變。

例如,若輸入“I,anl,A,Student”,則輸出“i,am,a,student”。

請修改程序中的錯誤。使它能得到正確結(jié)果。

注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是刪除一維數(shù)組中所有相同的元素,使之只剩一個。數(shù)組中的元素已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中元素的個數(shù)。例如,若一維數(shù)組中的元素是2223445666677899101010刪除后,數(shù)組中的元素應(yīng)該是2345678910注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN80intfun(inta[],intn){}voidmain(){ inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20; printf(“Theoriginaldata:\n”); for(i=0;i<n;i++)<p=""></n;i++)<> printf(n%3d”,a[i]); n=fun(a,n); printf(“\n\nThedataafterdeleted:\n”); for(i=0;i<n;i++)<p=""></n;i++)<> printf(“%3d”,a[i]); printf(“\n\n”);}

參考答案

1.C

2.C

3.D解析:putchar(c1)輸出1,putchar(c2)輸出2,printf('%c%c\\n',c5,c6)輸出45。

4.A解析:在C語言中,應(yīng)當(dāng)在定義函數(shù)時指定函數(shù)值的類型。凡不加類型說明的函數(shù),默認(rèn)按整型處理。在定義函數(shù)時對函數(shù)值說明的類型一般應(yīng)該和return語句中的表達(dá)式類型一致。如果函數(shù)值的類型和return語句中的表達(dá)式類型不一致,則以函數(shù)值的類型為準(zhǔn),由系統(tǒng)自動進(jìn)行轉(zhuǎn)換,即函數(shù)類型決定返回值的類型。

5.B

6.D

7.B按邏輯位運(yùn)算特點(diǎn):①用按位與運(yùn)算將特定位清為0或保留特定位;②用按位或運(yùn)算將特定的位置為1;③用按位異或運(yùn)算將某個變量的特定位翻轉(zhuǎn)或交換兩個變量的值。

8.D解析:本題主要考查左移、右移對數(shù)據(jù)值的影響,左移n位相當(dāng)于乘以2的n次冪,右移n位相當(dāng)于除以2的n次冪。

9.C選項A、B的空間不夠;選項D中字符串存儲要有結(jié)束符ˊ\0ˊ,且要占用一個空間,printf用來輸出字符,不能輸入字符串。

10.D

11.B本題考查fgets函數(shù)的使用調(diào)用形式:fgets(s,n,fp)。fgets函數(shù)參數(shù)說明:“S”可以是一個字符數(shù)組名,也可以是指向字符串的指針;“n”為要讀取的最多的字符個數(shù);“fp”是指向該文件型指針。fgets函數(shù)的功能是:從fp所指向的文件中讀取長度不超過n-1個字符的字符串,并將該字符串放到字符數(shù)組S中,讀入字符串后會自動在字符串末尾加入"\0"結(jié)束符,表示字符串結(jié)束。

12.B解析:數(shù)據(jù)庫系統(tǒng)除了數(shù)據(jù)庫管理軟件之外,還必須有其他相關(guān)軟件的支持。這些軟件包括操作系統(tǒng)、編譯系統(tǒng)、應(yīng)用軟件開發(fā)工具等,選項A的說法是錯誤的。數(shù)據(jù)庫具有為各種用戶所共享的特點(diǎn),選項B的說法是正確的。通常將引入數(shù)據(jù)庫技術(shù)的計算機(jī)系統(tǒng)稱為數(shù)據(jù)庫系統(tǒng)。一個數(shù)據(jù)庫系統(tǒng)通常由5個部分組成,包括相關(guān)計算機(jī)的硬件、數(shù)據(jù)庫集合、數(shù)據(jù)庫管理系統(tǒng)、相關(guān)軟件和人員。因此,選項C的說法是錯誤的。

13.D

14.B本題考查分支語句用法加個句號因為變量的初始值分別為k一5、n一0,所以程序第1次進(jìn)入循環(huán)時,執(zhí)行default語句,輸出0,k減1;這時n=0、k=4,程序進(jìn)行第2次循環(huán),執(zhí)行case4:這個分支,結(jié)果是n=2、k=3,打印出2;這時n=2、k=3,break跳出,程序進(jìn)行第3次循環(huán),執(zhí)行case3:這個分支,結(jié)果是n=3、k=2,打印出3;這時n一3、k2,b¨ak跳出,程序然后進(jìn)行第4次循環(huán),執(zhí)行case2:case4:這個分支,結(jié)果是n=5、k=1,打印出5,break跳出,這時因為n=5不滿足n<5的循環(huán)條件,因此循環(huán)結(jié)束。

15.D本題考查兩個知識點(diǎn),按位異或左移把b左移2位化成二進(jìn)制c=a(b<<2)=a^(000010<<2)=a^001000=0000001^O01000=9,故選擇D。

16.C函數(shù)fun(int*s,intn1,intn2)的功能是對數(shù)組s中的元素進(jìn)行首尾互相調(diào)換。所以在主函數(shù)中,當(dāng)fun(a,0,3)執(zhí)行完后,數(shù)組a[12]={4,3,2,1,5,6,7,8,9,0};再執(zhí)行fun(a,4,9),數(shù)組a[12]={4,3,2,1,0,9,8,7,6,5};再執(zhí)行fun(a,0,9)后,數(shù)組a[12]={5,6,7,8,9,0,1,2,3,4}。所以正確答案為c)。

17.Asizeof是運(yùn)算符,計算數(shù)組、指針、類型、對象、函數(shù)等所占的字節(jié)大小。strlen(*char)是函數(shù),參數(shù)必須是字符型指針(char*)。該函數(shù)的功能是:返回字符串的長度,不包括字符串結(jié)束標(biāo)識?!皊izeof(a)”是求數(shù)組a所占空間的大小,包括字符串最后的‘\\0’。所以“sizeof(a)”=5,strlen遇到‘\\0’就結(jié)束,“strlen(a)”=4?!皊trier(b)”是指針指向的字符串長度,“sizeof(b)”是指針的大小?!皊trlen(c)”是字符串的長度,“sizeof(c)”是數(shù)組的長度。因此,輸出結(jié)果是4,5,2,4,1,3,。故本題答案為A選項。

18.AB選項中運(yùn)算符“%”的運(yùn)算對象為整數(shù)。C選項中不能將變量賦給表達(dá)式“x+n”。D選項中不能將表達(dá)式“4+1”賦給常量5。故本題答案為A選項。

19.B

20.A"\0"表示空字符,strlen函數(shù)求得的是不包括字符串結(jié)束符'\0'的長度。故選A。

21.55解析:分析程序,當(dāng)a=3;b=4;c=5時,判斷語句a>b不成立,所以不執(zhí)行后面的語句,直接執(zhí)行“printf('%d\\n',c);”語句,輸出c的值,輸出結(jié)果為5。

22.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)解析:Jackson方法是—‘種面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化方法。

23.111,1解析:POWER(i++)中先引用i的值1,再將i的值加1,POWER(i++)=1*1=1。

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

25.99解析:考查ifelse語句,n==4不滿足條件,所以fun5(4)=4+fun5(3),n==3也不滿足條件,fun5(3)=3+fun5(2),n==2滿足條件fun5(2)=2,故x=4+3+2=9。

26.11解析:本題考查局部變量和全局變量的區(qū)別:局部變量是指作用域在函數(shù)級和塊級的變量,全局變量是指作用域在程序級和文件級的變量。本程序首先定義了一個全局變量m=17,m=17的作用域在整個程序內(nèi)。在fun函數(shù)內(nèi)部定義了一個局部變量m=3,m=3的作用域僅在fun函數(shù)內(nèi)部,通過fun函數(shù)返回兩個形參的積再減m。在主函數(shù)中,輸出fun(a,b)/m=(5*7-3)/17=1。

27.完善性軟件維護(hù)活動包括以下幾類:改正性維護(hù),適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù),完善性維護(hù)是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性。

28.&a[i]或a+ia[i]或*(a+i)&a[i]或a+ia[i]或*(a+i)解析:主函數(shù)中一開始定義了一個長度為20得整形數(shù)組,然后通過—個循環(huán),循環(huán)20次給它的每個元素賦初值,所以在第一個空格處應(yīng)填各個元素的地址,即填&a[1]或a+i,然后在通過一個循環(huán)執(zhí)行20次,每循環(huán)一次,先判斷該循環(huán)是否大于0,如果大于。將其累加到變量sum中,所以第二個空格處應(yīng)該填入數(shù)組元素,所以應(yīng)該填a[i]或*(a+i)。

29.11解析:邏輯運(yùn)算中,非1即0,非0即1,!a=0,++a為邏輯1,所以0和1相或結(jié)果為1。

30.數(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ù)存儲名字具有確切的解釋。

31.int*

32.max=10row=2colum=1

33.p!=NULLp->nextp!=NULL,p->next解析:考查了單鏈表的相關(guān)知識。NULL的ASCII碼的值和'\\0'的ASCII碼的值相等,條件到NULL停止循環(huán)。把下一個節(jié)點(diǎn)的地址賦給p,這樣循環(huán),節(jié)點(diǎn)可以依次向后取值。

34.bb解析:本題實(shí)現(xiàn)的功能是把大寫字母轉(zhuǎn)換為小寫字母。小寫字母的ASCII碼值比相應(yīng)的大寫字母的ASCII碼值大32。

35.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查邏輯表達(dá)。年號能被4整除(y%4==0)但不能被100整除(y%100!=0),兩者是與的關(guān)系,年號能被400整除即y%400==0,與前兩項是或的關(guān)系。

36.1351\r\n3\r\n5解析:本題考查了for循環(huán)語句的使用,break語句用在本題中是結(jié)束for循環(huán)直接跳出循環(huán)體外。當(dāng)i=1時,因為if語句條件不滿足,所以直接執(zhí)行printf('%d\\n',i++);輸出1,同時i自加1;執(zhí)行第二次for循環(huán)時,i=3;同樣的if語句條件不滿足,所以直接執(zhí)行printf('%d\\n',i++);輸出3,同時i自加1;執(zhí)行第三次for循環(huán)時,i=5,if語句條件滿足,所以執(zhí)行printf('%d\\n',i),輸出5,然后break語句跳出了for循環(huán)。

37.doublemax或externdoublemaxdoublemax或externdoublemax解析:函數(shù)聲明是對所用到的函數(shù)的特征進(jìn)行必要的聲明,編譯系統(tǒng)以函數(shù)聲明中給出的信息為依據(jù),對調(diào)用表達(dá)式進(jìn)行檢測,以保證調(diào)用表達(dá)式與函數(shù)之間的參數(shù)正確傳遞。函數(shù)聲明的一般格式為:類型標(biāo)識符函數(shù)名(類型標(biāo)識符形參,…);這些信息就是函數(shù)定義中的第一行的內(nèi)容。本題中main()函數(shù)需要調(diào)用max()函數(shù),在main()之前就需要聲明函數(shù)max(),并且可以用extem說明符使變量的作用域擴(kuò)充到需要用到它的函數(shù),所以,填寫doublemax(或externdoublemax)。

38.程序調(diào)試程序調(diào)試解析:程序調(diào)試的任務(wù)是診斷和改正程序中的錯誤。程序調(diào)試與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于調(diào)試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調(diào)試主要在開發(fā)階段。

39.*s++flag=0或*(s-1)=''num*s++\r\nflag=0或*(s-1)=''\r\nnum解析:在統(tǒng)計字符串單詞個數(shù)的算法中,本題的flag是為了記錄—個單詞是否結(jié)束。第18空應(yīng)填*s++;如果某個字符不是空格,則必須判斷它是否是單詞,如是,則使得flag的標(biāo)志為1,num的值加1。本題判斷方法是:先判斷s所指向的字符是否為空格,如果是則使得flag=0,否則判斷前—個字符是否是空格,如果是則說明這個字符是—個單詞的開始,將flag標(biāo)志為1,num的值加1,如果不是,則不必記錄。故第19空應(yīng)填flag=0或*(s-1)='';最后—個空格需填寫的是返回的單詞的個數(shù),即num。

40.5858解析:本題中處理二維數(shù)組元素用了兩重循環(huán),外循環(huán)變量i表示數(shù)組的行,內(nèi)層循環(huán)變量j表示數(shù)組的列。在第二重循環(huán)中首先判斷數(shù)組元素的值是否小于0,若是則處理該行的下一個元素;若不是則判斷a[i][j]的值是否等于0,若等于0則退出內(nèi)層循環(huán)開始處理下一行;其他情況下,把a(bǔ)[i][j]的值加到變量s中。所以本程序段的功能是把每行值為0的元素前面的所有大于0的元素值加到變量s中。

41.B解析:耦合性和內(nèi)聚性足模塊獨(dú)立性的兩個定性標(biāo)準(zhǔn)。內(nèi)聚性是一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度的度量,作為軟件結(jié)構(gòu)設(shè)計的設(shè)計原則,要求每個模塊的內(nèi)部都具有很強(qiáng)的內(nèi)聚性;耦合性是指模塊間相互連接的緊密程度的度量,一個模塊與其他模塊的耦合性越強(qiáng)則該模塊的獨(dú)立性越弱。一般優(yōu)秀的軟件設(shè)計應(yīng)盡量做到高內(nèi)聚、低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨(dú)立性。

42.B解析:本題考查邏輯與運(yùn)算的運(yùn)算規(guī)則。其規(guī)則是:當(dāng)運(yùn)算符前后兩個條件表達(dá)式都滿足時,其最終結(jié)果才為真。當(dāng)發(fā)現(xiàn)第一個表達(dá)式的值為假后,計算機(jī)將不再執(zhí)行后面表達(dá)式的運(yùn)算。

本題中,由于前一個表達(dá)式的值為“假”,所以,后面的表達(dá)式不再進(jìn)行運(yùn)算,因而n的值保持不變,仍為2。

43.B解析:根據(jù)數(shù)據(jù)模型的應(yīng)用的不同目的,模型分為概念模型和結(jié)構(gòu)模型。概念模型是按用戶的觀點(diǎn)對數(shù)據(jù)和信息建模。結(jié)構(gòu)模型是按計算機(jī)系統(tǒng)觀點(diǎn)對數(shù)據(jù)建模。數(shù)據(jù)模型按數(shù)據(jù)結(jié)構(gòu)分為層次模型、網(wǎng)狀模型、關(guān)系模型和面向?qū)ο髷?shù)據(jù)模型。

44.B解析:本題中選項B是錯誤的引用,*(a+i)+j只代表了a[i][j]的地址。

45.B解析:函數(shù)f是一個返回值為指針的函數(shù),其功能是比較兩個數(shù)中的最小值,并返回最小值的存儲單元地址。main函數(shù)中定義了指針變量p和q,p=&a,q=&b,即*p=7,*q=8,調(diào)用函數(shù){后r=p,所以*r=7,printf函數(shù)的輸出結(jié)果為7,8,7。

46.B解析:a[0]是數(shù)組元素,不是數(shù)組名。

47.A

48.D解析:因為x的值為大于1的奇數(shù),所以x除以2的余數(shù)等于1。所以選項D)等于關(guān)系表達(dá)式的結(jié)果為假,即等于0。

49.C

50.B解析:在函數(shù)中首先把整型數(shù)組a[10]中的每個元素寫入文件d1.dat中,然后再次打開這個文件,把文件d1.dat中的內(nèi)容讀入到整型變量n中,最后輸出變量n的值。

51.A解析:選項A中10<a的結(jié)果是邏輯值0或1,再與15比較大小沒有意義,因此錯誤。

52.B解析:“后進(jìn)先出”表示最后被插入的元素最先能被刪除。選項A中,隊列是指允許在—端進(jìn)行插入、而在另一端進(jìn)行刪除的線性表,在隊列這種數(shù)據(jù)結(jié)構(gòu)中,最先插入的元素將最先能夠被刪除,反之,最后插入的元素將最后才能被刪除,隊列又稱為“先進(jìn)先出”的線性表,它體現(xiàn)了“先來先服務(wù)”的原則:選項B中,棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素,棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素。隊列和棧都屆于線性表,它們具有順序存儲的特點(diǎn),所以才有“先進(jìn)先出”和“后進(jìn)先出”的數(shù)據(jù)組織方式。雙向鏈表使用鏈?zhǔn)酱鎯Ψ绞?,二叉樹也通常采用鏈?zhǔn)酱鎯Ψ绞?,它們的存儲?shù)據(jù)的空間可以是不連續(xù)的,各個數(shù)據(jù)結(jié)點(diǎn)的存儲順序與數(shù)據(jù)元素之間的邏輯關(guān)系可以不一致。所以選項C和選項D錯誤。本題的正確答案為選項B。

53.C解析:該題目的關(guān)鍵是要搞清楚“&&”和“||”兩個邏輯運(yùn)算符的運(yùn)算功能。運(yùn)算符“&&”和“||”是雙目運(yùn)算符,要求有兩個運(yùn)算量。在邏輯與運(yùn)算中,只有當(dāng)“&&”運(yùn)算符前面運(yùn)算量的值為真時,才需要判斷后面的值;若為假,就不必判斷后面的值。而在邏輯或運(yùn)算中,只要“||”運(yùn)算符前面的值為真,就不再判斷后面的值;只有前面的值為假,才判斷后面的值。本題中j++的值為真,因此不進(jìn)行k++運(yùn)算,k值保持不變,(j++||k++)的值為真,繼續(xù)計算i++,計算后i值為2。

54.B解析:合法的標(biāo)識符是由字母、數(shù)字和下劃線組成,并且第一個字符必須為字母或下劃線,用戶定義的標(biāo)識符不能與關(guān)鍵字相同。選項A),數(shù)字不能為第一個字母,auto為關(guān)鍵字;選項C)中,也是數(shù)字不能為第一個字母,else為關(guān)鍵字;選項D)中負(fù)號不合法。

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

56.D解析:變量b的初值等于2,所以表達(dá)式b<<2表示b的值二進(jìn)制左移兩位,即擴(kuò)大4倍,所以變量b的等于8。然后與a的值1進(jìn)行異或運(yùn)算,得9。

57.D解析:C語言規(guī)定,對于二維數(shù)組,只可以省略第一個方括號中的常量表達(dá)式,而不能省略第二個方括號中的常量表達(dá)式:二維數(shù)組的一般定義格式是:類型說明符數(shù)組名[常量表達(dá)式][常量表達(dá)式]。

58.A解析:本題考查了continue和break語句用在循環(huán)語句中的作用。break語句的作用是結(jié)束本層循環(huán),而continue語句的作用是結(jié)束本次循環(huán)直接進(jìn)入到下次循環(huán)。

59.B

60.C

\n在C語言中各種數(shù)據(jù)類型在內(nèi)存中所占的字節(jié)數(shù)與機(jī)器的位數(shù)有關(guān),16位機(jī)中(也就是在標(biāo)準(zhǔn)c中),若int類型數(shù)據(jù)占2個字節(jié),則float類型數(shù)據(jù)占4個字節(jié),double類型數(shù)據(jù)占8個字節(jié)。

\n

61.C\n題中定義了無符號數(shù),c=a>>3;是指右移3位,然后輸出。結(jié)果為C。

\n

62.D函數(shù)調(diào)用和值傳遞;*p=b,使p指向b的首地址,*p=’d’,重新對p進(jìn)行賦值,因為傳遞的是地址值,所以可以改變實(shí)參的的值。

63.A本題首先定義了3個字符數(shù)flip、q、r,并分別被初始化。數(shù)組p;}i旨定的大小為20,初始化列表為la,b,c,d},即只指定了前4個元素的內(nèi)容,根據(jù)c語言的規(guī)定,初始化列表不足時,其余元素均自動初始化為0。然后通過streat()函數(shù),將字符串r連接到字符串p之后,即執(zhí)行后p中的內(nèi)容為“123d123de”。因為“strlen(q)”表示求字符串q的長度,很明顯為3,所以語句“strcpy(p+strlen(q),q);”的作用就是:將字符串q復(fù)制到數(shù)9lp的第4個元素位置處。

64.B本題考查循環(huán)語句的嵌套以及條件的判斷問題。在程序中,內(nèi)層循環(huán)判斷條件為”j<=i¨,而j的初值為3,故當(dāng)i的值為1和2時,內(nèi)層循環(huán)體都不會被執(zhí)行。只有當(dāng)i和j都等于3時才會執(zhí)行一次。m的值為55對3取模,計算結(jié)果為l。

65.C

66.B軟件設(shè)計包括軟件的結(jié)構(gòu)設(shè)計、數(shù)據(jù)接口設(shè)計和過程設(shè)計。其中軟件結(jié)構(gòu)設(shè)計主要包括系統(tǒng)由哪些子系統(tǒng)構(gòu)成,以及這些子系統(tǒng)之間的關(guān)系是怎樣的,并將這些內(nèi)容編寫成文檔;數(shù)據(jù)接口設(shè)計的任務(wù)是為每個子系統(tǒng)設(shè)計其與其他子系統(tǒng)間的接口,并編寫成文檔,這個接口要是一個無二義的接口,不需要子系統(tǒng)的操作知識就可以使用;過程設(shè)計是指系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述。

67.D

68.D首先k=0,執(zhí)行default,退出switch,k++,執(zhí)行case1,2,3后,n=2,k++,執(zhí)行case2,3,n=4,k++,執(zhí)行case3,n=7.執(zhí)行k++,執(zhí)行default,k++,退出循環(huán)。

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

\n

70.AC程序?qū)︻A(yù)處理命令行的處理是在程序編譯的過程中進(jìn)行的,所以選擇A)。

71.B\n結(jié)構(gòu)化分析方法是結(jié)構(gòu)化程序設(shè)計理論在軟件需求分析階段的運(yùn)用。而結(jié)構(gòu)化分析就是使用數(shù)據(jù)流圖、數(shù)據(jù)字典、結(jié)構(gòu)化語言、判定樹和判定表等工具,來建立一種新的、稱為結(jié)構(gòu)化規(guī)格說明的目標(biāo)文檔。

\n

72.A\n對下標(biāo)為偶數(shù)的元素進(jìn)行降序排序,下標(biāo)為奇數(shù)元素保持不變。

\n

73.C

74.A本題考查C語言中對整數(shù)求余數(shù)運(yùn)算。運(yùn)算符“%”是兩個數(shù)相除后取余數(shù)。分析本題的程序,main函數(shù)中的主體為一個do-while循環(huán),該循環(huán)的終止條件為i==0。do-while循環(huán)內(nèi)部起始為一個if語句,該語句包含一個if子語句,外層if語句的判斷條件是i%3==1,表示i的取值范圍為{1,4,7,11,…},內(nèi)部if子語句的判斷條件為i%5==2,表示i的取值范圍為{2,7,12,…}。如果外層和內(nèi)層的if語句的條件都滿足,則執(zhí)行語句printf('*%d',i);break;,該語句輸出*i形式的結(jié)果并跳出do-while循環(huán)。如果兩個if語句有一個條件不滿足,則執(zhí)行i++操作,繼續(xù)執(zhí)行do-while循環(huán)。i的初始值為5,只有滿足兩個if語句條件時才能夠跳出do-while循環(huán),即當(dāng)i=7時,循環(huán)結(jié)束,輸出結(jié)果為*7。

75.A

76.Dstrcat(s1,s2)函數(shù)的功能是把s2字符串連接到s1字符串的末尾,要保證s1有足夠的空間容納下連接后的字符串。

77.A

78.Dintm=1,n=2,*P=&m,。q=&Il,*r;即指針變量P指向m,指針變量q指向n,r=P;P=q;q=。;即通過指針變量r,將指針P和指針q的指向交換。因此最后輸出1,2,2,1。

79.D根據(jù)代碼可知如果x的值小于等于3,執(zhí)行空語句,不進(jìn)行打印操作。如果x的值大于3,再判斷x的值是否不等于l0,如果不等于l0就打印X的值,所以選擇D選項。

80.A全局變量的作用域是從聲明處到文件的結(jié)束。所以選擇A)

81.

82.intfun(inta[],intn){ inti,j=1; for(i=1;i<n;i++) if(a[j-1]!=a[i])/*若該元素與前一個元素不相同,則保留*/ a[j++]=a[i]; returnj;/*返回不相同元素的個數(shù)*/}該程序的流程:定義變量i和j,其中j用于控制刪除后剩下的元素在數(shù)組中的下標(biāo),i用于搜索原數(shù)組中的元素。j始終是新數(shù)組中最后一個元素的下一個元素的下標(biāo)。所以if語句中的條件是a[j-1]!=a[i],其中a[j-1]是新數(shù)組中的最后一個元素,若條件成立,則表示出現(xiàn)了不同的值,所以a[i]要保留到新數(shù)組中。注意本題中i和j的初值都要從1開始,該算法只能用于數(shù)組已排序的題目中。2021年四川省雅安市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.能正確表示x>=3或者x<1的關(guān)系表達(dá)式是()。

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

2.在存儲數(shù)據(jù)時,通常不僅要存儲各數(shù)據(jù)元素的值,而且還要存儲()。

A.數(shù)據(jù)的處理方法B.數(shù)據(jù)元素的類型C.數(shù)據(jù)元素之間的關(guān)系D.數(shù)據(jù)的存儲方法

3.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序運(yùn)行后,若從鍵盤輸入(從第1列開始)

123<回車>

45678<回車>

則輸出結(jié)果是

A.1267B.1256C.1278D.1245

4.在C語言中,函數(shù)返回值的類型最終取決于()。

A.函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型

B.return語句中表達(dá)式值的類型

C.調(diào)用函數(shù)時主調(diào)函數(shù)所傳遞的實(shí)參類型

D.函數(shù)定義時形參的類型

5.一個序列中有10000個元素,若只想得到其中前10個最小元素,最好采用_______方法

A.快速排序B.堆排序C.插入排序D.二路歸并排序

6.在ASC算法team日常開發(fā)中,常常面臨一些數(shù)據(jù)結(jié)構(gòu)的抉擇,令人糾結(jié)。目前大家在策劃一個FBI項目(FastBinaryIndexing),其中用到的詞匯有6200條,詞匯長度在10-15之間,詞匯字符是英文字母,區(qū)分大小寫。請在下面幾個數(shù)據(jù)結(jié)構(gòu)中選擇一個使檢索速度最快的()

A.二叉搜索樹,比較函數(shù)開銷:1次運(yùn)算/每字符

B.哈希表,hash算法開銷:10次運(yùn)算/每字符

C.鏈表,比較函數(shù)開銷:1次運(yùn)算/每字符

D.TRIE樹,尋找子節(jié)點(diǎn)開銷:1次運(yùn)算/每字符

7.交換兩個變量的值,不允許用臨時變量,應(yīng)該使用下列()位運(yùn)算符。

A.&.B.^C.||D.~

8.在位運(yùn)算中,操作數(shù)每左移兩位,其結(jié)果相當(dāng)于()。

A.操作數(shù)乘以2B.操作數(shù)除以2C.操作數(shù)除以4D.操作數(shù)乘以4

9.下列能正確進(jìn)行字符串賦值的是()。A.B.C.D.

10.

11.標(biāo)準(zhǔn)庫函數(shù)fgets(s,n,file)的功能是()。

A.從文件file中讀取長度為n的字符串存入字符數(shù)s由

B.從文件file中讀取長度不超過n-1個字符的字符放到字符數(shù)組S中

C.從文件file中讀到n個字符串存入字符數(shù)組s中

D.從文件file中讀取長度為n-1個字符的字符串存字符數(shù)組S中

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

A.數(shù)據(jù)庫系統(tǒng)是一個獨(dú)立的系統(tǒng),不需要操作系統(tǒng)的支持

B.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的共享問題

C.數(shù)據(jù)庫管理系統(tǒng)就是數(shù)據(jù)庫系統(tǒng)

D.以上3種說法都不對

13.下列一維數(shù)組初始化語句中,正確且與語句floata[]={0,3,8,0,9};等價的是().

A.floata[6]={0,3,8,0,9};

B.floata[4]={0,3,8,0,9};

C.floata[7]={0,3,8,0,9};

D.floata[5]={0,3,8,0,9};

14.有以下程序:main(){intk=5,n=0;do{switch(k){case1:case3:n+=l;k--;break;defalut:n=0;k--;case2:case4:n+=2;k--;break:}printf("%d",n);}while(k>0&&n<5);}程序運(yùn)行后的輸出結(jié)果是()。A.235B.0235C.02356D.2356

15.設(shè)有以下語句:inta=1,b=2,c;c=a^(b<<2);執(zhí)行后,c的值為()。A.6B.7C.8D.9

16.有以下程序:

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

A.0987654321

B.4321098765

C.5678901234

D.0987651234

17.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“TEXT”,*b=“++”,c[3]=“1”;printf(“%d,%d,”,strlen(a),sizeof(a));printf(“%d,%d,”,strlen(b),sizeof(b));printf(“%d,%d,\n”,strlen(c),sizeof(c));}程序運(yùn)行后的輸出結(jié)果是()。A.4,5,2,4,1,3,B.4,4,2,2,1,1,C.5,5,3,3,2,2,D.4,4,2,2,1,3

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

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

19.在以下的敘述中,正確的是()。

A.線性表的順序存儲結(jié)構(gòu)優(yōu)于鏈表存儲結(jié)構(gòu)

B.二維數(shù)組是其數(shù)據(jù)元素為線性表的線性表

C.棧的操作方式是先進(jìn)先出

D.隊列的操作方式是先進(jìn)后出

20.若有定義語句:“charsE10]="1234567\0\0";”,則strlen(s)的值是()。A.A.7B.8C.9D.10

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

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

22.Jackson方法是一種面向【】的結(jié)構(gòu)化方法。

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

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

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

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

10ngfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

printf("%1d\n",x);}

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

intm=17;

intfun(intx,inty)

{intm=3;

return(x*Y-m);

}

main()

{inta=5,b=7;

printf("%d\n",fun(a,B)/m);

}

27.軟件維護(hù)活動包括以下幾類:改正性維護(hù)、適應(yīng)性維護(hù)、【】維護(hù)和預(yù)防性維護(hù)。

28.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們之和。請?zhí)羁铡?/p>

main()

{

inti,a[20],sum,count;

sum=count=0;

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

scanf("%d",(______);

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

{

if(a[i]>0)

{

count++;

sum+=(______);

}

}

printf("sum=%d,count-%dkn",sum,count);

}

29.若a的值為1,則表達(dá)式!a‖++a的值是______。

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

31.以下函數(shù)用來求出2個整數(shù)之和,并通過形參將結(jié)果傳回。

voidfunc(intx,inty,【】z)

{*z=x+y;}

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

main()

{inti,j,row=0,colum=0,max,

a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};

max=a[0][0];

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

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

if(max<a[i][j])

{max=a[i][j];

row=i;

colum=j;

}

printf("max=%-5drow=%-3dcolum=%-3d\n",max,row,colum);

}

33.以下程序中函數(shù)fun的功能是:構(gòu)成一個如圖所示的帶頭結(jié)點(diǎn)的單向鏈表,在結(jié)點(diǎn)的數(shù)據(jù)域中放入了具有兩個字符的字符串。函數(shù)disp的功能是顯示輸出該單鏈表中所有結(jié)點(diǎn)中的字符串。請?zhí)羁胀瓿珊瘮?shù)disp。

#include<stdio.h>

typedefstructnode/*鏈表結(jié)點(diǎn)結(jié)構(gòu)*/

{charsub[3];

structnode*next;

}Node;

Nodefun(chars)/*建立鏈表*/

{……}

voiddisp(Node*h)

{Node*p;

p=h->next;

while(【】)

{printf("%s\n",P->sub);p=【】;}

}

main()

{Node*hd;

hd=fun();disp(hd);printf("\n");

}

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

#include<stdio.h>

main()

{charm;

m='B'+32;

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

}

35.下列表達(dá)式用于判斷y是否為閏年。閏年的判斷條件是:年號能被4整除但不能被100整除或年號能被400整除,請?zhí)羁誣_____。

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

main()

{inti;

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

{if(i>4)

{printf("%d\n",i);

break;}

printf("%d\n",i++);}}

37.請在以下程序第一行的下劃線處填寫適當(dāng)內(nèi)容,使程序能正確運(yùn)行。

【】(double,double);

main()

{doublex,y;

seanf("%1f%1f",&x,&y);

pfintf("%1f\n",max(x,y));

}

doublemax(doublea,doubleb)

{return(a>b?a:b);}

38.診斷和改正程序中錯誤的工作通常稱為【】。

39.下述函數(shù)統(tǒng)計—個字符串中的單詞個數(shù),單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】='')flag=0;

elseif(【】){flag=1;num++}

}

return【】;}

40.若有以下程序

main()

{inta[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-21,32,-33,0}};

inti,j,s=0;

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

{for(j=0;j<4;j++)

{if(a[i][j]<0)continue;

if(a[i][j]==0)break;

s+=a[i][j];

}

}

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

}

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

三、1.選擇題(20題)41.軟件設(shè)計中模塊劃分應(yīng)遵循的準(zhǔn)則是()。A.低內(nèi)聚低耦合

B.高內(nèi)聚低耦合

C.低內(nèi)聚高耦合

D.高內(nèi)聚高耦合

42.設(shè)有:inta=1,b=2,c=3,d=4,m=2,n=2;執(zhí)行(m=a>b)&&(n=c>d)后n的值是

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

43.在數(shù)據(jù)庫技術(shù)中,面向?qū)ο髷?shù)據(jù)模型是一種______。

A.概念模型B.結(jié)構(gòu)模型C.物理模型D.形象棋型

44.若有定義:inta[4][10];,則以下選項中對數(shù)組元素a[i][j]引用錯誤的是______。(o<=i<4,0<=j<=10

A.*(&a[0][0]+10*i+j)B.*(a+i)+jC.*(*(a+i)+j)D.*(a[i]+j)

45.有以下程序:int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*P,*q,*r;P=&a;q=&b;r=f(p,q);print("%d,%d,%d\n",*P,*q,*r);}執(zhí)行后的輸出結(jié)果是______。

A.7,8,8B.7,8,7C.8,7,7D.8,7,8

46.有以下定義:#include<stdio.h>chara[l0],*b=a;不能給a數(shù)組輸入字符串的語句是______。

A.gets(A)B.gets(a[0]);C.gets(&a[0]);D.gets(b);

47.設(shè)有如下定義intx=10,y=3,z;則語句printf("%d\n",z=(x%y,x/y));的輸出結(jié)果是()

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

48.下列選項中,當(dāng)x為大于1的奇數(shù)時,值為0的表達(dá)式是()。

A.x%2==1B.x/2C.x%2!=0D.x%2==0

49.以下程序的功能是:建立一個帶有頭結(jié)點(diǎn)的單向鏈表,并將存儲在數(shù)組中的字符依次轉(zhuǎn)存到鏈表的各個結(jié)點(diǎn)中,請從與下劃線處號碼對應(yīng)的一組選項中選擇出正確的選項。

#include<stdlib.h>

structnode

{chardata;structnode*next;};

(48)CreatList(char*s)

{structnode*h,*p,*q;

h=(structnode*)malloc(sizeof(Structnode));

p=q=h;

while(*s!=‘\0’)

{p=(structnode*)malloc(sizeof(structnode));

p->data=(49);

q->next=p;

q=(50);

s++;

}

p->next=0;

returnh;

}

main()

{charstr[]="linklist";

structnode*head;

head=CreatList(str);

}

A.char*B.stmctnodeC.strumnode*D.char

50.有以下程序#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen("d1.dat","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fprintf(fp,"\n");fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);printf("%d\n",n);}程序的運(yùn)行結(jié)果是

A.12300B.123C.1D.321

51.設(shè)a為整型變量,不能正確表達(dá)數(shù)學(xué)關(guān)系“10<a<15”的C語言表達(dá)式是______。

A.10<a<15

B.a==11||a==12||a==13||a==14

C.a>10&&a<15

D.!(a<=10)&&!(a>=15)

52.按照“后進(jìn)先出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

53.有以下程序:#include<stdio.h>main(){inti=1,j=1,k=2;if((j++||k++)&&i++)printf("%d,%d,%d\n",i,j,k);}執(zhí)行后輸出結(jié)果是()。

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

54.下面各選項中,均是C語言合法標(biāo)識符的選項組是

A.33weautoB._23me_3ewC._433e_elseD.ER-DF32

55.SQL語言又稱為______。

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

56.設(shè)有下列語句inta=1,b=2,c;c=a^(b<<2);執(zhí)行后,C的值為()。

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

57.下列二維數(shù)組的說明中,不正確的是()。

A.floata[][4]={0,1,8,5,9};

B.inta[3][4]

C.#defineN5floata[N][3]

D.inta[2][9.5];

58.有以下程序:main(){intx=0,y=0,i;for(i=1;++i){if(i%2==0){x++;continue;}if(i%5==0){y++;break;}}printf("%d,%d",x,y);}程序的輸出結(jié)果是()。

A.2,1B.2,2C.2,5D.5,2

59.以下敘述中錯誤的是

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

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

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

D.fwri

溫馨提示

  • 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

提交評論