2021-2022年黑龍江省黑河市全國計算機等級考試C語言程序設(shè)計_第1頁
2021-2022年黑龍江省黑河市全國計算機等級考試C語言程序設(shè)計_第2頁
2021-2022年黑龍江省黑河市全國計算機等級考試C語言程序設(shè)計_第3頁
2021-2022年黑龍江省黑河市全國計算機等級考試C語言程序設(shè)計_第4頁
2021-2022年黑龍江省黑河市全國計算機等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩115頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年黑龍江省黑河市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.計算機算法必須具備輸入、輸出和()等5個特性。

A.可行性、可移植性和可擴充性B.可行性、確定性和有窮性C.確定性、有窮性和穩(wěn)定性D.易讀性、穩(wěn)定性和安全性

2.

3.設(shè)有如下定義:int(*ptr);則以下敘述中正確的是()。

A.ptr是指向一維組數(shù)的指針變量

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指int型數(shù)據(jù)的指針

4.在一個C語言源程序文件中所定義的全局變量,其作用域為()。

A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

5.以下關(guān)于typedef的敘述錯誤的是()。A.用tyFedef可以增加新類型

B.typedef只是將已存在的類型用一個新的名字來代表

C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名

D.用typedef為類型說明一個新名,通??梢栽黾映绦虻目勺x性

6.以下函數(shù)findmax擬實現(xiàn)在數(shù)組中查找最大值并作為函數(shù)值返回,但程序中有錯導(dǎo)致不能實現(xiàn)預(yù)定功能。#defineMIN-2147483647intfindmax(intx[],intn){inti,max;for(i=0;i<n;i++){max=MIN;if(max<x[i])max=x[i];)returnmax;}造成錯誤的原因是()。A.定義語句“inti,max;”中max未賦初值

B.賦值語句“max=MIN;”中,不應(yīng)給max賦MIN值

C.語句“if(max<x[i])max=x[i];”中判斷條件設(shè)置錯誤

D.賦值語句“max-MIN;”放錯了位置

7.

8.順序結(jié)構(gòu)的本質(zhì)特點是()。

A.數(shù)據(jù)元素存儲在地址連續(xù)的內(nèi)存空間

B.數(shù)據(jù)元素緊鄰

C.數(shù)據(jù)元素在內(nèi)存中的相對位置表示數(shù)據(jù)之間的邏輯關(guān)系

D.不使用指針

9.一個優(yōu)化的程序可以生成n個元素集合的所有子集,那么該程序的時間復(fù)雜度是()

A.O(n!)B.O(nlogn)C.O(n^2)D.O(2^n)

10.是哈希查找的沖突處理方法()。

A.求余法B.平均取中法C.二分法D.開放地址法

11.若串S=,software,其子串的數(shù)目是()。

A.8B.37C.36D.9

12.擁有PC機并以撥號方式接入網(wǎng)絡(luò)的用戶需要配置()

A.CD-ROMB.ModemC.電話機D.鼠標

13.

14.數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,()沒有專門的軟件對數(shù)據(jù)進行管理。

I.人工管理階段

II.文件系統(tǒng)階段

Ⅲ.數(shù)據(jù)庫階段A.A.僅IB.僅ⅢC.I和IID.II和Ⅲ

15.

16.有以下程序:#include<stdio.h>main(){inta=-2,b=0;while(a++++b);printf("%d,%d\n",a,b);}程序運行后的輸出結(jié)果是()。A.1,3B.0,2C.0,3D.1,2

17.若變量已正確定義,有下列程序段:inta=3,b=5,c=7;if(a>B)a=b;c=a;if(c!=A)c=b;printf("%d,%d,%d\n",a,b,C);其輸出結(jié)果是()。A.程序段有語法錯B.3,5,3C.3,5,5D.3,5,7

18.對于如圖所示二叉樹采用中根遍歷,正確的遍歷序列應(yīng)為()A.ABCDEFB.ABECDFC.CDFBEAD.CBDAEF

19.

20.計算機算法指的是()。

A.計算方法B.排序方法C.解決問題的有限運算序列D.調(diào)度方法

二、2.填空題(20題)21.以下程序的功能是根據(jù)輸入的“y”(“Y”)與“n”(“N”),在屏幕上分別顯示出“ThisisYES.”與“ThisNO.”。空白處需要填入的內(nèi)容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case'y':

case'Y':printf("\nThisisYES,\n");

case'n':

case'N':printf("\nThisisNO.\n");}}

main()

{charch;

printf("\nEnterachar'y','Y'or'n','N':");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

22.隊列是限定在表的一端進行插入和在另一端進行刪除操作的線性表。允許插入的一端稱作______。

23.數(shù)據(jù)庫技術(shù)的主要特點為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨立性和數(shù)據(jù)統(tǒng)一管理與控制。

24.若按功能劃分,軟件測試的方法通常分為白盒測試方法和【】測試方法。

25.在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖中,使()解釋其中的圖形元素。

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

27.閱讀下列程序,則在執(zhí)行后,程序的運行結(jié)果為#include"stdio.h"#include"string.h"main(){chara[30]="nicetomeetyou!";strcpy(a+strlen(a)/2,"you");printf("%s\n",a);}

28.以下程序的功能是輸入任意整數(shù)給n后,輸出n行由大寫字母A開始構(gòu)成的三角形字符陣列圖形。例如,輸入整數(shù)5時(注意:n不得大于10),程序運行結(jié)果如下:

ABCDE

FGHI

JKL

MN

O

請?zhí)羁胀瓿稍摮绦颉?/p>

main()

{inti,j,n;charch='A';

scanf("%d",&n);

if(n<11)

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

{for(j=1;j<=n-i+1;j++)

{printf("%2c",ch);

【】;

}

【】;

}

}

elseprintf("nistoolarge!\n")

printf("\n"0);

}

29.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達式是【】。

intw[10]={23,54,10,33,47,98,72,80,61),*p=w;

30.有以下程序片段,請問執(zhí)行后的輸出結(jié)果是【】。

intn=10;

while(n>7)

{printf("%d",n--);

}

31.有以下程序

intfa(intx){returnx*x;}

intfb(intx){returnx*x*x;}

intf(ing(*f1)(),int(*f2)(),intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2),printf("%d\n",i);}

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

32.下面的程序通過函數(shù)average計算數(shù)組中各元素的平均值,請?zhí)羁铡?/p>

floatavetage(int*pa,intn)

{inti;

floatavg=0.0;

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

avg=avg+【】;avg=【】;

returnavg;

}

main()

