2021年江西省南昌市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)測試卷(含答案)_第1頁
2021年江西省南昌市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)測試卷(含答案)_第2頁
2021年江西省南昌市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)測試卷(含答案)_第3頁
2021年江西省南昌市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)測試卷(含答案)_第4頁
2021年江西省南昌市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)測試卷(含答案)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021年江西省南昌市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.定義無符號整數(shù)類為UInt,下面可以作為類UInt實(shí)例化值的是()。

A.-369B.369C.0.369D.整數(shù)集合{1,2,3,4,5}

2.若有下列定義(設(shè)int類型變量占2個(gè)字節(jié)):

inti=8;

則下列語句:

printf("i=%08d",i);

輸出的結(jié)果是()。A.A.i=8B.i=00000008C.i=08D.8

3.以下合法的字符型常量是A.B.C.D.

4.下列語句組中正確的是()。

A.char*s;s=“Olympic”;

B.chars[7];s=“Olympic”;

C.char*s;s={“Olympic”};

D.chars[7];s={“Olympic”};

5.程序調(diào)試的任務(wù)是()。

A.設(shè)計(jì)測試用例B.驗(yàn)證程序的正確性C.發(fā)現(xiàn)程序中的錯(cuò)誤D.診斷和改正程序中的錯(cuò)誤

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

A.C語言語句必須在一行內(nèi)寫完

B.C語言程序中的每一行只能寫一條語句

C.C語言程序中的注釋必須與語句寫在同一行

D.簡單C語言語句必須以分號結(jié)束

7.以下對于C語言的描述中,正確的是:()

A.C語言調(diào)用函數(shù)時(shí),值傳遞方式只能將實(shí)參的值傳給形參,形參的值不能傳遞給實(shí)參

B.C語言中函數(shù)既可以嵌套定義,也可以遞歸調(diào)用

C.函數(shù)必須有返回值

D.C程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一源程序文件中

8.有以下程序main(){intx,y,z;x=y=1;z=X++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序運(yùn)行后的輸出結(jié)果是

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

9.若有定義語句“doublea,*p=&a;”,下列敘述中錯(cuò)誤的是()。

A.定義語句中的“*”是一個(gè)間址運(yùn)算符

B.定義語句中的“*”是一個(gè)說明符

C.定義語句中的“p”只能存放double類型變量的地址

D.定義語句中*p=&a”把變量a的地址作為初值賦給指針變量p

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

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

11.有以下程序intf(intA){returna%2;}main(){ints[8]={1,3,5,2,4,6),i,d=0;for(i=0;f(s[i];i++)d+=s[i];printf("%d\n",D);}程序運(yùn)行后的輸出結(jié)果是

A.9B.11C.19D.21

12.

13.若已定義x和y為double類型,則表達(dá)式:x=1,y=x+3/2的值是()A.1B.2C.2.0D.2.5

14.以下不能輸出字符A的語句是(注:字符A的ASCIl碼值為65,字符a的ASCIl碼值為97)()。

A.print[("%c\n",a-32);

B.print[("%d\n",A);

C.printf("%c\n",65);

D.printf("%c\n",B-1);

15.以下程序的輸出結(jié)果是()。voidprt(int*m.intn){inti;for(i=0;i<n;i++)m[i]++;)main{inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf(“%d,”,a[i]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1

16.運(yùn)算符________的優(yōu)先級最高。

A.[]B.+=C.?:D.++

17.下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}

A.sum=18B.sum=10C.sum=9D.sum=25

18.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inti,S=0;for(i=1;i<10;i++)if(!(i%2)&&!(i%3))s+=i;printf("%d\n",s);}A.4B.39C.45D.6

19.有下列程序:

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

A.6,5,4,4,5,6,

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

C.4,5,6,4,5,6,

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

20.鏈表不具備的特點(diǎn)是()

A.所需空間與其長度成正比B.不必事先估計(jì)存儲空間C.插入刪除不需要移動(dòng)元素D.可隨機(jī)訪問任一節(jié)點(diǎn)

二、2.填空題(20題)21.寫出下列程序的輸出結(jié)果______。

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

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

}

22.定義inta=5,b;,則執(zhí)行表達(dá)式b=++a*--a之后,變量b的值為【】。

23.以下程序用業(yè)統(tǒng)計(jì)文件十字符個(gè)數(shù)。請?zhí)羁铡?/p>

#include"stdio.h"

main()

{FTLE*fp;longnum=OL;

if((fp=fopen("fname.dat","r"))==NUlL)

{pirntf("Openerror\n");exit(0);}

while()

{fgetc(fp);num++;}

printf("num=%1d\n",num-1);

fclose(fp);

}

24.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊(duì)列屬于______結(jié)構(gòu)。

25.軟件設(shè)計(jì)模塊化的目的是______。

26.以下程序的功能是將字符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串:

abcl23edf456gh,執(zhí)行程序后輸出:123456。請?zhí)羁铡?/p>

#include<stdio.h>

#include<ctype,h>

main()

{chars[80],d[80];inti,j;

gets(s);

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

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

d[j]='\0';

puts(d);

}

27.當(dāng)所有結(jié)點(diǎn)的權(quán)值都相等時(shí),用這些結(jié)點(diǎn)構(gòu)造的二叉排序樹是【】。

28.線性表的存儲結(jié)構(gòu)主要分為順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)。隊(duì)列是一種特殊的線性表,循環(huán)隊(duì)列是隊(duì)列的【】存儲結(jié)構(gòu)。

