2021年江西省南昌市全國計算機等級考試C語言程序設計真題(含答案)_第1頁
2021年江西省南昌市全國計算機等級考試C語言程序設計真題(含答案)_第2頁
2021年江西省南昌市全國計算機等級考試C語言程序設計真題(含答案)_第3頁
2021年江西省南昌市全國計算機等級考試C語言程序設計真題(含答案)_第4頁
2021年江西省南昌市全國計算機等級考試C語言程序設計真題(含答案)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2021年江西省南昌市全國計算機等級考試C語言程序設計真題(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.在位運算中,操作數(shù)每左移兩位,其結果相當于()。

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

2.sizeof(float)是()。

A.一種函數(shù)調用B.一種函數(shù)定義C.一個浮點表達式D.一個整型表達式

3.在供應關系中,實體供應商和實體零件之間的聯(lián)系是()。

A.多對多B.一對一C.多對一D.一對多

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

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

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

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

5.輸入序列為ABC,輸出為CBA時,經過的棧操作為()。

A.push,pop,push,pop,push,pop

B.push,push,push,pop,pop,pop

C.push,push,pop,pop,push,pop

D.push,pop,push,push,pop,pop

6.在結構化程序設計中,模塊劃分的原則是()。

A.各模塊應包括盡量多的功能

B.各模塊的規(guī)模應盡量大

C.各模塊之間的聯(lián)系應盡量緊密

D.模塊內具有高內聚度,模塊間具有低耦合度

7.下列不屬于軟件工程的3個要素的是______。

A.工具B.過程C.方法D.環(huán)境

8.下列描述錯誤的是()。

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

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

C.在外面看不到對象的內部特征是基于對象的“模塊獨立性好”這個特征

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

9.設有100個元素,用折半查找法進行查找時,最大比較次數(shù)是_____。

A.25B.50C.10D.7

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

11.非線性結構是數(shù)據(jù)元素之間存在一種()。

A.一對多關系B.多對多關系C.多對一關系D.一對一關系

12.若有定義“intx,y;”,并已正確給變量賦值,則以下選項中與表達式“(x-y)?(x++):(y++)”中的條件表達式“(x-y)”等價的是()。

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

13.當調用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳送的是______。

A.數(shù)組的長度B.數(shù)組的首地址C.數(shù)組每一個元素的地址D.數(shù)組每個元素中的值

14.

15.以下不能將s所指字符串正確復制到t所指存儲空間的是()A.do{*t++=*s++;}while(*s);

B.for(=0;t[的]=s@];i++);

C.while(*t=*s){t++;s++}

D.for(i=0.j=0;t[i++]=sj++];);.

16.

17.設有以下函數(shù)f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}如果在下面的程序中調用該函數(shù),則輸出結果是______。main(){inta=2,i;for(i=0;i<3;i++)printf("%d\n"f(a));}

A.789B.7911C.71013D.777

18.以下選項中合法的C語言常量是()。

A.‘C-STR’B.2014.1C.”\1.0D.2EK

19.請選出可用作C語言用戶標識符的一組()。

A.voiddefineWORD

B.a3_b3_123IF

C.For_abccase

D.2aDOsizeof

20.下列變量聲明合法的是()。A.shorta=1.4e-1;

B.doubleb=1+3e2.8;

C.longdo=0xfdaL;

D.float2aaa=1e-3;

二、2.填空題(20題)21.如果輸入'1'、'2'、'3'、'4',則以下程序的運行結果為【】。

#include<stdio.h>

main()

{charc;

inti,k;

k=0;

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

{while(1)

{c=getchar();

if(c>='0'&&c<='9')break;

}

k=k*10+c-'0';

}

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

}

22.一棵二叉樹第六層(根結點為第一層)的結點數(shù)最多為______個。

23.以下定義的結構體類型里包含兩個成員,其中成員變量info用來存放整型數(shù)據(jù);成員變量link是指向自身結構體的指針。請將定義補充完整。

structnode

{intinfo;

【】link;

};

24.以下程序的運行結果是______。

intx;

main()

{inta=5,b=8;

swap(a,b);

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

}