{inti,a[5]={2,4,6,8,10,};

floatmean;

prinf("%mean=%f\n",mean);

}

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

34.以下程序是用遞歸方法求數(shù)組中的最大值及其下標值。請?zhí)羁铡?/p>

#defineM10

voidfindmax(int*a,intn,inti,int*pk)

{if(i<n)

{if(a[i]>a[*pk])【】;

findmax(a,n,i+1,&(*pk));}}

main()

{inta[M],j,n=0;

printf("\nEnter%ddata;\n",M);

for(i=0;i<M;i++)scanf("%d",a+i);

findmax(a,M,0,&n);

printf("Themaxinumis:%d\n",a[n]);

printf("It'sindexis;%d\n",n);}

35.下列程序段是從鍵盤輸入的字符中統(tǒng)計小寫字母的個數(shù),用換行符結(jié)束循環(huán)。請?zhí)羁铡?/p>

intn=0,c;

c=getchar();

while(c!='\n')

{if(______)

n++;

}

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

inti=9;

printf("%o\n",i);

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

intm=17;

intfun(intx,inty)

{intm=3;

return(x*Y-m);

}

main()

{inta=5,b=7;

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

}

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

39.在一個容量為32的循環(huán)隊列中,若頭指針front=3,尾指針rear=2,則該循環(huán)隊列中共有______個元素。

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

#include<stdio.h>

main()

{staticcharstr1[40];

charstr2140];

strcpy(str2,"China");

strcat(str1,str2);

strcat(str1,"isagreatcountry!");

printf("%s%s",str2,strl);

printf("%d%d\n",strlen(str2),strlen(str1));

}

三、1.選擇題(20題)41.有以下語句,則對a數(shù)組元素的引用不正確的是inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

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

A.接口復(fù)雜的模塊,其耦合程度一定低

B.耦合程度弱的模塊,其內(nèi)聚程度一定低

C.耦合程度弱的模塊,其內(nèi)聚程度一定高

D.上述三種說法都不對

43.下列程序段的運行結(jié)果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

44.在以下術(shù)語中,與數(shù)據(jù)的邏輯結(jié)構(gòu)無關(guān)的是______。

A.線性結(jié)構(gòu)B.鏈式結(jié)構(gòu)C.樹型結(jié)構(gòu)D.網(wǎng)狀結(jié)構(gòu)

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

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

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

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

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

46.在Windows中,啟動應(yīng)用程序的正確的方法是()

A.用鼠標指向該應(yīng)用程序圖標B.將該應(yīng)用程序窗口最小化成圖標C.將該應(yīng)用程序窗口還原D.用鼠標雙擊該應(yīng)用程序圖標

47.有下列程序段:typedefstructNODE{intnum;structNODE*next;}OLD;下列敘述中正確的是()。

A.以上的說明形式非法B.NODE是一個結(jié)構(gòu)體類型C.OLD是一個結(jié)構(gòu)體類型D.OLD是一個結(jié)構(gòu)體變量

48.設(shè)有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語句是()

A.p=&a;B.p=data.a;C.p=&data.a,D.*p=data.a;

49.如果要限制一個變量只能為本文件所使用,必須通過______來實現(xiàn)。

A.外部變量說明B.靜態(tài)內(nèi)部變量說明C.靜態(tài)外部變量說明D.局部變量說明

50.已知下面的程序段,正確的判斷是______。#defineA3#defineB(A)((A+1)*a)inta=3;......X=3*(A+B(7));

A.程序錯誤,不允許嵌套定義B.X=93C.X=81D.程序錯誤,宏定義不允許有參數(shù)

51.在調(diào)用函數(shù)時,如果實參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是_______。

A.地址傳遞B.單向值傳遞C.由實參傳給形,再由形參傳回實參D.傳遞方式由用戶指定

52.設(shè)p1和p2是指向一個int型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語句是

A.k=*p1+*p2B.p2=k;C.p1=p2;D.k=*p1*(*p2);

53.有以下函數(shù):fun(char*a,char*b){while((*a!='\0')&&(*b!='\0')&&(*a==*b)){a++;b++;}return(*a-*b);}該函數(shù)的功能是()。

A.計算a和b所指字符串的長度之差

B.將b所指字符串復(fù)制到a所指字符串中

C.將b所指字符串連接到a所指字符串后面

D.比較a和b所指字符串的大小

54.在C語言中,函數(shù)的隱含存儲類別是______。

A.autoB.staticC.externD.無存儲類別

55.已知大寫字母A的ACSⅡ碼為65,以下程序的運行結(jié)果是()#include<stdio.h>main(){charc1='A',c2='Y';printf("%d,%d\n",c1,c2);}A.65,89B.A,YC.65,88D.65,90

56.下列程序的輸出結(jié)果是______。main(){inta=-1,b=1,k;if((++a<0)&&!(b--<=0))printf("%d%d\n",a,b);elseprintf("%d%d\n",b,a);}

A.-11B.01C.10D.0

57.設(shè)已執(zhí)行預(yù)編譯命令#include<string.h>,以下程序段的輸出結(jié)果是

chars[]="anapple";

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

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

58.設(shè)x為int型變量,則執(zhí)行以下語句后,x的值為______。x=10;x+x-=x-x;

A.10B.20C.40D.30

59.以下程序段給數(shù)組所有的元素輸入數(shù)據(jù),請選擇正確答案填入。#include<stdio.h>main(){inta[10],i=0;while(i<10)scanf("%d",______);}

A.a+(i++)B.&a[i+1]C.a+iD.&a[++i]

60.下列程序的輸出結(jié)果是()main(){inti,j,m=0,n=0;for(i=0;i<2;i++)for(j=0;j<2;j++)if(j>=i)m=1;n++;printf("%d\n",n);}

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

四、選擇題(20題)61.下列函數(shù)的類型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

62.以下程序執(zhí)行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不確定D.0

63.

64.有以下程序main(){union{charch[2];intd;}s;s.d=0x4321;printf("%x,%x\n",s.ch[0],s.ch[1]);}在16位編譯系統(tǒng)上,程序執(zhí)行后的輸出結(jié)果是______。A.21,43B.43,21C.43,00D.21,00

65.

有以下程序:

#include<stdio.1l>

voidWriteStr(char*fn.char*str)

{FILE*fp;

fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}

main

{WriteStr("tl.dat","start");

WriteStr("t1.dat","end");)

程序運行后,文件t1.dat中的內(nèi)容是()。

A.startB.endC.startendD.endrt

66.下列條件語句中,輸出結(jié)果與其他語句不同的是()