29.實(shí)現(xiàn)算法所需的存儲單元多少和算法的工作量大小分別稱為算法的【】。

30.在面向?qū)ο蠓椒ㄖ?,【】描述的是具有相似屬性與操作的一組對象。

31.以下isprime函數(shù)的功能是判斷形參a是否為素?cái)?shù),是素?cái)?shù),函數(shù)返回1,

否則返回0。請?zhí)羁铡?/p>

intisprime(inta)

{inti;

for(i=2;i<=a/2;i++)

if(a%i==0)【】;

【】;

}

32.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。

33.結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則可以概括為自頂向下、逐漸求精、【】和限制使用goto語句。

34.棧和隊(duì)列通常采用的存儲結(jié)構(gòu)是【】。

35.若變量a,b已定義為int類型并分別賦值21和55,要求用printf函數(shù)以a=21,b=55的形式輸出,請寫出完整的輸出語句行:【】。

36.若有定義:intx=1,y=2;floata=3.7,b=2.1;則(x+y)%2+(int)a/(int)b表達(dá)式的值為()。

37.以下函數(shù)用于求出一個(gè)2×4矩陣中的最大元素值。

max_value(arr)

intarr[][4];

{

inti,j,max;

max=arr[O][0];

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

for(j=0;【】;j++)

if(【】>max)max=【】;

return(max);

}

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

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

for(i=0;i<3;i++)printf("%d%d",i,fun(a));

prind("\n");

}

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

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

d[j]=0;

40.需求分析的最終結(jié)果是產(chǎn)生【】。

三、1.選擇題(20題)41.下面一組中都是C語言關(guān)鍵字的是______。

A.doubleIntfor

B.mainwhilegoto

C.volatilebreakstatic

D.mallocsizeofnew

42.以下能正確定義一維數(shù)組的選項(xiàng)是

A.inta[5]={0,1,2,3,4,5};

B.chara[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′};

C.chara={′A′,′B′,′C′};

D.inta[5]="0123";

43.有以下程序#include<string.h>structSTU{charname[10];intnum;};voidf(char*name,intnum){structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};num=s[0].num;strcpy(name,s[0].name);}main(){structSTUs[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;p=&s[1];f(p->name,p->num);printf("%s%d\n",p->name,p->num);}程序運(yùn)行后的輸出結(jié)果是

A.SunDan20042B.SunDan20044C.LiSiGuo20042D.YangSan20041

44.下面程序的輸出結(jié)果是()main(){inty=9;for(;y>0;y--)if(y%3==0){printf("%d",--y);continue;}}

A.741B.852C.963D.875421

45.模塊獨(dú)立性是軟件模塊化所提出的要求,衡量模塊獨(dú)立性的度量標(biāo)準(zhǔn)是模塊的()

A.抽象和信息隱蔽B.局部化和封裝化C.內(nèi)聚性和耦合性D.激活機(jī)制和控制方法

46.待排序的關(guān)鍵碼序列為(33,18,9,25,67,82,53,95,12,70),要按關(guān)鍵碼值遞增的順序排序,采取以第一個(gè)關(guān)鍵碼為基準(zhǔn)元素的快速排序法,第一趟排序后關(guān)鍵碼33被放到第()個(gè)位置。

A.3B.5C.7D.9

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

A.變量的作用域取決于變量定義語句的位置

B.全局變量可以在函數(shù)以外的任何部位進(jìn)行定義

C.局部變量的作用域可用于其他函數(shù)的調(diào)用

D.一個(gè)變量說明為static存儲類型是為了限制其他編譯單元的引用

48.下面程序的輸出結(jié)果是()。#include<stdio.h>main(){intx=7,y=3;printf("%d",y=x/y);}

A.0B.2C.3D.不確定的值

49.以下不能定義為用戶標(biāo)識符的是()。

A.scanfB.VoidC.3comD.int

50.下列關(guān)于棧的敘述中正確的是()

A.在棧中只能插入數(shù)據(jù)B.在棧中只能刪除數(shù)據(jù)C.棧是先進(jìn)先出的線性表D.棧是先進(jìn)后出的線性表