swap(inta,intb)

{inttemp;

temp=a;a=b;

b=temp;x=a/b;

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

}

25.若變量n中的值為24,則prnt函數(shù)共輸出【】行。

voidprnt(intn,intaa[])

{inti;

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

{printf("%6d",aa[i]);

if!(i%5))printf("\n");

}

printf("\n");

}

26.設一棵二叉樹的中序遍歷結果為ABCDEFG,前序遍歷結果為DBACFEG,則后序遍歷結果為【】。

27.在對文件進行操作的過程中,若要使文件位置的指針回到文件的開頭,應使用的函數(shù)是【】。

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

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

29.下列程序的輸出結果是______。

#include<stdio.h>

sb(ints[],intb)

{staticintn=3;

b=s[n];

n--;

return(b);

}

main()

{ints[]={1,5,6,8};

inti,x=0;

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

{x=sb(s,x);

printf("%d",x);

}

printf("\n");

}

30.下列程序的輸出結果是______。

longfun5(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);}

31.以下sstrcpy()函數(shù)實現(xiàn)字符串復制,即將t所指字符串復制到s所指向內存空間中,形成一個新的字符串s。清填空。

voidsstrcpy(char*s,char*t)

{while(*s++=【】);}

main()

{charstr1[100],str2[]="abcdefgh";

strcpy(str1,str2);

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

}

32.數(shù)據(jù)庫保護分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復。

33.下列程序的運行結果是______。

#defineP(A)printf("%d",A)

main()

{intj,a[]={1,2,3,4,5,6,7},i=5;

for(j=3;j>1;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

34.在兩種基本測試方法中,()測試的原則之一是保證所測模塊中每一個獨立路徑至少執(zhí)行一次。

35.瀑布模型將軟件生存周期劃分為【】、開發(fā)和運行3個階段。

36.下列程序的功能是對輸入的一行字符中的數(shù)字字符的字面值累加,輸出此累加和,請?zhí)羁铡?/p>

#include<stdio.h>

#include<ctype.h>

main()

{charc;

inta,s=0;

while(______)

if(isdigit(C))

{a=c-'0';s+=a;}

printf("s=%d",s);

}

37.函數(shù)pi的功能是根據(jù)以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+...+1(n*n)

現(xiàn)在請你在下面的函數(shù)中填空,完成求π的功能。

#include"math.h"

{doubles=0.0;longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*S));

}

38.以下程序的功能是:刪去一維數(shù)組中所有相同的數(shù),使相同的數(shù)只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)fun返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。

例如,若一維數(shù)組中的數(shù)據(jù)是:

2223445666677899101010

刪除后,數(shù)組中的內容應該是:2345678910。請?zhí)羁铡?/p>

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1]【】a[i])a[j++]=a[i];

【】;

}

main()

{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;

printf("Theoriginaldata:\n");

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

n=fun(a,n);

printf("\nThedataafterdeleted:\n");

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

}

39.以下程序的輸出結果是______。

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

40.若輸入tear、test、arj,則下列程序的運行結果為【】。

main()

{char*strl[20],*str2[20],*str3[20];

charswap();

scanf("%s",str1);

scanf("%s",str2);

scanf("%s",str3);

if(strcmp(str1,str2)>0)swap(str1,str2);

if(strcmp(str1,str3)>0)swap(str1,str3);

if(strcmp(str2,str3)>0)swap(str2,str3);

printf("%s%s%s\n",str1,str2,str3);

}

charswap(p1,p2)

char*p1,*p2;

{char*p[20];

strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);

}

三、1.選擇題(20題)41.下列變量說明語句中,正確的是______。

A.chara=b=c;B.chara;b;c;C.intx;z;D.intx,z;

42.以下程序有錯,錯誤原因是main(){int*p,i;char*q,ch;p=&i;q=&ch;*p=40;*p=*q;……}

A.p和q的類型不一致,不能執(zhí)行*p=*q;語句

B.*p中存放的是地址值,因此不能執(zhí)行*p=40;語句

C.q沒有指向具體的存儲單元,所以*q沒有實際意義