67.已知各變量的類型說明如下:

則以下不符合C語言語法的表達式是()。

A.

B.

C.

D.

68.

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

#include<stdio.h>

main

{inti;

for(i=l;i<=10;i++)

{if(i*i>=20)&&(i*i<=100))

break;

}

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

}

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

69.有如下程序段

#include"stdio.h"

typedefstructaa

{inta;

structaa*next;

}M;

voidset(M*k,inti,int*b)

{intj,d=0;

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

{k[j-1].next=&k[j];

k[j-1].a=b[d++];

}

k[j].a=b[d];

}

main()

{Mk[5],*p;

intd[5]={23,34,45,56,67};

set(k,5,d);

p=k+1;

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

}

要輸出45,則在下畫線處應(yīng)填入的選項是

A.p->next->aB.++p->a

C.(*p).a(chǎn)++D.p++->a

70.第

1

若有運算符<<,sizeof,^,&=,則它們按優(yōu)先級由高至低的正確排列次序是

A.sizeof,&=,<<,^

B.sizeof,<<,^,&=

C.^,<<,sizeof,&=

D.<<,^,&=,sizeof

71.下述程序的運行結(jié)果是()。

#includedstdio.h>

#includedstrin9.h>

main

{char*s1="abDuj";

char*s2="ABdUG";

intt;

t=strcmp(s1,s2);

printf("%d",t);

}

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

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

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

73.

74.有以下程序

#include<stdio.h>

voidfun(char**p)

{++p;printf("%s",*p);}

main

{char*a[]={"Morning","Afternoon","Evening","Night");

fun(a);

}

程序的運行結(jié)果是()。A.A.AfternoonB.fternoonC.MorningD.orning

75.

76.現(xiàn)有如下程序段:

則程序段的輸出結(jié)果為()。

A.7,8

B.8,8

C.7,10

D.8,10

77.下列能正確定義且賦初值的語句是()。

A.intn1=n2=1;

B.charC=99;

C.floatf=f+1;

D.doublex=1.2E5.6;

78.C語言中char類型數(shù)據(jù)占字節(jié)數(shù)為()。

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

79.

80.

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc的功能是:用選擇法對數(shù)組中的m個元素按從小到大的順序進行排序。例如,排序前的數(shù)據(jù)為:1132-5214則排序后的數(shù)據(jù)為:-52111432請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#defineM20voidproc(inta[],intn){inti,j,t,P;//****found****for(j=0;j<n-1;j++);{p=j;for(i=j;i<n;i++)if(a[[i]<a[p])p=i;t=a[p];a[p]=aEj3;//****found****a[p]=t;}}voidmain{intarr[M]={11,32,-5,2,14},i,m=5;printf("排序前的數(shù)據(jù):");for(i=0;i<m;i++)printf("%d",arr[i]);printf("\n");proc(arr,m);printf("排序后的順序:");for(i=0;i<m;i++)printf("%d",arr[i]);printf("\n");}

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。程序中將m個人的成績存放在score數(shù)組中,請編寫函數(shù)fun(),它的功能是將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分數(shù)放在below所指的數(shù)組中。例如,當score數(shù)組中的數(shù)據(jù)為10、20、30、40、50、60、70、80、90時,函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為10、20、30、40。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.B

2.D

3.C本題中int(*ptr)的含義是指向函數(shù)的指針變量,其為指向函數(shù)的指針變量,該函數(shù)返回一個int型數(shù)據(jù),故選擇C選項。

4.D

\n全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個源文件結(jié)束止。當全局變量定義在后,引用它的函數(shù)在前時,應(yīng)該在引用它的函數(shù)中用extern對此全局變量進行說明,以便通知編譯程序該變量是一個已在外部定義了的全局變量,這時全局變量的作用域從extern說明處起,延伸到該函數(shù)末尾。

\n

5.A用typedef沒有增加新類型,所以選擇A)。

6.D“max=MIN;”語句應(yīng)放在for循環(huán)之前,否則每次循環(huán)時都重新賦值,值沒有變化。

7.B

8.C

9.D

10.D

11.B

12.B

13.A

14.A數(shù)據(jù)管理技術(shù)發(fā)展的蘭個階段中,只有人工管理階段,沒有操作系統(tǒng),沒有管理數(shù)據(jù)的軟件,數(shù)據(jù)處理方式是批處理。在文件系統(tǒng)階段,操作系統(tǒng)中已經(jīng)有了專門數(shù)據(jù)管理軟件,一般稱為文件系統(tǒng)。在數(shù)據(jù)庫系統(tǒng)階段,出現(xiàn)了統(tǒng)一管理數(shù)據(jù)的專門軟件系統(tǒng),即數(shù)據(jù)庫管理系統(tǒng)。

15.D

16.D輸出的結(jié)果是:-1,1\r\n0,2\r\n1,2

17.B解析:本題考查的是程序結(jié)構(gòu)設(shè)計中if語句的應(yīng)用,當if判斷條件成立時就執(zhí)行其后的相關(guān)語句,否則不執(zhí)行,本題中第一個if條件不成立,故不執(zhí)行“a=b”,接著執(zhí)行“c=a”,此時第二個if條件也不成立,故不執(zhí)行其后語句,最終c的值為3。

18.D

19.A

20.C

21.getchargetchar解析:題中要求根據(jù)輸入的字符調(diào)用函數(shù)YesNo來判斷輸入的字符是y(Y)還是n(N),字符的輸入可用字符輸入函數(shù)getchar。函數(shù)YesNo用來判斷一個字符是y(Y)還是n(N),主要用了一個switch多分支結(jié)構(gòu)來比較輸入字符與字符'y','Y'、,'n','N'是否相等來實現(xiàn)的。注意:用于字符串處理的函數(shù)。

22.隊尾隊尾解析:在隊列中,允許插入的一端叫做“隊尾”,允許刪除的一端叫做“隊頭”。

23.共享性共享性解析:數(shù)據(jù)庫技術(shù)的主要特點有以下幾個方面:數(shù)據(jù)的集成性,數(shù)據(jù)的高共享性與低冗余性,數(shù)據(jù)的獨立性,數(shù)據(jù)統(tǒng)一管理與控制。

24.黑盒軟件測試的方法有三種:動態(tài)測試、靜態(tài)測試和正確性證明。設(shè)計測試實例的方法一般有兩類:黑盒測試法和白盒測試法。在使用黑盒法設(shè)計測試實例時,測試人員將程序看成一個“黑盒”,即不關(guān)心程序內(nèi)部是如何實現(xiàn)的,只是檢查程序是否符合它的“功能說明”,所以使用黑盒法設(shè)計的測試用例完全是根據(jù)程序的功能說明來設(shè)計的。