51.有如下說明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為9的表達(dá)式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

52.下列程序的執(zhí)行結(jié)果是______。print(int*b,intm){inti;for(i=0;i<m;i++){*b=i;b++;}printf("%d\n",*--B);}main(){inta[5]=}1,2,3,4,5};print(a,5);}

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

53.函數(shù)的值通過return語句返回,下面關(guān)于return語句的形式描述錯(cuò)誤的是

A.return表達(dá)式;

B.return(表達(dá)式);

C.一個(gè)return語句可以返回多個(gè)函數(shù)值

D.一個(gè)return語句只能返回一個(gè)函數(shù)值

54.以下程序的輸出結(jié)果是()。#include<stdio.h>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.00

55.下列選項(xiàng)中錯(cuò)誤的說明語句是

A.chara[]={'t''o','y','o','u','\0'};

B.chara[]={"toyou\0"};

C.chara[]="toyou\O";

D.chara[]='toyou\0';

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

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

57.有以下程序,其中%u表示按無符號整數(shù)輸出:

main

{

unsignedintx=0xFFFF;/*x的初值為十六進(jìn)制數(shù)*/

printf("%u\n",x);

}

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

A.-1B.65535C.32767D.0xFFFF

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

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

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

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

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

59.在16位編譯系統(tǒng)上,若有定義inta[]={10,20,30},*p=&a;,當(dāng)執(zhí)行p++;后,下列說法錯(cuò)誤的是A.p向高地址移了一個(gè)字節(jié)B.p向高地址移了一個(gè)存儲單元C.p向高地址移了兩個(gè)字節(jié)D.p與a+1等價(jià)

60.以下敘述中正確的是A.A.C程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面

B.C程序書寫格式嚴(yán)格,要求一行內(nèi)只能寫一個(gè)語句

C.C程序書寫格式自由,一個(gè)語句可以寫在多行上

D.用C語言編寫的程序只能放在一個(gè)程序文件中

四、選擇題(20題)61.若變量a、i已正確定義,且i已正確賦值,合法的語句是()。A.A.a==1B.++iC.a=a++=5D.a=int(i)

62.有以下程序:

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

A.*****a*bB.a*bC.a*b****D.ab

63.

64.結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是()。

A.程序的規(guī)模B.程序的效率C.程序設(shè)計(jì)語言的先進(jìn)性D.程序的易讀性

65.已知大寫字母A的ASCIl碼值是65,小寫字母a的ASCIl碼值是97。以下不能將變量C中的大寫字母轉(zhuǎn)換為對應(yīng)小寫字母的語句是()。