D.q雖然指向了具體的存儲單元,但該單元中沒有確定的值,所以執(zhí)行*p=*q;沒有意義,可能會影響后面語句的執(zhí)行結果

43.若有以下程序

#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]);}

上面程序的輸出結果是

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

44.下列有關數(shù)據(jù)庫的描述,正確的是______。

A.數(shù)據(jù)庫是一個DBF文件B.數(shù)據(jù)庫是一個關系C.數(shù)據(jù)庫是一個結構化的數(shù)據(jù)集合D.數(shù)據(jù)庫是一組文件

45.下列敘述中錯誤的是()。

A.一個C語言程序只能實現(xiàn)一種算法

B.c程序可以由多個程序文件組成

C.C程序可以由一個或多個函數(shù)組成

D.一個c函數(shù)可以單獨作為一個C程序文件存在

46.以下對結構體類型變量td的定義中,錯誤的是

A.typedefstructaa{intn;floatm;}AA;AAtd;

B.stmctaa{intn;floatm;}td;stmctaatd;

C.struct{intn;floatm;}aa;structaard;

D.struct{intn;floatm;}td;

47.若整型變量a、b、c、d中的值依次為1、4、3、2。則條件表達式a<b?a:c<d?c:d的值是______。A.1B.2C.3D.4

48.為了使模塊盡可能獨立,要求()。

A.模塊的內聚程度要盡量高,且各模塊間的耦合程度要盡量強

B.模塊的內聚程度要盡量高,且各模塊間的耦合程度要盡量弱

C.模塊的內聚程度要盡量低,且各模塊間的耦合程度要盡量弱

D.模塊的內聚程度要盡量低,且各模塊間的耦合程度要盡量強

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

A.scanfB.VoidC.3comD.int

50.對下述程序的判斷中,正確的是()。#include<stdio.h>voidmain(){char*P,s[256];p=s;while(strcmp(s,"theend")){printf("Inputthestring:");gets(s);while(*P)putchar(*p++);}}

A.此程序循環(huán)接收字符串并輸出,直到接收到字符串“theend”為止

B.此程序循環(huán)接收字符串,接收到字符串“theend”則輸出,否則程序終止

C.此程序循環(huán)接收字符串并輸出,直到接收字符串“theend”為止,但因為代碼有錯誤,程序不能正常工作

D.此程序循環(huán)接收字符串并將其連接在一起,直到接收字符串“theend”為止,輸出連接在一起的字符串

51.已知a、b、c為整型變量,若從鍵盤輸入5<空格>6<空格>7<回車>,使a的值為5,b的值為6,c的值為7,則下列選項中正確的輸入語句是()。

A.scanf("%3d%3d%3d",a,b,C);

B.scanf("%d%d%d",a,b,C);

C.scanf("%d%d%d",&a,&b,&c);

D.scanf("%d%d%d",&a,&b,&c);

52.設intx=10,y=3,z;,以下語句的輸出結果是______。printf("%d\n",z=(x%y,x/y));

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

53.以下4組用戶定義標識符中,全部合法的一組是()A._mainencludesin

B.If-maxturbo

C.txtREAL3COM

D.intk_2_001

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

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

55.在軟件工程中,白箱測試法可用于測試程序的內部結構。此方法將程序看做是______。A.A.路徑的集合B.循環(huán)的集合C.目標的集合D.地址的集合

56.下列正確的實型常量是()。

A.E3.4B.-12345C.2.2eO.8D.4

57.若有以下程序段:structst{intn;int*m;};inta=2,b=3,c=5;structsts[3]=({101,&a},{102,&c},{103,&b}};main(){structst*p;p=s;…}則以下表達式中值為5的是()。

A.(p++)->mB.*(p++)->mC.(*p).mD.*(++p)->m

58.以下選項中不能作為合法常量的是_____。A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e0

59.已定義以下函數(shù):fun(char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}此函數(shù)的功能是()。

A.將P1所指字符串復制到p2所指內存空間,

B.將p1所指字符串的地址賦給指針p2

C.對p1和p2兩個指針所指字符串進行比較