25.數(shù)據(jù)字典數(shù)據(jù)字典解析:數(shù)據(jù)字典的作用是對數(shù)據(jù)流圖中出現(xiàn)的披命名的圖形元素進行確切解釋。通常數(shù)據(jù)字典包含的信心有名稱、別名、何處使用/如何使用、內(nèi)容描述、補充信息等。

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

27.D

28.ch++;或++ch;或ch=ch+1;或ch=1+ch;或ch+=1;priintf("\n");或putchar('\n');ch++;或++ch;或ch=ch+1;或ch=1+ch;或ch+=1;\r\npriintf('\\n');或putchar(\'\\n\');解析:因為ch被初始化為\'A\',而內(nèi)循環(huán)中有—條輸出ch的語句,整個程序都沒有一條改變ch值的語句。所以,第1空應(yīng)該填ch++或其它類似的表達式,以使每次輸出一個字母后ch都能變?yōu)橄乱粋€字母。內(nèi)循環(huán)結(jié)束后,代表這一行已經(jīng)輸出完畢,此時即將開始下一行的輸出,所以在第2空位置應(yīng)該輸出一個換行符,故應(yīng)填入printf('\\n');或其他等價形式。

29.p[5]或*(p+5)p[5]或*(p+5)解析:98是數(shù)組w的第5個元素(最開始的為第0個),而通過*p=w已經(jīng)將p指向了數(shù)組w,要想不移動指針p而引用98,可以有以下兩種寫法:p[5]、*(p+5)。

30.1098

31.44解析:在主函數(shù)中調(diào)用函數(shù)f,函數(shù)f有三個參數(shù),形參f1與f2分別是兩個指向函數(shù)的指針。在f中執(zhí)行f2(x)-f1(x),實際上是執(zhí)行了fb()2)-fa(2),故執(zhí)行i=(fa,fb,2)卮i的值為23-22=4。

32.pa[i]avg/n

33.隊列隊列解析:隊列是一種特殊的線性表,只允許在表的一端插入元素,在表的另一端刪除元素,插入元素的一端叫做“隊尾”,刪除元素的一端叫做“隊頭”,先插入的元素先被刪除,是按先進先出的原則組織數(shù)據(jù)的。

34.*pk=a[i]*pk=a[i]解析:通過參數(shù)傳遞,findmax函數(shù)接收到4個參數(shù),分別是數(shù)組a(需要對其中的數(shù)據(jù)按照題目的要求進行計算)、10(數(shù)組a中的元素個數(shù))、0(數(shù)組a的起始位置)、指針變量n(對數(shù)組a中的元素進行遍歷)。我們了解了這些參數(shù)的作用后,再對遞歸調(diào)用的函數(shù)進行分析,就不難得出結(jié)論了。注意:通過對本例中遞歸函數(shù)的分析掌握遞歸算法的執(zhí)行原理。

35.c>='a'&&c<='z'c>='a'&&c<='z'解析:小寫字母在內(nèi)存中以ASCII的形式存入,且從a到z依次遞增,所以可以直接用c>='a'&&c<='z'判斷是不是小寫字母;c!='\\n'判斷是用換行符結(jié)束循環(huán)。

36.1111解析:本題考核的知識點是printf()函數(shù)的輸出格式。本題中定義了一個整型變量i并賦初值為9,然后要求以八進制輸出i的值,9的八進制數(shù)的表示為11。

37.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。

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

39.3131解析:設(shè)隊列容量為m,如果:rear>front,則隊列中元素個數(shù)為rear-front;如果rear<front,則隊列中元素個數(shù)為m+(rear-front)。本題rear<front,則m=32+(2-3)=31。

40.ChinaChinaisagreatcountry!525

41.D解析:本題考查數(shù)組指針的應(yīng)用。選項D)第一層括號中為數(shù)組a中第i項元素的值,外面再加指針運算符沒有意義。

42.C解析:影響模塊之間耦合的主要因素有兩個:模塊之間的連接形式,模塊接口的復(fù)雜性。一般來說,接口復(fù)雜的模塊,其耦合程度要比接口簡單的模塊強,所以選項A的說法錯誤;耦合程度弱的模塊,其內(nèi)聚程度一定高,選項B錯誤;選項C正確。

43.B解析:先定義了一個指向字符型數(shù)組str的指針p,指針p旨向數(shù)組str的首地址,p+3將指針指向str[3],又因為字符型數(shù)組在存放字符串時會自動在末尾加上'\\0',所以*(p+3)=0。

44.B

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

46.D

47.C解析:C語言允許用typedef說明一種新類型名,其一般形式為:typedef類型名標識符。typedef語句的作用僅僅是使“標識符”來代表已存在的“類型名”,并未產(chǎn)生新的數(shù)據(jù)類型。原有類型名依然有效。此題中,用使typedef定義了新的類型OLD結(jié)構(gòu),所以O(shè)LD為結(jié)構(gòu)體類型。

48.C解析:data是—結(jié)構(gòu)體變量,a是它的成員,因此引用a域的正確方法是:data.a,取它的地址賦值給指針變量p的語句應(yīng)該是:p=&data.a。選項A,將a的地址直接賦給了p,而忽略了a為結(jié)構(gòu)體內(nèi)部的一個成員,而不是一單獨的變量,故選項A不正確;選項B在p=data.a表達式中右邊為一個結(jié)構(gòu)體變量的成員不是地址,而左邊為一指針應(yīng)該將一地址賦給它,故選項B不正確;選項D表達式*p=data.a是將結(jié)構(gòu)體變量中的成員a的值賦給指針p所指向的變量值,而不是使指針p指向data中的a域,故選項D不正確:4個選項中只有C正確。

49.C

50.C解析:本題的宏定義是合法的,宏定義展開為3*(3+((A+1)*a))=3*(3+((7+1)*3))=81。

51.B解析:C語言函數(shù)中的參數(shù)傳遞方式有傳值與傳址兩種方式,傳值方式是指將實參的值復(fù)制一份傳遞給形參,而傳址方式是指將實參的變量地址傳遞給形參,也就是實參的引用。

52.B解析:本題主要考查了一維數(shù)組指針的賦值和用指針引用數(shù)組元素進行運算。選項B)中p2為指向int型變量的指針。而k為int型變量,不能將int型變量直接賦值給指向int型變量的指針,所以選項B)錯誤。