A.C=(。A’+C.%26一"a"B.c=c+32C.c=c一"A"+"a"D.c=(c一’A")%26+-a"

66.下面程序的輸出結(jié)果是()。

#inclde<stdio.h>

#defineSUB(X,Y)(X)*Y

main()

{inta=3,b=4;

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

}

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

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

A.對于double類型數(shù)組,不可以直接用數(shù)組名對數(shù)組進(jìn)行整體輸入或輸出

B.數(shù)組名代表的是數(shù)組所占存儲區(qū)的首地址,其值不可改變

C.當(dāng)程序執(zhí)行中,數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時(shí),系統(tǒng)將給出“下標(biāo)越界”的出錯(cuò)信息

D.可以通過賦初值的方式確定數(shù)組元素的個(gè)數(shù)

68.下列描述錯(cuò)誤的是()。

A.繼承分為多重繼承和單繼承

B.對象之間的通信靠傳遞消息來實(shí)現(xiàn)

C.在外面看不到對象的內(nèi)部特征是基于對象的“模塊獨(dú)立性好”這個(gè)特征

D.類是具有共同屬性、共同方法的對象的集合

69.以下程序的輸出結(jié)果是______。main(){charst[20]="hello'、0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}

A.99B.520C.1320D.2020

70.有以下程序:

#include<stdi0.h>

#include<string.h>

structA

{inta;charb[10];doubleC;);

voidf(structAt);

main()

{structAa={"1001,"ZhangDa",l098,0};

f(a);printf("%d,%S,%6.1f\n",a.a(chǎn),a.b,a.c);}

voidf(structAt)

{t.a(chǎn)=1002;strcpy(t.b,"ChangRon9");t.c=1202.0;}

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

A.1001,ZhangDa,1098.0

B.1002,ChangRong,1202.0

C.1001,ChangRong,1098.0

D.1002,ZhangDa,1202.0

71.

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

voidfun(intn,char}s){……}

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

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

B.void+pf();pf=fun;

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

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

73.設(shè)有關(guān)系R和S,關(guān)系代數(shù)表達(dá)式為R一(R—S)表示的是()。

A.R∩SB.R—SC.RUSD.R÷S

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

A.abe,a23B.abe,123C.123,abeD.321,cba

75.(22)下列關(guān)于棧的敘述中正確的是()

A.在棧中只能插入數(shù)據(jù)

B.在棧中只能刪除數(shù)據(jù)

C.棧是先進(jìn)先出的線性表

D.棧是先進(jìn)后出的線性表

76.有以下程序

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

A.6,2,3,4,5,B.2,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,

77.下列描述中正確的是()。

A.軟件工程只是解決軟件項(xiàng)目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則

D.軟件工程只是解決軟件開發(fā)中的技術(shù)問題

78.

79.在深度為5的滿二叉樹中,葉子結(jié)點(diǎn)的個(gè)數(shù)為A.32B.31C.16D.15

80.

五、程序改錯(cuò)題(1題)81.下列給定程序中函數(shù)fun()的功能是:用遞歸算法計(jì)算斐波拉契數(shù)列中第n項(xiàng)的值。從第l項(xiàng)起,斐波拉契數(shù)列為:1,1,2,3,5,8,13,21,…例如,若給n輸入7,則該項(xiàng)的斐波拉契數(shù)值為13。請改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設(shè)計(jì)題(1題)82.某學(xué)生的記錄由學(xué)號、8門課成績和平均分組成,學(xué)號和8門課的成績已在主函數(shù)中給出。請編寫proc()函數(shù),它的功能是:求出該學(xué)生的平均分并放在記錄的ave成員中。請自己定義正確的形參。例如,若學(xué)生的成績是65.5,75,88,90,90.5,66,64.5,89.5,則他的平均分應(yīng)當(dāng)是78.625。注意:部分源程序給出如下。請勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.BB【解析】只有B選項(xiàng)369可以用無符號整數(shù)來表示和存儲。A選項(xiàng)一369有負(fù)號,選項(xiàng)C0.369是小數(shù)都不能用無符號整數(shù)類存儲。選項(xiàng)D是一個(gè)整數(shù)集合得用數(shù)組來存儲。

2.B解析:本題考查printf函數(shù)的格式。“%08”格式符中的“0”表示在指定數(shù)據(jù)輸出寬度的同時(shí),在數(shù)據(jù)前面的多余空格處加“0”;“8”表示指定數(shù)據(jù)的輸出寬度為8位。

3.A解析:C語言的字符常量是用單引號(即撇號)括起來的一個(gè)字符。除此之外,在C語言中還允許用以一個(gè)“\\”開頭的字符序列來表示字符常量。其中,形式“\\ddd”表示1到3位8進(jìn)制數(shù)所代表的字符;形式“\\xhh”表示1到2位16進(jìn)制數(shù)所代表的字符。在本題中‘\\x13’表示回車符,是一個(gè)字符常量;‘\\081’用\u30008進(jìn)制數(shù)所代表的字符,但形式不正確,因?yàn)?進(jìn)制數(shù)所表示的字符中不會出現(xiàn)數(shù)字“8”;‘65’不是一個(gè)字符,而是一個(gè)+進(jìn)制數(shù)字;“\\n”是用雙引號括起來的一個(gè)字符,表示一個(gè)字符串,而不是字符常量。

4.A字符型指針變量可以用A選項(xiàng)的賦值方法“Char*s;s=“OlymPiC”;”。C選項(xiàng)的寫法“char*s;s={“Olympic”};”是錯(cuò)誤的。字符數(shù)組可以在定義的時(shí)候初始化,如“chars[]={“Olympic”};”或者“chars[]=“Olympic”;”,但是不可以在定義字符數(shù)組后對數(shù)組名賦值(數(shù)組名是常量,代表數(shù)組首地址),所以B選項(xiàng)和D選項(xiàng)都是錯(cuò)誤的。對于本例,B、D選項(xiàng)中字符數(shù)組s的大小至少為8,才能存放下字符串(字符串的末尾都有結(jié)束標(biāo)識‘\\0’),同時(shí),此時(shí)S為字符數(shù)組的地址,是常量,不能為其賦值。故本題答案為A選項(xiàng)。

5.D程序調(diào)試的任務(wù)是診斷和改正程序中的錯(cuò)誤。

6.DC語句可以跨行來寫,但是必須以分號結(jié)束,所以A選項(xiàng)錯(cuò)誤。C語言程序中的一行可以有多條語句,所以B選項(xiàng)錯(cuò)誤。C語言中的注釋語句可以與原語句放在一行,也可以不放在一行,所以C選項(xiàng)錯(cuò)誤。故本題答案為D選項(xiàng)。

7.A

8.C解析:整型變量x、y的初值都為1,“x++,y++,++y”是一個(gè)逗號表達(dá)式,程序執(zhí)行“z=x++,y++,++y”后,x的值為2,y的值為3,z取豆號表達(dá)式中第二個(gè)表達(dá)式的值,為1。

9.A變量定義語句“doublea,*p=&a;”,“*”是一個(gè)指針運(yùn)算符,而非間址運(yùn)算符。故本題答案為A選項(xiàng)。

10.D

11.A解析:本題考核的知識點(diǎn)是一維數(shù)組的定義,初始化和數(shù)組中元素的引用。函數(shù)f()的作用是形參a為偶數(shù)的時(shí)候返回0,主函數(shù)中首先定義了一個(gè)長度為8的一維數(shù)組,然后給它賦初值使得s[0]=1、a[1]=3、s[2]=5、s[3]=2、s[4]=4、s[5]=6.其他沒有賦值的數(shù)組元素將自動(dòng)賦值為0。for循環(huán)中,當(dāng)s[1]不為偶數(shù)的時(shí),將s[i]相加,即當(dāng)i=3時(shí),s[i]=2為偶數(shù),退出循環(huán),此時(shí)d的值為d=s101+s[1]+s[2]=1+3+5=9,因此最后輸出的d的值為9。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合題意。

12.B

13.C解析:這是一個(gè)逗號表達(dá)式,它的值應(yīng)為表達(dá)式y(tǒng)=x+3/2的值,而前一個(gè)表達(dá)式已給x賦值1,在沒有進(jìn)行類型轉(zhuǎn)換的情況下,3/2的值為1,所以x+3/2的值應(yīng)為2.0。

14.B在C語言中%d表示輸出整型數(shù)值,所以答案為B。

15.B函數(shù)調(diào)用時(shí),prt函數(shù)的作用是為使m數(shù)組中的數(shù)自增1,因此數(shù)組下標(biāo)從0開始,每個(gè)元素都自加1。

16.A

17.B解析:本題考查帶參數(shù)的宏的定義及相關(guān)運(yùn)算:S=m+n+m+n*k=1+2+1+2*3=10。

18.Dif語句的條件是當(dāng)i既是3的倍數(shù)又是2的倍數(shù)時(shí)成立,所以此程序?qū)崿F(xiàn)的功能是將10以內(nèi)既是3的倍數(shù)又是2的倍數(shù)的數(shù)相加。

19.D程序定義數(shù)組a,使用6個(gè)元素對其初始化,接著以寫二進(jìn)制方式打開文件d.dat。調(diào)用fwrite函數(shù)將a的6個(gè)元素逆序(654321)寫入文件,接著調(diào)用rewind函數(shù),將文件指針移動(dòng)到文件開始位置。調(diào)用fread函數(shù)讀入3個(gè)整數(shù),逐個(gè)存放到a開始下標(biāo)為3的3個(gè)位置,即a[3]=6,a[4]=5,a[5]=4,關(guān)閉文件。再次調(diào)用for循環(huán)輸出a,結(jié)果為:1,2,3,6,5,4,。本題答案為D選項(xiàng)。

20.D

21.333,3解析:本題在while(n++<=1)語句后,直接加了分號,說明如果while()的條件為真時(shí),該循環(huán)什么都不做:n++是先取n的當(dāng)前值和1做比較,然后再將n加1。第一次循環(huán),n=0時(shí),循環(huán)條件n++=<1成立,執(zhí)行循環(huán),然后得到n=1。第二次循環(huán),n=1時(shí),循環(huán)條件n++=1<=1成立,執(zhí)行循環(huán),然后得到n=2。第三次循環(huán),n=2時(shí),循環(huán)條件n++=2<=1不成立,不執(zhí)行循環(huán),但在判斷循環(huán)條件時(shí)仍將n加1,得到n=3.退出循環(huán)后執(zhí)行printf語句,第二個(gè)printf語句輸出n++,是先輸出n的當(dāng)前值3,然后再將n加l,即程序結(jié)束后得到n=4,但輸出的是3。

22.2525解析:#NAME?

23.!feof(fp)!feof(fp)解析:本題中統(tǒng)計(jì)文件中字符個(gè)數(shù)的算法可描述如下:首先判斷文件位置指針是否指向了文件尾,如果不是則讀出一個(gè)字符,同時(shí)字符的個(gè)數(shù)加1,再判斷文件位置指針是否位于文件尾,如此循環(huán),直到文件位置指針位于文件尾為止。本題首先以讀文件的方式打開了文件“fname.daf”,如果打開成功則把返回的文件型指針賦值給fp,然后通過循環(huán)求文件中的字符數(shù)。首先判斷文件位置指針是否位于文件尾,如果不是則循環(huán)讀取字符,每次字符數(shù)加1。所以下劃處應(yīng)填循環(huán)條件,文件位置指針不是指向文件尾,即“!feof(fp)”。

24.存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)(也稱數(shù)據(jù)的物理結(jié)構(gòu))。所謂循環(huán)隊(duì)列,就是將隊(duì)列存儲空間的最后一個(gè)位置繞到第一個(gè)位置,形成邏輯上的環(huán)狀空間。供隊(duì)列循環(huán)使用??芍h(huán)隊(duì)列應(yīng)當(dāng)是物理結(jié)構(gòu)。