D.檢查p1和p2兩個指針所指字符串中是否有'\0'

60.有以下程序main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,j,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}執(zhí)行后輸出結果是

A.456B.258C.369D.789

四、選擇題(20題)61.下列字符串是標識符的是()。

A.aaB.a-classC.intD.LINE1

62.結構化程序設計的3種結構是()。

A.順序結構、選擇結構、轉移結構

B.分支結構、等價結構、循環(huán)結構

C.多分支結構、賦值結構、等價結構

D.順序結構、選擇結構、循環(huán)結構

63.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}輸出結果是()。A.28B.27C.42D.4l

64.若有定義語句:“inta=3,b=2,c=1;”,以下選項中錯誤的賦值表達式是()。

A.a=(b=4)=3;B.a=b=c+1:C.a=(b=4)+C;D.a=1+(b=c一4);

65.以下語句中存在語法錯誤的是()。

66.

67.

68.在單鏈表中,增加頭結點的目的是()。

A.方便運算的實現(xiàn)B.使單鏈表至少有一個結點C.標識表結點中首結點的位置D.說明單鏈表是線性的鏈式存儲實現(xiàn)

69.

70.

71.當變量c的值不為2、4、6時,值也為”真”的表達式是()。

A.(c>=2&&c<=6)&&(c%21=1)

B.(c==2)ll(e==4)II(C==6)

C.(C>=2&&c<=6)&&!(c%2)-

D.(c>=2&&c<=6)Il(c!=3)I|(C!=5)

72.有以下程序:

程序運行后的輸出結果是()。

A.33B.197C.143D.28

73.設有定義"doublea[10],*s=a;",以下能夠代表數(shù)組元素a[3]的是()。

A.(*s)[3]B.*(s+3)C.*s[3]D.*s+3

74.下列可用于C語言用戶標識符的一組是()。

A.void,define,WORD

B.a3_3,_123,Car

C.For,-abc,IFCase

D.2a,DO,sizeof

75.有以下程序:

程序運行后的輸出結果是()。

A.4B.34C.31D.32

76.在結構化程序設計中,模塊劃分的原則是()。

A.各模塊應包括盡量多的功能

B.各模塊的規(guī)模應盡量大

C.各模塊之間的聯(lián)系應盡量緊密

D.模塊內具有高內聚度,模塊間具有低耦合度

77.有以下程序:

則以下函數(shù)調用語句錯誤的是()。