53.D解析:本題要求閱讀的代碼是一個函數(shù),閱讀之前先要看清函數(shù)的定義,該函數(shù)有兩個參數(shù),都是字符指針,這說明它接收的是兩個字符串.該函數(shù)沒有定義返回類型,C語言規(guī)定函數(shù)的返回類型為int時可以省略,所以切不可將其看成是無返回類型的void型函數(shù),它是int型函數(shù)。函數(shù)體中除了返回語句外,只有一條while循環(huán)語句,該循環(huán)的循環(huán)條件為(*a!='\\'0}&&(*b!='\\0')&&(*a==*B),即當a和b所指處都不是字符結(jié)束符'\\0'并且a和b所指處的內(nèi)容相等時執(zhí)行循環(huán)。而循環(huán)體中只是簡單地將指針a和b同時往后移動1位。循環(huán)結(jié)束后返回a所指內(nèi)容減去b所指內(nèi)容的差。換個角度去考慮,也就是說當字符串a(chǎn)或b中有一個結(jié)束了或者是它們的相同位置中有一個字符不同時,則返回該位置兩個字符之差。若兩者長度相同而且所有對應(yīng)字符都相同的話,最后返回的是'\\0\\-'\\0'=0,否則的話就返回兩個字符串第一對不相同的字符之差.這時應(yīng)該可以看出來,這個函數(shù)實現(xiàn)的是對兩個字符串的比較。所以,4個選項中D正確。

54.C解析:C語言規(guī)定,只要在定義函數(shù)時不進行存儲類型的顯式說明,函數(shù)的存儲類型就隱含為外部類型,即extern型,外部類型允許其他文件中的函數(shù)調(diào)用。

55.A

56.C

57.B解析:考查了測字符串長度函數(shù)strlen。如果一個字符數(shù)組中存放一個字符串,則函數(shù)strlen的值為'\\0'之前的全部字符個數(shù),也包括空格在內(nèi)。

58.B解析:賦值運算符按照“從右往左”的結(jié)合順序。因此,先執(zhí)行x-=x-x,即x=x-(x-x)=10;再執(zhí)行x+=x,即x=x+x=20,故正確選項為B。

59.A解析:a就是數(shù)組a的首地址,而a+x是數(shù)組中第x個元素的地址,所以在四個選項中,選項B和C只能輸入一個數(shù)據(jù),選項D不能給a[0]輸入數(shù)據(jù),只有A可以完成給數(shù)組所有的元素輸入數(shù)據(jù)的任務(wù)。

60.C

61.A本題考查函數(shù)值的類型。在函數(shù)調(diào)用時,盡管Y的類型是float.x的類型是double,但是因為函數(shù)定義時沒有指定類型說明,系統(tǒng)默認函數(shù)值的類型為int型,所以計算后Y的類型是int型。

62.Csum+=i等價于sun+i,在本題中sum沒有賦初值,而題中只輸出sum的值,因此整個結(jié)果為不確定值。

63.A

64.A結(jié)構(gòu)體和共用體;在“聯(lián)合”中,各成員共享一段內(nèi)存空間,一個聯(lián)合變量的長度等于各成員中最長的長度。應(yīng)該說明的是,這里所謂的共享不是指把多個成員同時裝入一個聯(lián)合變量內(nèi),而是指該聯(lián)合變量可被賦予任一成員值,但每次只能賦一種值,賦入新值則沖去舊值

65.B

\n用'w'方式打開文件,意思是如果文件名相同則覆蓋原來的文件,所以當再次輸入時覆蓋了第一次的內(nèi)容,B選項正確。\n

66.A若a為0,A)選項輸出x,其他輸出y,所以選擇A)。

67.A”%”是求余運算符或模運算符,”%”兩側(cè)均應(yīng)為整型數(shù)據(jù),選項A)中的X是double型數(shù)據(jù)。

68.C

\n當if執(zhí)行到第一個滿足(i*i>一20)&&(i*i<=100)這個條件的i出現(xiàn)時,通過break語句跳出循環(huán),執(zhí)行下面的printf語句。

\n

69.A在本題中,程序首先定義了一個結(jié)構(gòu)體,結(jié)構(gòu)體中有兩個成員變量,一個是整型,另一個是指向該結(jié)構(gòu)體的指針。然后程序定義了一無返回值的函數(shù)set,該函數(shù)帶有三個參數(shù),第一個是結(jié)構(gòu)體指針變量k,第二個是整型變量i,第三個是整型指針變量b。在函數(shù)體中,首先定義了兩個整型變量,然后執(zhí)行for循環(huán),從循環(huán)變量的初始值及循環(huán)結(jié)束條件我們可以知道,循環(huán)執(zhí)行的次數(shù)與形參變量i有關(guān),從循環(huán)體中我們可以看出,該循環(huán)是將結(jié)構(gòu)體數(shù)組中的前一個結(jié)構(gòu)體的指針成員指向后一個結(jié)構(gòu)體的首地址,并用數(shù)組b中的值給結(jié)構(gòu)體的成員變量a賦值。

在主函數(shù)中,定義了一個大小為5的結(jié)構(gòu)體數(shù)組k和一個結(jié)構(gòu)體指針p,然后定義了一個數(shù)組d,并給數(shù)組d進行了初始化操作,然后調(diào)用函數(shù)set,實參分別為結(jié)構(gòu)體數(shù)組k、5和數(shù)組d,結(jié)合上面我們對set函數(shù)的分析可以知道,此時執(zhí)行set的for循環(huán),可以是結(jié)構(gòu)體數(shù)組中各結(jié)構(gòu)體變量的指針成員next指向下一個結(jié)構(gòu)體變量,并將該結(jié)構(gòu)體變量的成員a賦值為數(shù)組d的與之位置相對應(yīng)的值,如結(jié)構(gòu)體數(shù)組中第一個結(jié)構(gòu)體變量的a被賦值為數(shù)組d中的第一個元素值,即23。那么函數(shù)調(diào)用后,結(jié)構(gòu)體數(shù)組各元素的成員a的值分別為23、34、45、56、67。

函數(shù)調(diào)用后,運行p=k+1;語句,該語句的作用是使結(jié)構(gòu)體指針變量p執(zhí)行結(jié)構(gòu)體數(shù)組k的第二個元素,然后執(zhí)行輸出語句,本題要填的空就在輸出語句中,根據(jù)題目要求,要輸出一個45的值,當然,用數(shù)組d輸出這么一個結(jié)果很簡單,為d[2],但選項中并沒有這項,而是需要我們從結(jié)構(gòu)體數(shù)組中輸出這個值,從上面的分析我們知道,該值對應(yīng)結(jié)構(gòu)體數(shù)組第三個元素的成員,而當前的p執(zhí)行第二個元素,從四個選項來分析,只有A選項能完成輸出45的任務(wù)。