25.降低復(fù)雜性降低復(fù)雜性

26.s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]解析:字符數(shù)組的初始化,字符串的輸入和輸出的應(yīng)用。C語言沒有字符串變量,字符串不是存放在一個(gè)變量中而是存放在一個(gè)字符型數(shù)組中,因此為了存放字符串,常常在程序中定義字符型數(shù)組;字符串存放在字符數(shù)組中,但字符數(shù)組與字符串可以不等長,C語言規(guī)定以“\\0”字符作為字符串結(jié)束標(biāo)志。

本題中,chars[80],d[80];定義了兩個(gè)字符型數(shù)組,可以放入80個(gè)字符。gets函數(shù)是c語言提供的一個(gè)專門用于讀字符串的函數(shù),它讀入全部字符(包括空格),直到遇到回車為止。本題中,讀入字符串s后,開始比較s中的每個(gè)字符是否為數(shù)字字符,因?yàn)樽址麛?shù)據(jù)在內(nèi)存中以相應(yīng)的ASCII碼存放,所以只需比較相應(yīng)的ASCII碼值是否在48('0'的ASCII代碼)與57('9'的ASCII代碼)之間,或者直接與'0','9'進(jìn)行比較,如果是數(shù)字字符則將此字符存入d數(shù)組中,不是則繼續(xù)進(jìn)行下一字符的比較,直至s結(jié)束(即'0'的出現(xiàn))。將“'\\0'”字符作為字符串d結(jié)束標(biāo)志,最后調(diào)用puts函數(shù)輸出d。所以在空格處應(yīng)填入比較語句s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或&&48<=s[i]或57>=s[i]。