A.k:f(a,B.;B.k:add(a,B.;C.k=(*f)(a,B.;D.k=*(a,B.;

78.有以下程序inta=3;main(){ints=0;{inta=5;s+=a++;}s+=a++;printf("%d\n",s);}程序運行后的輸出結果是______。

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

79.下面程序由兩個源程序文件t4.h和t4.c組成,程序編譯運行的結果是()。

t4.h的源程序為:

A.920B.1611C.911D.1610

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

A.C程序必須由一個或一個以上的函數(shù)組成

B.函數(shù)調用可以作為一個獨立的語句存在

C.NN數(shù)NNN值,必須通過return語句返回

D.函數(shù)形參的值也可以傳回給對應的實參

五、程序改錯題(1題)81.寫出下列程序的運行結果。

main

{intn;

For(n=3;n<=10;n++)

{if(n%6==0)break;Printf(“%d”,n);}}

六、程序設計題(1題)82.請編寫一個函數(shù)proc(),它的功能是:求出一個4×N整型二維數(shù)組中最大元素的值,并將此值返回調用函數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:

參考答案

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

2.D解析:sizeof(float)是c語言內部規(guī)定的用于計算單精度型變量(float)在計算機的內存中所占用的字節(jié)數(shù)量的函數(shù),返回一個整數(shù)值。

3.A一家供應商可提供多種零件,一種零件也可被多家供應商提供。所以實體供應商和實體零件之間的聯(lián)系是多對多。本題答案為A選項。

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

5.B

6.D解析:本題考查軟件工程中軟件設計的概念和原理。人們在開發(fā)計算機軟件的長期實踐中積累了豐富的經驗,總結這些經驗得到如下的啟發(fā)式規(guī)則:

(1)改進軟件結構,提高模塊獨立性;通過模塊的分解或合并,力求降低耦合提高內聚。低耦合也就是降低不同模塊間相互依賴的緊密程度,高內聚是提高一個模塊內各元素彼此結合的緊密程度。

(2)模塊的規(guī)模應適中。一個模塊的規(guī)模不應過大,過大的模塊往往是由于分解不夠充分:過小的模塊開銷大于有益操作,而且模塊過多將使系統(tǒng)接口復雜。因此過小的模塊有時不值得單獨存在。

(3)模塊的功能應該可以預測,但也要防止模塊功能過分局限。如果模塊包含的功能太多,則不能體現(xiàn)模塊化設計的特點:如果模塊的功能過分的局限,使用范圍就過分狹窄。

經過上述分析,本題的正確答案是選項D。

7.D解析:本題考查了軟件工程的基本概念。軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術手段;工具支持軟件的開發(fā)、管理和文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制和管理。

8.C對象的封裝性是指從外面看只能看到對象的外部特性,而對象的內部,其處理能力的實行和內部狀態(tài)對外是不可見的,是隱蔽的。

9.D

10.A字符型指針變量可以用選項A)的賦值方法:char*s;s=”O(jiān)lympictt;,選項C)的寫法:char*s,s={1.Olympic”};是錯誤的。字符數(shù)組可以在定義的時候初始化:chars[]_IfIOlympic”l;或者chars[]=”O(jiān)lympic'1.都是正確的,但是不可以在定義字符數(shù)組后,對數(shù)組名賦值(數(shù)組名是常量,代表數(shù)組首地址)。所以選項B)和選項D)都是錯誤的。對于本例,選項B)、D)中字符數(shù)組S的大小至少為8,才能存放下字符串(字符串的末尾都有結束標志“\0”)。

11.B

12.A條件表達式“x=表達式1?表達式2:表達式3”的含義是:先求解表達式1,若其值不為0(真),則求解表達式2,將表達式2的值賦給x;若表達式1的值為0(假),則求解表達式3,將表達式3的值賦給X。本題中與條件表達式“(x-y)”等價的是“(x-y<0||lx-y>0)”。故本題答案為A選項。

13.B解析:當調用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳送的是數(shù)組的首地址,函數(shù)中的形參可定義成以下三種形式:

①形參定義成數(shù)組;

②形參定義成可變長數(shù)組:

③形參定義為指針變量。

14.D

15.A[解析]do{*t++=*s++;}while(*s);不能因為當*s=^0'時,while(*s)跳出循環(huán),這樣字符串結束標志“0沒有復制給*t,造成*t不完整。\u3000\u3000注意,*t++=*s++是先執(zhí)行t=*s,然后才進行t=t+1.s=s+1.B),C),D)三項都能將“0復制過去。

16.A

17.A解析:本題考查靜態(tài)變量的問題。函數(shù)f中c是靜態(tài)變量存放在靜態(tài)存儲區(qū),在程序的整個運行期間都不釋放占據(jù)的存儲單元。函數(shù)f被調用3次,調用過程如下。

第1次調用;a=2、b=0、c=3,執(zhí)行b++和c++后b=1、c=4,f(a)=a+b+c=2+1+4=7

第2次調用:a=2、b=0、c=4.執(zhí)行b++和c++后b=1、c=5,f(a)=a+b+c=2+1+5=8

第3次調用:a=2、b=0、c=5,執(zhí)行b++和c++后b=1、c=6,f(a)=a+b+c=2+1+6=9

所以輸出結果為選項A。

18.B所謂常量,是指在程序運行的過程中,其值不能被改變的量。在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。選項A是字符串,需要使用雙引號;選項C不是合法的常量形式;選項D為實型常量中的指數(shù)形式,但指數(shù)形式e(E)之前必須是數(shù)字,之后必須為整數(shù)。故本題答案為B選項。

19.B解析:C語言規(guī)定,標識符只能由字母、數(shù)字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線。A)中的void與C語言的關鍵字重名,不合法;C)中的case和C語言的關鍵字重名,不合法;D)中的2a是數(shù)字開頭,而且sizeof與C語言的關鍵字重名,不合法。