B選項中的++p->a由于運算符優(yōu)先級問題,首先運行p->a,輸出的是34,然后加1,即輸出35。

C選項中的(*p).a++等于((*p).a)++,這樣的結(jié)果是34++,最后的輸出結(jié)果是34。

D選項中的p++->a等價于(p++)->a,顯然是輸出第二個結(jié)構(gòu)體的a成員值,即34。

70.B本題主要考查運算符的優(yōu)先級。在C語言中包含算術(shù)運算符、關(guān)系運算符和邏輯運算符等。這些運算符的優(yōu)先級和結(jié)合方式在我們的教材《30天通過計算機等級考試:二級C語言》中可以查閱到。題目中給出運算符優(yōu)先級從高到低依次為sizeof、<<、^、&=。因此本題的答案選B。

71.A本題考查符符串比較函數(shù)和兩個字符串比較的原則這兩個知識點。

\n(1)兩字符串比較的原則是依次比較兩個字符串同一位置的一對字符,若它們的ASCII碼值相同,則繼續(xù)比較下一對字符,若它們的ASCII碼值不同,則ASCII碼值較大的字符所在的字符串較大;若所有字符相同,則兩個字符串相等;若一個字符串全部i個字符與另一個字符串的前i個字符相同,則字符串較長的較大(2)strcmp(s1,s2)的返回值,當str1<str2時,返回值為負數(shù);當str1=str2時,返回0;當str1>str2,返回值為正數(shù)。

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

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

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

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

在本題中,數(shù)據(jù)表A中每個元素距其最終位置不遠,即說明數(shù)據(jù)表基本有序,簡單移動一些元素即可完成排序,在這種情況下,使用直接插入排序法所需時間最少,最合理。因此本題的正確答案是B。

\r\n\r\n\r\n

73.A

74.A執(zhí)行fun(a)語句時,P指向的是字符串數(shù)組a的第一個字符串“Morning”,p自加1之后,p指向字符串數(shù)組a的第2個字符串“Afternoon”。

75.D

76.D在c語言中,定義一維數(shù)組的語句一般形式如下:

類型名數(shù)組名[常量表達式];

一維數(shù)組的引用形式為:數(shù)組名[下標表達式]。count表示能被2整除或被5整除的個數(shù),i則計算有多少個數(shù)組元素。

77.B在c語言規(guī)定中,可以在定義變量的同時給變量賦初值,選項A中n2沒有定義;選項C中不能在賦值表達式的右邊出現(xiàn)變量本身,選項D中字母E后面的數(shù)應(yīng)該為整數(shù),所以不對。

78.CChar類型數(shù)據(jù)占1個字節(jié)。

79.C

80.C

81.(1)錯誤:for(j=0;j<n-1;j++);正確:for(j=0;j<n-1j++)(2)錯誤:a[p]=t;正確:a[j]=t;【解析】for循環(huán)結(jié)束的標志是for后的一個語句,如果for后面直接跟一個分號,說明是一個空循環(huán)不執(zhí)行任何功能,因此“for(j=0;j<n-1;j++);”后面的分號應(yīng)該去掉;當a[i]<a[p]時兩元素互換,因此“a[p]=t;”應(yīng)改為“a[j]=t”。

82.1intfun(intscore[],intm,intbe-low[])2{3inti,j=0;4floatav=0.0;5for(i=0;i<m;i++)6av=av+score[i]/m;/*求平均值*/</m;i++)<m;i++)7for(i=0;i<m;i++)gif(score[i]</m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分數(shù)<>8低于平均分,則將此分數(shù)放入below數(shù)::組中*/</av)p*如果分數(shù)<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分數(shù)<>9below[j++]=score[i];</av)p*如果分數(shù)<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分數(shù)<>10returnj;/*</av)p*如果分數(shù)<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分數(shù)<>返回低于平均分的人數(shù)*/U}要計算低于平均分的人數(shù),首先應(yīng)該求出數(shù)組score中各元素的平均值。然后通過for循環(huán)語句和if條件語句找出低于平均值的分數(shù)。該題第1個循環(huán)的作用是求出平均值av,第2個循環(huán)的作用是找出數(shù)組score中低于平均值的成績記錄并存入below數(shù)組中。</av)p*如果分數(shù)<></m;i++)</m;i++)2021-2022年黑龍江省黑河市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.計算機算法必須具備輸入、輸出和()等5個特性。

A.可行性、可移植性和可擴充性B.可行性、確定性和有窮性C.確定性、有窮性和穩(wěn)定性D.易讀性、穩(wěn)定性和安全性

2.

3.設(shè)有如下定義:int(*ptr);則以下敘述中正確的是()。

A.ptr是指向一維組數(shù)的指針變量

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指int型數(shù)據(jù)的指針

4.在一個C語言源程序文件中所定義的全局變量,其作用域為()。

A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

5.以下關(guān)于typedef的敘述錯誤的是()。A.用tyFedef可以增加新類型

B.typedef只是將已存在的類型用一個新的名字來代表

C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名

D.用typedef為類型說明一個新名,通??梢栽黾映绦虻目勺x性

6.以下函數(shù)findmax擬實現(xiàn)在數(shù)組中查找最大值并作為函數(shù)值返回,但程序中有錯導(dǎo)致不能實現(xiàn)預(yù)定功能。#defineMIN-2147483647intfindmax(intx[],intn){inti,max;for(i=0;i<n;i++){max=MIN;if(max<x[i])max=x[i];)returnmax;}造成錯誤的原因是()。A.定義語句“inti,max;”中max未賦初值

B.賦值語句“max=MIN;”中,不應(yīng)給max賦MIN值

C.語句“if(max<x[i])max=x[i];”中判斷條件設(shè)置錯誤

D.賦值語句“max-MIN;”放錯了位置

7.

8.順序結(jié)構(gòu)的本質(zhì)特點是()。

A.數(shù)據(jù)元素存儲在地址連續(xù)的內(nèi)存空間

B.數(shù)據(jù)元素緊鄰

C.數(shù)據(jù)元素在內(nèi)存中的相對位置表示數(shù)據(jù)之間的邏輯關(guān)系

D.不使用指針