27.右子樹(單支樹)右子樹(單支樹)解析:二叉排序樹對于任意新結(jié)點(diǎn),若大于等于根結(jié)點(diǎn),則在右子樹上建立。

28.順序順序解析:線性表的存儲結(jié)構(gòu)主要分為順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)。當(dāng)隊(duì)列用鏈?zhǔn)酱鎯Y(jié)構(gòu)實(shí)現(xiàn)時(shí),就稱為鏈隊(duì)列;當(dāng)隊(duì)列用順序存儲結(jié)構(gòu)實(shí)現(xiàn)時(shí),就稱為循環(huán)表。因此,本題劃線處應(yīng)填入“順序”。

29.空間復(fù)雜度和時(shí)間復(fù)雜度算法的復(fù)雜性是指對一個(gè)在有限步驟內(nèi)終止算法和所需存儲空間大小的估計(jì)。算法所需存儲空間大小是算法的空間復(fù)雜性,算法的計(jì)算量是算法的時(shí)間復(fù)雜性。

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

31.return0return1return0,return1解析:如果a能被i整除,則a是素?cái)?shù),返回值為0。如果a不能被i整除,則a不是素?cái)?shù),返回值為1。

32.軟件開發(fā)

33.模塊化模塊化解析:結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則可以概括為自頂向下、逐步求精、模塊化和限制使用goto語句。自頂向下程序設(shè)計(jì)時(shí),應(yīng)先考慮總體,后考慮細(xì)節(jié);先考慮全局目標(biāo),后考慮局部目標(biāo)。不要一開始就過多追求眾多的細(xì)節(jié),先從最上層總目標(biāo)開始設(shè)計(jì),逐步使問題具體化。

逐步求精:對復(fù)雜問題,應(yīng)設(shè)計(jì)一些子目標(biāo)作過度,逐步細(xì)化。

模塊化:一個(gè)復(fù)雜問題,肯定是由若干精簡單的問題構(gòu)成。模塊化是把程序要解決的總目標(biāo)分解為分目標(biāo),再進(jìn)一步分解為具體的小目標(biāo),把每個(gè)小目標(biāo)稱為一個(gè)模塊。

限制使用goto語句。

34.鏈?zhǔn)酱鎯晚樞虼鎯︽準(zhǔn)酱鎯晚樞虼鎯?/p>

35.printf("a=%db=%d"ab);printf('a=%d,b=%d',a,b);解析:根據(jù)printf函數(shù)的格式可知輸出語句應(yīng)該為:printf('a=%d,b=%d',a,b);