20.A本題需了解3個知識點:①標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線;②do是C語言的一個關鍵字,不能再用做變量名和函數(shù)名;③c語言規(guī)定指數(shù)形式的實型數(shù)量e或E后面的指數(shù)必須是整數(shù)。

21.k=1234

22.3232解析:二叉樹的一個性質是,在二叉樹的第k層上,最多有2k-1(k≥1)個結點。由此,26-1=32.所以答案為32。

23.structnode*

24.a=5b=8x=1。a=5,b=8,x=1。解析:本題考查形參變量值的改變并不能傳回給實參。因此主函數(shù)中最后輸出的a和b仍為原來的初值5和8。

25.55解析:本題的關鍵在于if(!(i%5))printf('\\n),這句,即如果i可被5整除時,則換行。i值為24,可以被5整除4次,并余4,因此,prnt函數(shù)共輸出5行,最后一行有4個數(shù)。

26.ACBEGFDACBEGFD解析:①確定根節(jié)點。在前序遍歷中,首先防問根結點,因此可以確定前序序列DBACFEG中的第一個結點D為二叉樹的根結點。

②劃分左子樹和右子樹。在中序遍歷中,訪問根結點的次序為居中,首先訪問訪問左子樹上的結點,最后訪問右子樹上的結點,可知,在中序序列ABCDEFG中,以根結點D為分界線,子序列ABC在左子樹中,子序列EFG在右子樹中。如下圖所示。

③確定左子樹的結構。對于左子樹ABC,位于前序序列最前面的一個結點為了樹的根結點,根據(jù)前序遍歷結果,B為該了樹的根結點,中序序列中位于該根結點前面的結點構成左子樹上的結點子序列,位于該根結點后面的結點構成右子樹上的結點子序列,所以A為該左子樹的左結點,C為右結點?,F(xiàn)在可確定左子樹結構如下:

④確定右子樹的結構。同理,可知右子樹的結構。

本二叉樹恢復的結果如圖所示。

根據(jù)后序遍歷的原則,該二叉樹后序遍歷的結果為ACBEGFD。

27.rewind或fseekrewind或fseek

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

29.86518651解析:主程序中,第一次循環(huán)時,i=0,調用sb(s,x)子函數(shù),此時n=3,x=s[n]=s[3]=8,然后將n減1變?yōu)?;第二次循環(huán)時,i=1,調用sb(s,x)子函數(shù),因為將n定義為了靜態(tài)變量,所以此時n=2,返回x=s[n]=s[2]=6;第三次循環(huán)時,i=2,調用sb(s,x)子函數(shù),此時n=1,返回x=s[n]=s[1]=5;第四次循環(huán)時,i=3,調用sb(s,x)子函數(shù),此時n=0,返回x=s[n]=s[0]=1。此程序實際上是將數(shù)組s逆序輸出。

30.考查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。\r\n\r\n

31.*t++或*(t++)*t++或*(t++)解析:主函數(shù)中定義了兩個字符型數(shù)組str1和str2,并且給str2賦初值“abcdefgh”,接著調用函數(shù)strcpy(str1,str2),將字符串str2的值賦給str1。在函數(shù)sstrcpy(*s,*t)中,用了一個while循環(huán),每循環(huán)一次將形參指針t所指的字符賦給形參指針s所指向的存儲空間,然后將指針s和t都移到下一個元素。所以空白處應該填*t++或*(t++)。

32.完整性控制完整性控制

33.5555解析:分析程序執(zhí)行過程,第一次循環(huán)時,i=3,i=5,因為switch(3),所以執(zhí)行case3,調用P(a[--i])=P(a[4])=P(5),輸出5:第二次循環(huán)時,j=2,i=4,因為switch(2),所以執(zhí)行case2,調用P(a[i++]):P(a[4])=P(5),輸出5,之后i自加等于5。