9.一個優(yōu)化的程序可以生成n個元素集合的所有子集,那么該程序的時間復(fù)雜度是()

A.O(n!)B.O(nlogn)C.O(n^2)D.O(2^n)

10.是哈希查找的沖突處理方法()。

A.求余法B.平均取中法C.二分法D.開放地址法

11.若串S=,software,其子串的數(shù)目是()。

A.8B.37C.36D.9

12.擁有PC機并以撥號方式接入網(wǎng)絡(luò)的用戶需要配置()

A.CD-ROMB.ModemC.電話機D.鼠標

13.

14.數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,()沒有專門的軟件對數(shù)據(jù)進行管理。

I.人工管理階段

II.文件系統(tǒng)階段

Ⅲ.數(shù)據(jù)庫階段A.A.僅IB.僅ⅢC.I和IID.II和Ⅲ

15.

16.有以下程序:#include<stdio.h>main(){inta=-2,b=0;while(a++++b);printf("%d,%d\n",a,b);}程序運行后的輸出結(jié)果是()。A.1,3B.0,2C.0,3D.1,2

17.若變量已正確定義,有下列程序段:inta=3,b=5,c=7;if(a>B)a=b;c=a;if(c!=A)c=b;printf("%d,%d,%d\n",a,b,C);其輸出結(jié)果是()。A.程序段有語法錯B.3,5,3C.3,5,5D.3,5,7

18.對于如圖所示二叉樹采用中根遍歷,正確的遍歷序列應(yīng)為()A.ABCDEFB.ABECDFC.CDFBEAD.CBDAEF

19.

20.計算機算法指的是()。

A.計算方法B.排序方法C.解決問題的有限運算序列D.調(diào)度方法

二、2.填空題(20題)21.以下程序的功能是根據(jù)輸入的“y”(“Y”)與“n”(“N”),在屏幕上分別顯示出“ThisisYES.”與“ThisNO.”。空白處需要填入的內(nèi)容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case'y':

case'Y':printf("\nThisisYES,\n");

case'n':

case'N':printf("\nThisisNO.\n");}}

main()

{charch;

printf("\nEnterachar'y','Y'or'n','N':");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

22.隊列是限定在表的一端進行插入和在另一端進行刪除操作的線性表。允許插入的一端稱作______。

23.數(shù)據(jù)庫技術(shù)的主要特點為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨立性和數(shù)據(jù)統(tǒng)一管理與控制。

24.若按功能劃分,軟件測試的方法通常分為白盒測試方法和【】測試方法。

25.在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖中,使()解釋其中的圖形元素。

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

27.閱讀下列程序,則在執(zhí)行后,程序的運行結(jié)果為#include"stdio.h"#include"string.h"main(){chara[30]="nicetomeetyou!";strcpy(a+strlen(a)/2,"you");printf("%s\n",a);}

28.以下程序的功能是輸入任意整數(shù)給n后,輸出n行由大寫字母A開始構(gòu)成的三角形字符陣列圖形。例如,輸入整數(shù)5時(注意:n不得大于10),程序運行結(jié)果如下:

ABCDE

FGHI

JKL

MN

O

請?zhí)羁胀瓿稍摮绦颉?/p>

main()

{inti,j,n;charch='A';

scanf("%d",&n);

if(n<11)

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

{for(j=1;j<=n-i+1;j++)

{printf("%2c",ch);

【】;

}

【】;

}

}

elseprintf("nistoolarge!\n")

printf("\n"0);

}

29.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達式是【】。

intw[10]={23,54,10,33,47,98,72,80,61),*p=w;

30.有以下程序片段,請問執(zhí)行后的輸出結(jié)果是【】。

intn=10;

while(n>7)

{printf("%d",n--);

}

31.有以下程序

intfa(intx){returnx*x;}

intfb(intx){returnx*x*x;}

intf(ing(*f1)(),int(*f2)(),intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2),printf("%d\n",i);}

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

32.下面的程序通過函數(shù)average計算數(shù)組中各元素的平均值,請?zhí)羁铡?/p>

floatavetage(int*pa,intn)

{inti;

floatavg=0.0;

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

avg=avg+【】;avg=【】;

returnavg;

}

main()

{inti,a[5]={2,4,6,8,10,};

floatmean;

prinf("%mean=%f\n",mean);

}

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

34.以下程序是用遞歸方法求數(shù)組中的最大值及其下標值。請?zhí)羁铡?/p>

#defineM10

voidfindmax(int*a,intn,inti,int*pk)

{if(i<n)

{if(a[i]>a[*pk])【】;

findmax(a,n,i+1,&(*pk));}}

main()

{inta[M],j,n=0;

printf("\nEnter%ddata;\n",M);

for(i=0;i<M;i++)scanf("%d",a+i);

findmax(a,M,0,&n);

printf("Themaxinumis:%d\n",a[n]);

printf("It'sindexis;%d\n",n);}

35.下列程序段是從鍵盤輸入的字符中統(tǒng)計小寫字母的個數(shù),用換行符結(jié)束循環(huán)。請?zhí)羁铡?/p>

intn=0,c;

c=getchar();

while(c!='\n')

{if(______)

n++;

}

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

inti=9;

printf("%o\n",i);

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

intm=17;

intfun(intx,inty)

{intm=3;

return(x*Y-m);

}

main()

{inta=5,b=7;

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

}

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

39.在一個容量為32的循環(huán)隊列中,若頭指針front=3,尾指針rear=2,則該循環(huán)隊列中共有______個元素。

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

#include<stdio.h>

main()

{staticcharstr1[40];

charstr2140];

strcpy(str2,"China");

strcat(str1,str2);

strcat(str1,"isagreatcountry!");

printf("%s%s",str2,strl);

printf("%d%d\n",strlen(str2),strlen(str1));

}

三、1.選擇題(20題)41.有以下語句,則對a數(shù)組元素的引用不正確的是inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

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

A.接口復(fù)雜的模塊,其耦合程度一定低

B.耦合程度弱的模塊,其內(nèi)聚程度一定低

C.耦合程度弱的模塊,其內(nèi)聚程度一定高

D.上述三種說法都不對

43.下列程序段的運行結(jié)果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

44.在以下術(shù)語中,與數(shù)據(jù)的邏輯結(jié)構(gòu)無關(guān)的是______。

A.線性結(jié)構(gòu)B.鏈式結(jié)構(gòu)C.樹型結(jié)構(gòu)D.網(wǎng)狀結(jié)構(gòu)

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

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

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

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

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

46.在Windows中,啟動應(yīng)用程序的正確的方法是()