36.22解析:本題考查表達(dá)式的運(yùn)算。因?yàn)閤=1,y=2,所以表達(dá)式(x+y)%2=3%2=1,(int)a/(int)b=(int)}(3/2)=1,因此整個(gè)表達(dá)式的結(jié)果為(x+y)%2+(int)a/(int)b=1+1=2。

37.j<4arr[i][j]arr[i][j]j<4\r\narr[i][j]\r\narr[i][j]解析:2*4矩陣實(shí)際上就是一個(gè)二維數(shù)組,結(jié)合本題應(yīng)為arr[2][4],所以在第一個(gè)循環(huán)中應(yīng)當(dāng)填寫“4”;第二個(gè)橫線處是要判斷當(dāng)前的數(shù)組元素值是否大于max,所以應(yīng)填寫arr[i][j];第三個(gè)橫線處是要將當(dāng)前大于max的數(shù)組元素的值賦給變量max,所以應(yīng)當(dāng)填寫“arr[i][j]”。

38.1011121210111212解析:需要注意的是,函數(shù)fun()中的變量c為靜態(tài)局部變量,在靜態(tài)存儲區(qū)內(nèi)分配了存儲單元,在程序整個(gè)運(yùn)行期間不會釋放,所以調(diào)用函數(shù)時(shí),只賦初值一次,以后再調(diào)用函數(shù)時(shí),c中的值為上次調(diào)用函數(shù)時(shí)的值。執(zhí)行for循環(huán),當(dāng)i=0時(shí),fun(5)=5+1+4=10,此時(shí)c=4;當(dāng)i=1時(shí),fun(5)=5+1+5=11,此時(shí)c=5;當(dāng)i=2時(shí),fun(5)=5+1+6=12;此時(shí)c=6:當(dāng)i=3時(shí),退出for循環(huán),并輸出回車換行符。

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

40.需求規(guī)格說明書需求規(guī)格說明書解析:軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。需求規(guī)格說明書包括正確性、無歧義性、完整性、可驗(yàn)證性、一致性、可理解性、可修改性和可追蹤性等。

41.C解析:C語言中的關(guān)鍵字有32個(gè)關(guān)鍵字(參見C語言教程),本題中只有C符合題意。

42.B解析:選項(xiàng)A)中,定義的初值個(gè)數(shù)大于數(shù)組的長度;選項(xiàng)C)中,數(shù)組名后少了中括號;選項(xiàng)D)中,整型數(shù)組不能賦予字符串。

43.A解析:題目中定義的函數(shù)f()包含兩個(gè)參數(shù),一個(gè)字符指針,—個(gè)整型變量。當(dāng)修改參數(shù)指針?biāo)赶虻膬?nèi)容的時(shí)候,實(shí)參所指的內(nèi)容也被修改,即傳址調(diào)用;但只是修改參數(shù)變量的內(nèi)容,則實(shí)奉不受影響,即傳值調(diào)用。因此,主函數(shù)調(diào)用f()函數(shù)后,第1個(gè)參數(shù)被修改成函數(shù)中s[0]的name成員,第2個(gè)參數(shù)不受影響,還是主函數(shù)中s[1]的num成員。故最終輸出SunDan20042。應(yīng)該選擇A。

44.B

45.C解析:模塊的獨(dú)立程度是評價(jià)軟件設(shè)計(jì)好壞的重要度量標(biāo)準(zhǔn)。衡量軟件的模塊獨(dú)立性經(jīng)常使用耦合性和內(nèi)聚性兩個(gè)定性的度量標(biāo)準(zhǔn)。故選項(xiàng)C正確。

46.BB.【解析】快速排序的基本思想是:從表中選取一個(gè)元素(如本題中的33),將表中小于此元素的移到前面,大于此元素的移到后面,結(jié)果把線性表分割成兩部分(兩個(gè)子表),此元素插入到其分界線的位置處。然后分別對兩個(gè)子表再次分割……本題中33作為分割的中界線,第一趟排序后排在比它小的18、9、25、12后面。

47.D解析:本題考查函數(shù)調(diào)用的變量作用域。全局變量不在任何函數(shù)體內(nèi)定義,作用域?yàn)檎麄€(gè)文件;局部變量在函數(shù)體內(nèi)定義,作用域僅為本次函數(shù);static類型是靜態(tài)變量,為了方便其他編譯單元的引用,不能隨意改變。一個(gè)函數(shù)包含兩部分:函數(shù)首和函數(shù)體,函數(shù)體包括花括號內(nèi)的所有語句。

48.B解析:程序運(yùn)行初始時(shí),x被賦值7,y被賦值3,因?yàn)閥為整型變量,因此表達(dá)式:y=x/y=7/3=2。