34.白盒白盒解析:按功能劃分測試可分為白盒測試和黑盒測試。白盒測試的原則是保證所測試模塊中每一獨立路徑至少執(zhí)行一次;保證所測試模塊所有判斷的每一分支至少執(zhí)行一次:保證所測試模塊每一循環(huán)都在邊界條件和一般條件下至少各執(zhí)行一次;驗證所有內部數(shù)據(jù)結構的有效性。

35.計劃計劃解析:瀑布模型是B.W.Boehm于1976年提出的。它將軟件生存周期劃分為計劃、開發(fā)、運行3個時期,每個時期又分為若干個階段。

36.(c=getchar())!='\n'(c=getchar())!='\\n'解析:分析題目可知,程序中運用函數(shù)c=getchar()從標準輸入設備讀取下一個字符,而且是一行的字符(即沒有換行),所以條件為(c=getchar())!='\\n'。

37.0/(i*i)或(double)1/(i*i)0/(i*i)或(double)1/(i*i)解析:表達式1+1/(2*2)+1/(3*3)+...+1(n*n)可寫為1/(1*1)+1/(2*2)+1/(3*3)+...+1(n*n)

n

即:∑1÷(i×i)

i=1

對應的C語言的表達式s=s+1.0/(i*i)。注:必須要寫成1.0的形式,否則1/(i,i)返回值為其值截尾取整,即恒為0。

38.!=returnj!=returnj解析:函數(shù)fun中,變量j用于控制刪除后剩下的數(shù)中的下標,i用于搜索原數(shù)組中的元素。j始終是新數(shù)組已有元素中最后一個元素的下一個元素的下標,所以訂語句中的條件是a[j-1]!=a[i],其中a[j-1]就是新數(shù)組中的最后一個元素,若條件成立則表示出現(xiàn)了不同的值,a[i]要添加到新數(shù)組中。該算法只能用于數(shù)組已排序的題目中。

39.246

40.arjteartest

41.D解析:同時說明多個變量為同一類型時,變量之間應用逗號分隔。故D為正確選項。

42.D解析:該程序的執(zhí)行過程是:首先聲明整型指針變量P和整型變量i,字符型指針變量q和字符型變量ch,將i的地址賦給指針變量p,將ch的地址賦給指針變量q,將40賦給*p,此時,q已經指向了一個具體的存儲單元,但ch的值不確定,即*p沒有確定的值,所以不能執(zhí)行*p=*q語句。

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

44.C解析:數(shù)據(jù)庫(Database,簡稱DB)是數(shù)據(jù)的集合,它具有統(tǒng)一的結構形式并存放于統(tǒng)一的存儲介質內,是多種應用數(shù)據(jù)的集成,并可被各個應用程序所共享。數(shù)據(jù)庫中的數(shù)據(jù)具有“集成”、“共事”之特點。

45.A答案A

解析:一個C程序可以有一個或多個程序文件,也可以有一個或多個函數(shù),所以一個C語言程序可以實現(xiàn)多種算法。

46.C解析:選項A使用typedef語句給結構體aa定義了—個新的名稱AA,因此使用AA直接聲明結構體變量td是正確的。選項B中,前面一句是定義結構體同時聲明了結構體變量td,后一句是使用結構體名sa聲明結構體變量td,都是正確的寫法。選項C的第1條語句和選項D使用的是無名結構體直接聲明變量的語法,是正確的,但是選項C的第2條語句使用已經聲明的結構體變量aa來聲明td是錯誤的.故應該選擇C。

47.A解析:條件表達式的形式如下:表達式1?表達式2:表達式3,所以本題條件表達式a<b?a:c<d?c:d應該理解為a<b?a:(c<d?c:d),首先求出條件表達式c<d?c:d的值等于2,再求條件表達式a<b?a:2的值,由于a-1<b-4成立,所以上述條件表達式的值等于1。

48.B解析:模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。耦合性與內聚性是模塊獨立性的兩個定性標準,耦合與內聚是相互關聯(lián)的。在程序結構中,各模塊的內聚性越強,則耦合性越弱。一般較優(yōu)秀的軟件設計,應盡量做到高內聚,低耦合,即減弱模塊之間的耦合性和提高模塊內的內聚性,有利于提高模塊的獨立性。本題答案為B。

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