A.用鼠標指向該應(yīng)用程序圖標B.將該應(yīng)用程序窗口最小化成圖標C.將該應(yīng)用程序窗口還原D.用鼠標雙擊該應(yīng)用程序圖標

47.有下列程序段:typedefstructNODE{intnum;structNODE*next;}OLD;下列敘述中正確的是()。

A.以上的說明形式非法B.NODE是一個結(jié)構(gòu)體類型C.OLD是一個結(jié)構(gòu)體類型D.OLD是一個結(jié)構(gòu)體變量

48.設(shè)有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語句是()

A.p=&a;B.p=data.a;C.p=&data.a,D.*p=data.a;

49.如果要限制一個變量只能為本文件所使用,必須通過______來實現(xiàn)。

A.外部變量說明B.靜態(tài)內(nèi)部變量說明C.靜態(tài)外部變量說明D.局部變量說明

50.已知下面的程序段,正確的判斷是______。#defineA3#defineB(A)((A+1)*a)inta=3;......X=3*(A+B(7));

A.程序錯誤,不允許嵌套定義B.X=93C.X=81D.程序錯誤,宏定義不允許有參數(shù)

51.在調(diào)用函數(shù)時,如果實參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是_______。

A.地址傳遞B.單向值傳遞C.由實參傳給形,再由形參傳回實參D.傳遞方式由用戶指定

52.設(shè)p1和p2是指向一個int型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語句是

A.k=*p1+*p2B.p2=k;C.p1=p2;D.k=*p1*(*p2);

53.有以下函數(shù):fun(char*a,char*b){while((*a!='\0')&&(*b!='\0')&&(*a==*b)){a++;b++;}return(*a-*b);}該函數(shù)的功能是()。

A.計算a和b所指字符串的長度之差

B.將b所指字符串復(fù)制到a所指字符串中

C.將b所指字符串連接到a所指字符串后面

D.比較a和b所指字符串的大小

54.在C語言中,函數(shù)的隱含存儲類別是______。

A.autoB.staticC.externD.無存儲類別

55.已知大寫字母A的ACSⅡ碼為65,以下程序的運行結(jié)果是()#include<stdio.h>main(){charc1='A',c2='Y';printf("%d,%d\n",c1,c2);}A.65,89B.A,YC.65,88D.65,90

56.下列程序的輸出結(jié)果是______。main(){inta=-1,b=1,k;if((++a<0)&&!(b--<=0))printf("%d%d\n",a,b);elseprintf("%d%d\n",b,a);}

A.-11B.01C.10D.0

57.設(shè)已執(zhí)行預(yù)編譯命令#include<string.h>,以下程序段的輸出結(jié)果是

chars[]="anapple";

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

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

58.設(shè)x為int型變量,則執(zhí)行以下語句后,x的值為______。x=10;x+x-=x-x;

A.10B.20C.40D.30

59.以下程序段給數(shù)組所有的元素輸入數(shù)據(jù),請選擇正確答案填入。#include<stdio.h>main(){inta[10],i=0;while(i<10)scanf("%d",______);}

A.a+(i++)B.&a[i+1]C.a+iD.&a[++i]

60.下列程序的輸出結(jié)果是()main(){inti,j,m=0,n=0;for(i=0;i<2;i++)for(j=0;j<2;j++)if(j>=i)m=1;n++;printf("%d\n",n);}

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

四、選擇題(20題)61.下列函數(shù)的類型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

62.以下程序執(zhí)行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不確定D.0

63.

64.有以下程序main(){union{charch[2];intd;}s;s.d=0x4321;printf("%x,%x\n",s.ch[0],s.ch[1]);}在16位編譯系統(tǒng)上,程序執(zhí)行后的輸出結(jié)果是______。A.21,43B.43,21C.43,00D.21,00

65.

有以下程序:

#include<stdio.1l>

voidWriteStr(char*fn.char*str)

{FILE*fp;

fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}

main

{WriteStr("tl.dat","start");

WriteStr("t1.dat","end");)

程序運行后,文件t1.dat中的內(nèi)容是()。

A.startB.endC.startendD.endrt

66.下列條件語句中,輸出結(jié)果與其他語句不同的是()

67.已知各變量的類型說明如下:

則以下不符合C語言語法的表達式是()。

A.

B.

C.

D.

68.

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

#include<stdio.h>

main

{inti;

for(i=l;i<=10;i++)

{if(i*i>=20)&&(i*i<=100))

break;

}

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

}

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

69.有如下程序段

#include"stdio.h"

typedefstructaa

{inta;

structaa*next;

}M;

voidset(M*k,inti,int*b)

{intj,d=0;

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

{k[j-1].next=&k[j];

k[j-1].a=b[d++];

}

k[j].a=b[d];

}

main()

{Mk[5],*p;

intd[5]={23,34,45,56,67};

set(k,5,d);

p=k+1;

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

}

要輸出45,則在下畫線處應(yīng)填入的選項是

A.p->next->aB.++p->a

C.(*p).a(chǎn)++D.p++->a

70.第

1

若有運算符<<,sizeof,^,&=,則它們按優(yōu)先級由高至低的正確排列次序是

A.sizeof,&=,<<,^

B.sizeof,<<,^,&=

C.^,<<,sizeof,&=

D.<<,^,&=,sizeof

71.下述程序的運行結(jié)果是()。

#includedstdio.h>

#includedstrin9.h>

main

{char*s1="abDuj";

char*s2="ABdUG";

intt;

t=strcmp(s1,s2);

printf("%d",t);

}

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

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

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

73.

74.有以下程序

#include<stdio.h>

voidfun(char**p)

{++p;printf("%s",*p);}

main

{char*a[]={"Morning","Afternoon","Evening","Night");

fun(a);

}

程序的運行結(jié)果是()。A.A.AfternoonB.fternoonC.MorningD.orning

75.

76.現(xiàn)有如下程序段:

則程序段的輸出結(jié)果為()。

A.7,8

B.8,8

C.7,10

D.8,10

77.下列能正確定義且賦初值的語句是()。

A.intn1=n2=1;

B.charC=99;

C.floatf=f+1;

D.doublex=1.2E5.6;

78.C語言中char類型數(shù)據(jù)占字節(jié)數(shù)為()。

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

79.

80.

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc的功能是:用選擇法對數(shù)組中的m個元素按從小到大的順序進行排序。例如,排序前的數(shù)據(jù)為:1132-5214則排序后的數(shù)據(jù)為:-52111432請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#defineM20voidproc(inta[],intn){inti,j,t,P;

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論