49.D解析:標(biāo)識符是C語言中用來表示變量名、數(shù)組名、函數(shù)名、指針名、結(jié)構(gòu)名、聯(lián)合名、枚舉常數(shù)名、用戶定義的數(shù)據(jù)類型名、語句標(biāo)號等用途的字符序列。標(biāo)識符由1~32個(gè)字符組成,第一個(gè)字符必須是字母或下劃線,后面的字符可以是字母、數(shù)字或下劃線。標(biāo)識符不能與C關(guān)鍵字相同,并區(qū)分大小寫。選項(xiàng)D)錯(cuò)誤,因?yàn)閕nt是C語言中的關(guān)鍵字。

50.D解析:棧是一種特殊的線性表,這種線性表只能在固定的一端進(jìn)行插入和刪除操作,允許插入和刪除的一端稱為棧頂,另一端稱為棧底。一個(gè)新元素只能從棧頂一端進(jìn)入,刪除時(shí),只能刪除棧頂?shù)脑兀磩倓偙徊迦氲脑兀詶R脖环Q為“先進(jìn)后出”表或“后進(jìn)先出”表。

51.B解析:在C語言的數(shù)組元素的引用方法,我們在前面已經(jīng)講過了,比如數(shù)組元素a[0],可以用表達(dá)式*(p+0),即*p來引用,對于數(shù)組元素a[1],可以用表達(dá)式*(p+1)來引用,在這里,p+1的值就是數(shù)組元素a[1]的地址,對此地址使用“間接訪問運(yùn)算符”:*(p+1)就代表存儲單元a[1],注意:一對圓括號不可少。同樣,對于數(shù)組元素a[2],則可以用表達(dá)式。(p+2)來引用…,對于數(shù)組元素a[9],可以用表達(dá)式,(p+9)來引用。因此,當(dāng)指針變量p指向a數(shù)組的起始地址時(shí),若0≤i<10,則數(shù)組元素a[i]可以用*(p+i)來表示。

52.B解析:函數(shù)print中形參b指向數(shù)組a的首地址,for循環(huán)將0~4依次賦給元素a[0]~a[4],指針b指向數(shù)組后的地址,輸出函數(shù)先將指針b自減,指向元素a[4],輸出為4。

53.C解析:return語句中的表達(dá)式的值就是所求的函數(shù)值,此表達(dá)式值的類型必須與函數(shù)首部所說明的類型一致。如果類型不一致,則以函數(shù)值的類型為準(zhǔn),由系統(tǒng)自動(dòng)進(jìn)行轉(zhuǎn)換。一個(gè)return語句只能返回一個(gè)值。

54.C解析:本題考查if語句。++a是先自增后使用,b--是先使用后自減。執(zhí)行++a后,a值為0,不滿足條件,所以a為0,b仍為1,接下去執(zhí)行else語句,輸出10。

55.D解析:通過賦初值的方式給一維數(shù)組賦字符串,可以用給一般數(shù)組賦初值的相同方式給一維字符數(shù)組賦字符串,也可以在賦值時(shí)直接賦字符串常量。選項(xiàng)B)和C)后面的'\\0'是多余的,在C語言中,系統(tǒng)會自動(dòng)在字符串的結(jié)尾處加上一個(gè)字符'\\0'作為串的結(jié)束標(biāo)記。

56.D

57.B解析:整型常量有十進(jìn)制、八進(jìn)制和十六進(jìn)制3種表示:十進(jìn)制整數(shù)以正號(+)或負(fù)號(-)開頭,由首位非0的一串十進(jìn)制數(shù)字組成,正負(fù)號也可省略,表示正整數(shù);八進(jìn)制整數(shù)以數(shù)字0開頭,后面接著干個(gè)八進(jìn)制數(shù)字(0~7):十六進(jìn)制整數(shù)以數(shù)字。和字母x(大、小寫均可)開頭,后面接若干個(gè)十六進(jìn)制數(shù)字(數(shù)字0~9和字母A~F,大、小寫均可)。故本題是以無符號整數(shù)形式輸出一個(gè)十六進(jìn)制整數(shù)FFFF,將其轉(zhuǎn)換為十進(jìn)制就是65535,故本題應(yīng)該選擇B。

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

59.A解析:在16位編譯系統(tǒng)下,一個(gè)int型變量是用16位來存儲的,其占用兩個(gè)字節(jié),當(dāng)執(zhí)行p++之后,相當(dāng)于p向高位移動(dòng)了一個(gè)存儲單元,也就是兩個(gè)字節(jié)。因此,本題的答案為選項(xiàng)A)。

60.C

61.B本題主要考查C語言合法語句的定義。

在選項(xiàng)A中,a==1不是一個(gè)合法的語句,因?yàn)樗鼪]有語句結(jié)束標(biāo)識符“;”,不能說是一條語句,如果作為一個(gè)表達(dá)式,它是正確的。

在選項(xiàng)B中,由于變量i已被正確定義并有初值,

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論