50.A解析:strcmp(str1,str2)是比較字符串str1和sir2,當兩字符串相等時,返回值為0,不相等時返回值為非0;所以此段程序的功能是在未接收到字符串“theend”時,讀入字符并輸出。

51.C解析:通過scanf()函數(shù)從鍵盤讀入數(shù)據(jù)時,接收參數(shù)的使用變量的地址值,所以選項A和B是錯誤的。選項D要求輸入時以逗號間隔,故按題目要求的輸入方式不能正確讀取到3個數(shù),也是錯誤的。所以正確答案是C。

52.D

53.A解析:標識符是以字母或下劃線開頭,由字母、數(shù)字或下劃線組成的字符序列(例如,-max含非法字符-),并且用戶標識符不能與C語言中的32個關鍵字同名(例如,int是關鍵字,不是合法的用戶標識符)。選項B中-max不是字母、數(shù)字或下劃線組成的字符序列,故選項B不正確;選項C中3COM不是由字母或下劃線開頭,故選項C不正確;選項D中int為C語言中的關鍵字,故選項D不正確;選項A中全部為合法的標識符,所以,4個選項中選項A符合題意。

54.B解析:本題考查函數(shù)調用時的參數(shù)傳遞。在函數(shù)調用時,形參是指向實參的指針變量,則printf的執(zhí)行結果為3+1=4。

55.A解析:軟件的白盒測試方法是把測試對象看做一個打開的盒子,它允許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試。此方法將程序看做是路徑的集合,故選項A正確。

56.B解析:實型常量有兩種書寫形式:①小數(shù)形式,它由符號、整數(shù)部分、小數(shù)點及小數(shù)部分組成;②指數(shù)形式,由十進制小數(shù)形式加上指數(shù)部分組成,其形式為十進制小數(shù)e指數(shù)或十進制小數(shù)E指數(shù)。注:e或E后面的指數(shù)必須是整數(shù),并且在e或E的前面必須有數(shù)字。本題中,選項A)中E的前面沒有數(shù)字,因此錯誤。選項C)中0.8不是整數(shù),因此錯誤。選項D)中4是整型常量而不是實型常量。

57.D

58.B解析:本題考查的是C語言中實型常量的指數(shù)表示法。實型常量的指數(shù)表示法是用字母e(或E)將一個實數(shù)的小數(shù)部分和指數(shù)部分分隔開。字母e(或E)之前是小數(shù)部分,之后是指數(shù)部分,這兩部分都不能省略,且指數(shù)部分必須為整數(shù)。故選項B不正確。所以,4個選項中選項B符合題意。

59.A解析:本題中的while((*p2=*p1)!='\\0')語句首先進行賦值*p2=*p1,即把p1所指存儲單元的字符逐一復制到p2所指存儲單元中,然后判斷p1所指單元內容是否為'\\0',若判斷條件成立,則指針p1和p2依次指向下一個字符,繼續(xù)執(zhí)行循環(huán)體語句,否則循環(huán)終止。

60.C解析:本題考核的知識點是二維數(shù)組的定義,賦值及數(shù)組元素的引用。變量k的初值為2,循環(huán)執(zhí)行了3次,分別輸出m[2][0]、m[2][1]和m[2][2],其值分別為3,6,9。所以,C選項為所選。

61.A

\nC語言規(guī)定,標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線。int就是表達整型變量類型的標識符,它不能用做變量名和函數(shù)名。

\n

62.D結構化程序設計的基本要點:①采用自頂向下、逐步求精的程序設計方法;②任何程序都可由順序、選擇和循環(huán)3種基本控制結構構造。

63.C只有當3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數(shù)只有42,故選擇C選項。

64.A由等式的規(guī)則可知,A選項錯誤。先對括號的b進行等式運算,得出b=4,然后計算得出a=4=3,所以會導致錯誤。答案選擇A。

65.A數(shù)組定

溫馨提示

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

評論

0/150

提交評論