2021年山西省朔州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)知識點(diǎn)匯總卷(含答案)_第1頁
2021年山西省朔州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)知識點(diǎn)匯總卷(含答案)_第2頁
2021年山西省朔州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)知識點(diǎn)匯總卷(含答案)_第3頁
2021年山西省朔州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)知識點(diǎn)匯總卷(含答案)_第4頁
2021年山西省朔州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)知識點(diǎn)匯總卷(含答案)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(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ì)知識點(diǎn)匯總卷(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.設(shè)有100個(gè)元素,用折半查找法進(jìn)行查找時(shí),最大比較次數(shù)是_____。

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

2.下列程序的輸出結(jié)果是()。voidfun(int*X,inty){printf("%d%d",*x,*y);*x=3;*y=1;}main{intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}A.2143B.1212C.1234D.2112

3.在排序方法中,元素比較次數(shù)與元素的初始排列無關(guān)的是()

A.Shell排序B.歸并排序C.直接插入排序D.選擇排序

4.

5.關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)原則和方法的描述錯誤的是()。

A.選用的結(jié)構(gòu)只準(zhǔn)許有一個(gè)入口和一個(gè)出口

B.復(fù)雜結(jié)構(gòu)應(yīng)該用嵌套的基本控制結(jié)構(gòu)進(jìn)行組合嵌套來實(shí)現(xiàn)

C.不允許使用GOTO語句

D.語言中若沒有控制結(jié)構(gòu),應(yīng)該采用前后一致的方法來模擬

6.設(shè)有說明:charw;intx;f1oaty;doublez;則表達(dá)式w*x+z-y值的數(shù)據(jù)類型為()。

A.floatB.charC.intD.double

7.設(shè)以下變量均為int類型,則值不等于7的表達(dá)式是()。

A.(x=y=6,x+y,x+1)

B.(x=y=6,x+y,y+1)

C.(x=6,x+1,y=6,x+y)

D.(y=6,y+l,x=y,x+1)

8.有以下程序:#include<stdio.h>#include<stdio.h>main(){charc[6];inti=0;for(;j<6;c[i]=getchar(),i++);for(i=0;i<6;i++)putchar(c[i]);printf("\n");}如果從鍵盤上輸入:ab<回車>c<回車>def<回車>則輸出結(jié)果為______。

A.abcdefB.abcdC.abcdD.abcdef

9.以下有4組用戶標(biāo)識符,其中合法的一組是()。

A.FOr-subCase

B.4dDOSize

C.f2_G3IFabc

D.WORDvoiddefine

10.有以下程序:#include<stdio.h>voidfun(intn){if(n/2)fun(n/2);printf(“%d”,n%2);}main(){fun(10);printf(“\n”);}程序運(yùn)行后的輸出結(jié)果是()。

A.0101B.1000C.1100D.1010

11.若有定義;intw[3][5];,則以下不能正確表示該數(shù)組元素的表達(dá)式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)

12.有如下程序main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}該程序的輸出結(jié)果是

A.69825B.63825C.6385D.693825

13.下列說法不正確的是()。

A.圖的遍歷是從給定的源點(diǎn)出發(fā)每一個(gè)頂點(diǎn)僅被訪問一次

B.圖的深度遍歷不適用于有向圖

C.遍歷的基本算法有兩種:深度遍歷和廣度遍歷

D.圖的深度遍歷是一個(gè)遞歸過程

14.某線性表中最常用的操作是在最后一個(gè)元素之后插入一個(gè)元素和刪除第一個(gè)元素,則采用()存儲方式最節(jié)省運(yùn)算時(shí)間。

A.單鏈表B.僅有頭指針的單循環(huán)鏈表C.雙鏈表D.僅有尾指針的單循環(huán)鏈表

15.設(shè)有以下語句:charstr1[]="string"mstr2[8],*str3,*str4=="string";則______不是對庫函數(shù)的正確調(diào)用。

A.strcpy(str1,"HELLO1");

B.strcpy(str2,"HELLO2");

C.strcpy(str3,"HELLO3");

D.strcpy(str4,"HELLO4");

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

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

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

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

18.下列程序的執(zhí)行結(jié)果是______。#include<stdio.h>unionun{inti;charc[2};};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}

A.266B.11C.265D.138

19.棧這種數(shù)據(jù)結(jié)構(gòu)一般應(yīng)用在()。

A.遞歸調(diào)用B.子程序調(diào)用C.表達(dá)式求值D.A,B,C

20.設(shè)計(jì)一個(gè)判別表達(dá)式中左、右括號是否配對出現(xiàn)的算法,采用()數(shù)據(jù)結(jié)構(gòu)最佳。A.線性表的順序存儲結(jié)構(gòu)B.隊(duì)列C.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)D.棧

二、2.填空題(20題)21.有以下程序:

intsub(intn){return(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若運(yùn)行時(shí)輸入:1234<回車>,程序的輸出結(jié)果是【】。

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

main()

{intx=0;

sub(&x,8,1);

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

}

sub(int*a,intn,intk)

{if(k<=n)sub(a,n/2,2*k);

*a+=k;

}

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

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

main()

{inti=1;

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

}

24.下列語句的輸出結(jié)果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

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

intword(char*s)

{intnum=0,flag=0;

while(*s)

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

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

}

return【】;}

26.以下程序用于判斷a、b、c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當(dāng)給a、b、c輸入三角形三條邊長時(shí),確定a、b、c能構(gòu)成三角形的條件是需同時(shí)滿足三個(gè)條件:a+b>c,a+c>b,b+c>a。

請?zhí)羁铡?/p>

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&c);

if(【】)printf("YES\n");/*a、b、c能構(gòu)成三角形*/

elseprintf("NO\n");/*a、b、c不能構(gòu)成三角形*/

}

27.樹中度為零的結(jié)點(diǎn)稱為______。

28.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達(dá)【】。

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

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wb");

fwtite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

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

}

30.若輸入字符串:abcde<回車>,則以下while循環(huán)體將執(zhí)行【】次。

while((ch=getchar())=='e')printf("*");

31.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

32.數(shù)據(jù)獨(dú)立性分為邏輯獨(dú)立性與物理獨(dú)立性。當(dāng)數(shù)據(jù)的存儲結(jié)構(gòu)改變時(shí),其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,稱為【】。

33.當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(存儲結(jié)構(gòu))改變時(shí),不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【】。

34.目前實(shí)際存在和使用的廣域網(wǎng)基本上都是采用______拓?fù)浣Y(jié)構(gòu)類型。

有以下程序:

#include<string.h>

structSTU

{intnum;

floatTotalScore;};

voidf(structSTUp)

{structSTUs[2]={{20041,703},{20045,537}};

p.num=s[1].num;p.TotalScore=s[1].TotalScore;

}

main()

{structSTUs[2]={{20041,703},{20042,580}};

f(s[0]);

printf("%d%3.0f\n",s[0].num,s[0],TotalScore);

}

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

35.在軟件生命周期中,【】階段是花費(fèi)最多、持續(xù)時(shí)間最長的階段。

36.在面向?qū)ο蟮姆椒ㄖ?,______描述的是具有相似屬性與操作的一組對象。

37.設(shè)有以下結(jié)構(gòu)類型說明和變量定義,則變量a在內(nèi)存所占字節(jié)數(shù)是【】。

structstud

{charnum[6];

mts[4];

doubleave;

}a,*p;

38.在關(guān)系數(shù)據(jù)庫中把數(shù)據(jù)表示成二維表,每一個(gè)二維表稱為【】。

39.函數(shù)compare的功能是比較兩個(gè)字符串是否相等,若相等則函數(shù)返回值0,否則返回值1,請?zhí)羁铡?/p>

compare(chars[],chart[])

{inti=0;

while(s[i]==t[i]||【】)i++;

return(【】?1:0);

}

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

intn='c';

switch(n++)

{default:printf("error");break;

case'a':

case'A':

case'b':

case'B':printf("good");break;

case'c':case'C':printf("pass");

case'd':case'D':printf("warn");

}

三、1.選擇題(20題)41.有以下程序main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*(x=6.5);printf("%d%d%3.1f%3.1f\n",a,c,f,x);}程序運(yùn)行后的輸出結(jié)果是

A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5

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

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

43.若變量已正確定義并賦值,下面符合C語言語法的表達(dá)式是______。

A.a:=b+1;B.a=b=C+2;C.int18.5%3;D.a=a+7=c+b;

44.下面程序main(){intx=32;print("%d\n",x=x<<1);}的輸出是______。

A.100B.160C.120D.64

45.有以下程序:#include<stdio.h>voidfunl(char*p){char*q;q=p;while(*q!='\0')}(*q)++;q++;}mains(){chara[]={"Program"},*p;p=&a[3];fun1(p);printf("%s\n",a);}程序執(zhí)行后的輸出結(jié)果是()。

A.ProhsbnB.PrphsbnC.ProgsbnD.Program

46.設(shè)有以下程序段;inta[5]={0},*p,*q;p=a;q=a;則合法的運(yùn)算是______。

A.p+qB.p-qC.p*qD.p%q

47.下面不屬于軟件設(shè)計(jì)原則的是()。

A.抽象B.模塊化C.自底向上D.信息隱蔽

48.已知字符0的ASCⅡ碼為十六進(jìn)制數(shù)30,下面程序的輸出是______。main(){inti;union{unsignedcharc;unsignedinti[4];}z;z.i[0]=0x39;z.i[1]=0x36;printf("%d\n",z.c);}

A.56B.57C.58D.59

49.若有說明語句:inta,b,c,*d=&c;,則能正確從鍵盤讀入3個(gè)整數(shù)分別賦給變量a、b、c的語句是()。

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

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

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

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

50.有以下程序:#include<stdio.h>main(){ints=0,a=1,n;scanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%d\n",s);}若要使程序的輸出值為2,則應(yīng)該從鍵盤給n輸入的值是()。

A.-1B.-3C.-5D.0

51.下列數(shù)據(jù)中,不合法的C語言實(shí)型數(shù)據(jù)的是()。

A.0.123B.123e3C.2.1e3.5D.789.0

52.對建立良好的程序設(shè)計(jì)風(fēng)格,下列描述中正確的是()。

A.程序應(yīng)該簡單、清晰、可讀性好B.符號名的命名只需要符合語法C.充分考慮程序的執(zhí)行效率D.程序的注釋可有可無

53.以下敘述中正確的是

A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作

B.用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要有輸入

C.用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出

D.用C程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出

54.在軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是()。A.概要設(shè)計(jì)B.詳細(xì)設(shè)計(jì)C.可行性分析D.需求分析

55.算法一般都可以用______控制結(jié)構(gòu)組合而成。

A.循環(huán)、分支、遞歸B.順序、循環(huán)、嵌套C.循環(huán)、遞歸、選擇D.順序、選擇、循環(huán)

56.下列敘述中正確的是A.break語句只能用于switch語句

B.在switch語句中必須使用default

C.break語句必須與switch語句中的case配對使用

D.在switch語句中,不一定使用break語句

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

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

58.以下程序的輸出結(jié)果是()#include<stdio.h>main(){inta,b;for(a=1,b=1,a<=50;a++){if(b>=10)break;if(b%2==1){b+=2;continue}b+=2;}printf("%d\n",a);}

A.4B.5C.6D.7

59.計(jì)算機(jī)軟件一般包括應(yīng)用軟件和____。

A.字處理軟件B.系統(tǒng)軟件C.服務(wù)性軟件D.操作系統(tǒng)

60.若有以下程序段:intm=0xabc,n=0xabc;m-=n;printf("%X\n",m);執(zhí)行后的輸出結(jié)果是______。

A.0X0B.0x0C.0D.0XABC

四、選擇題(20題)61.下面各選項(xiàng)中,均是C語言合法標(biāo)識符的選項(xiàng)組是()。

A.

B.

C.

D.

62.以下程序的輸出結(jié)果是()。

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

63.

64.

65.下列程序的輸出結(jié)果是()。#includeintfun(inta){intb=0;staticintc=4;a=c++;b++;return(a);}main{inta=2,i,c;for(i=0:i<2;i++)c=f(a+1);printf("%d\n",c);}A.4B.7C.6D.5

66.

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

#include<stdio.h>

main

{structst

{inty,x,z;

};

union

{longi;

intj;

chark;

}un;

printf("%d,%d\n",sizeof(structst),sizeof(un))

}

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

67.

有以下程序段:

intx=3;

do

{printf("%d",x-=2);)

while(!(--x));

其輸出結(jié)果是()。

A.1B.30C.1-2D.死循環(huán)

68.閱讀以下程序:

#include<stdio.h>

main()

{intcase;floatprintF;

printf("請輸人2個(gè)數(shù):");

scanf("%d%fl"&case,&printF);

printf("%dofof\n",case,printF);

}

該程序在編譯時(shí)產(chǎn)生錯誤,其出錯原因是()。

A.定義語句出錯,case是關(guān)鍵字,不能用做用戶自定義標(biāo)識符

B.定義語句出錯,printF不能用做用戶自定義標(biāo)識符

C.定義語句無錯,scanf不能作為輸入函數(shù)使用

D.定義語句無錯,printf不能輸出case的值

69.關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實(shí)現(xiàn)的專門關(guān)系運(yùn)算包括()。

A.排序、索引、統(tǒng)計(jì)B.選擇、投影、連接C.關(guān)聯(lián)、更新、排序D.顯示、打印、制表

70.

71.

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

A.break語句只能用于switch語句體中

B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

C.break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)

D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同

73.若有定義語句:A.1B.1.9C.2D.2.4

74.

75.有如下程序

#include"stdio.h"

fun(inta,intb)

{ints;

s=a*(b/4);

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

main()

{inta=16,b=10;

fun(a,b);

}

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

A.16B.32

C.40D.80

76.

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

#include<stdio.h>

main

{staticchara[]="Languagef",b[]="programe":

char*p1,*p2;intk;

p1=a;p2=b;

for(k=0;k<=8;k++)

if(*(p1+k)==*(p2+k))

printf("%c",*(p1+k)):

}

A.gaeB.angC.programD.有語法錯

77.

78.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.沒有任何關(guān)系

79.執(zhí)行語句printf(“%u\n”,+12345)的輸出結(jié)果是()。

A.12345B.0C.-1D.非定值

80.

五、程序改錯題(1題)81.已知一個(gè)數(shù)列,從0項(xiàng)開始的前3項(xiàng)為0、0、1,以后的各項(xiàng)都是其相鄰的前3項(xiàng)之和。下列給定的程序中,函數(shù)proc()的功能是:計(jì)算并輸出該數(shù)列前n項(xiàng)的平方根之和sum。n的值通過形參傳入。例如,當(dāng)n=11時(shí),程序的輸出結(jié)果應(yīng)為32.197745。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計(jì)題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun(),其功能是刪除字符串中所有的*號。編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為“****A*BC*DEF*G*******”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(char*a){}voidmain(){ chars[81]; printf(“Enterastring:\n”); gets(s); fun(s); printf(“Thestringafterdeleted:\n”); puts(s);}

參考答案

1.D

2.C當(dāng)執(zhí)行fun函數(shù)時(shí),因?yàn)閰?shù)傳遞時(shí)是地址傳遞,因此形參值的改變會影響實(shí)參中的數(shù),在執(zhí)行fun函數(shù)時(shí)先輸出12,接著把*X賦3,*y賦4,此時(shí)帶回主函數(shù)中,輸出的值為34。

3.D

4.C

5.C結(jié)構(gòu)化程序設(shè)計(jì)的原則和方法之一是限制使用GOT0語句,但不是絕對不允許使用GOT0語句。其他三項(xiàng)為結(jié)構(gòu)化程序設(shè)計(jì)的原則。

6.D

7.C

8.C解析:1.getchar():此函數(shù)的作用是從終端(或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個(gè)字符。

2.putchar():此函數(shù)的作用是向終端輸出一個(gè)字符,也可以輸出控制字符。本題在輸入字符時(shí),ab和c后面的回車符分別賦給了c[2]和c[4],所以,正確答案為C。

9.C解析:選項(xiàng)A中for和case為C語言中的保留字,不能作為用戶標(biāo)志符,故A錯誤。選項(xiàng)B中的4d其開頭的第一個(gè)為數(shù)字,而在C語言中規(guī)定,第一個(gè)字符必須為字母或者下劃線,故B錯誤;選項(xiàng)D中void為C語言中的保留字,不能作為用戶標(biāo)志符,故D錯誤。所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。

10.D函數(shù)fun的作用是求一個(gè)十進(jìn)制數(shù)的二進(jìn)制數(shù)。通過輾轉(zhuǎn)相除法獲取這個(gè)整數(shù)的二進(jìn)制數(shù)。因此(10)10=(1010)2。故本題答案為D選項(xiàng)。

11.B通過—維數(shù)組名或指向維數(shù)組元素的指針來引用數(shù)組元素有兩種寫法:a[i]和*(a+i),它們是等價(jià)的。這是一種運(yùn)算符之間的等價(jià)轉(zhuǎn)換,就好像a-(b-C)等價(jià)于a-b+c一樣。知道了這種轉(zhuǎn)換,我們可以將之?dāng)U展到二維數(shù)組甚至任意維數(shù)組上來。因?yàn)閇]運(yùn)算符的結(jié)合性是從左至右的,所以w[i][j]等價(jià)于(w[i][j],此時(shí)可以先將任意一個(gè)[]運(yùn)算符轉(zhuǎn)換為指針形式為:(*(w+i)[j]或*(w[i]+j),或者同時(shí)轉(zhuǎn)換:*(*(w+i)+j)。上述幾種形式都完全等價(jià)于w[i][j]。選項(xiàng)A中,*(*w+3)可以看成*(*(w+0)+3),即w[0][3],是正確的。選項(xiàng)B小,因?yàn)閇]運(yùn)算符的優(yōu)先級高于*運(yùn)算符,所以*(w+1)[4]等價(jià)于*((w+1)[4]等價(jià)于*(*((w+1)+4)),即*(*(w+5)+0),它等價(jià)于w[5][0],很明顯它超過數(shù)組的范圍了,故不正確。選項(xiàng)C等價(jià)于w[1][0],是下確的。選項(xiàng)D中,&w[0][0]是數(shù)組w第1個(gè)元素的地址,它等價(jià)于&*(*(w+0)+0),外面的&和*可以抵消,就好像先乘以個(gè)數(shù),然后再除以這個(gè)數(shù)一樣。所以,&w[0][0]等價(jià)于*(w+0)+0。即*w。所以原式就變?yōu)?(*w+1)等價(jià)于w[0][1],這個(gè)也是合法的。綜上所述,本題應(yīng)該選擇B。

12.C解析:該題稍微難一點(diǎn)。主要要搞清楚以下幾點(diǎn):①定義了一個(gè)指針數(shù)組char*p[2]后,程序中第一個(gè)循環(huán)for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指針數(shù)組的p[0]元素(它本身是一個(gè)指針)指向了二維數(shù)組ch的第一行字符串,并使指針數(shù)組的p[1]元素指向二維數(shù)組ch的第二行字符串,這樣,就使指針數(shù)組p和二維數(shù)組ch建立起了一種對應(yīng)關(guān)系,以后對二維數(shù)組ch的某個(gè)元素的引用就有兩種等價(jià)的形式:ch[i][j]或p[i][j]。②對二維數(shù)組ch的初始化,使其第一行ch[0]中存入了字符串“693

13.C

14.D

15.C解析:C語言中:strcpy(st1,st2);,其兩個(gè)參數(shù)均為字符指針或字符數(shù)組,選項(xiàng)C中的目的串指針str3沒有指向具體有效的存儲單元,故是錯誤的調(diào)用。

16.B題中,首先定義了double型的數(shù)組a,并將數(shù)組首地址賦給指針s。“(*s)”表示“a[1]”,“s[3]”不是指針變量,不能使用間址運(yùn)算符“*”,故選項(xiàng)A、C不能表示“a[3]”;選項(xiàng)D的“*s+3”等于“a[0]+3”。故本題答案為B選項(xiàng)。

17.C

18.A解析:由于本題定義的是共用體,所以成員表列中的整型變量x與字符數(shù)組c共占用同一個(gè)存儲單元,且此存儲單元為2個(gè)字節(jié),通常c[0]位于低字節(jié),c[1]位于高字節(jié),所以x.i的值為266。

19.D

20.D

21.1010解析:y=sub(sub(sub(x)))=sub(sub(127))=sub(19)=10。

22.77解析:在主函數(shù)中定義了一個(gè)變量x并賦初值0,然后執(zhí)行函數(shù)調(diào)用語句,該語句的執(zhí)行過程為sub(&x,8,1)調(diào)用sub(&a,4,2),sub(&a,4,2)調(diào)用sub(&a,2,4),sub(&a,2,4)中由于2<4,所以if后面括號里的判斷為假,遞歸結(jié)束,執(zhí)行其后的*a+=k;語句此時(shí)x=x+k=0+4=4,回推到上一層調(diào)用函數(shù)sub(&x,4,2)中,執(zhí)行后面的語句,x=x+k=4+2=6,在回推到最上一層調(diào)用函數(shù)sub(&x,8,1)執(zhí)行后面的語句,x=x+k=6+1=7,所以最后輸出7。

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

24.aaaaAAAAAaaaaAAAAA解析:函數(shù)strcat(sp,'AAAAA')的作用是將字符中“AAAAA”連接到字符串sp的末尾,并自動覆蓋字符數(shù)組sp末尾的\'\\0\'。

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

26.a+b>c&&a+c>b&&b+c>aa+b>c&&a+c>b&&b+c>a解析:在邏輯表達(dá)式中,如果要同時(shí)滿足幾個(gè)條件可以使用邏輯與運(yùn)算符“&&”,故本題的答案應(yīng)該為:a+b>c&&a+c>b&&b+c>a或其他等價(jià)形式。

27.葉子結(jié)點(diǎn)葉子結(jié)點(diǎn)解析:樹中度為零的結(jié)點(diǎn),也就是沒有后件的結(jié)點(diǎn),稱為葉子結(jié)點(diǎn)。

28.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數(shù)可以用變量與2取模,判斷結(jié)果是為1或不為0。本題具體做法如下:Y%2=1或Y%2!=0。

29.12300123001,2,3,0,0,1,2,3,0,0,解析:本題考查文件讀寫函數(shù)fread和fwrite的用法。fwrite函數(shù)將數(shù)組a的前5個(gè)元素輸出到文件fp中兩次,共10個(gè)字節(jié),再調(diào)用fread函數(shù)從文件fp中讀取這10個(gè)字節(jié)的數(shù)據(jù)到數(shù)組a中,此時(shí)數(shù)組a的內(nèi)容就變?yōu)閧1,2,3,0,0,1,2,3,0,0},最后的輸出結(jié)果為'1,2,3,0,0,1,2,3,0,0,'。

30.0

31.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。

32.物理獨(dú)立性物理獨(dú)立性解析:數(shù)據(jù)獨(dú)立性分為邏輯獨(dú)立性與物理獨(dú)立性。當(dāng)數(shù)據(jù)的存儲結(jié)構(gòu)改變時(shí),其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,稱為物理獨(dú)立性。

33.物理獨(dú)立性數(shù)據(jù)獨(dú)立性是數(shù)據(jù)與程序間的互不依賴性,即數(shù)據(jù)庫中數(shù)據(jù)獨(dú)立于應(yīng)用程序而不依賴于應(yīng)用程序。也就是說,數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)與存取方式的改變不會影響應(yīng)用程序。數(shù)據(jù)獨(dú)立性一般分為物理獨(dú)立性與邏輯獨(dú)立性兩級。

34.2004170320041703解析:由于參數(shù)傳遞只是將實(shí)參的值復(fù)制到形參中,形參與實(shí)參擁有各自的存儲空間,因此形參的改變并不影響實(shí)參,所以并不改變s的情況。

35.維護(hù)維護(hù)

36.類類解析:在面向?qū)ο蟮姆椒ㄖ?,把具有相同屬性和方法的對象稱為類,類是對象的抽象,對象是類的實(shí)例。

37.2222解析:C語言里char類型占1個(gè)字節(jié),int類型占2個(gè)字節(jié),float類型占4個(gè)字節(jié),double類型占8個(gè)字節(jié),因此變量a在內(nèi)存中所占字節(jié)數(shù)=1*6+4*2+1*8=6+8+8=22。

38.關(guān)系或一個(gè)關(guān)系關(guān)系或一個(gè)關(guān)系解析:在關(guān)系數(shù)據(jù)庫中,把數(shù)據(jù)表示成二維表,而一個(gè)二維表就是一個(gè)關(guān)系。

39.s[i]!='\0'||t[i]!='\0's[i]=='\0'&&t[i]=='\0's[i]!='\\0'||t[i]!='\\0'\r\ns[i]=='\\0'&&t[i]=='\\0'

40.passwarnpasswarn解析:n++是在執(zhí)行完其所在的語句后再加1,因此,在執(zhí)行case的時(shí)候,n的值依然為'c',執(zhí)行case'c'后面的語句,先打印出“pass”;在執(zhí)行完case'c'后,未遇到break跳出switch,便接著執(zhí)行下面的語句,又打印出warn。所以此題輸出結(jié)果是passwarn。

41.B解析:主函數(shù)中先定義了一個(gè)整型變量a,一個(gè)字符變量c并賦初值10,一個(gè)浮點(diǎn)型變量f并賦初值100.00和一個(gè)double型x,接著執(zhí)行“a=f/=c*=(x=6.5)”,該語句從右向左計(jì)算,先把6.5賦值給x(該括號表達(dá)式的值也為6.5),此時(shí)x的值的變?yōu)?.5,然后執(zhí)行“c*=(x=6.5)”相當(dāng)于執(zhí)行“c=c*(x=6.5)”,此時(shí)c的值為65,接著向左執(zhí)行“f/=c*=(x=6.5)”,語句相當(dāng)于執(zhí)行“f=f/c”接著向最右邊執(zhí)行“a=f,由于a是整型變量,所以a最后取f的整數(shù)部分為1。程序最后輸出的a、c、f和x的值分別為1、65、1.5、6.5。

42.C解析:typedef關(guān)鍵字用于聲明一個(gè)新的類型名代替已有的類型名。本題中如果沒有用typedef進(jìn)行定義的話,則structNODE為結(jié)構(gòu)體類型,而用typedef定義后,相當(dāng)于用OLD代表了struetNODE這一結(jié)構(gòu)體類型,故OLD為結(jié)構(gòu)體類型。

43.B

44.D解析:<<是C語言中規(guī)定的左移運(yùn)算符,例如,a=a<<2,這個(gè)語句即是將a的二進(jìn)制數(shù)左移兩位,左移—位相當(dāng)于該數(shù)乘于2,左移兩位相當(dāng)于該數(shù)乘以2的2次方。所以,x<<1=32*2=64。

45.A解析:在main函數(shù)中,p=&a[3]說明指針p指向a數(shù)組的第4個(gè)字符(即字符\'g\');fun1中的q=p意味著指針q也指向了a數(shù)組的第4個(gè)字符。執(zhí)行while語句,表達(dá)式(*q)++使\'g\'+1,使\'g\'變成了\'h\';表達(dá)式q++使q指向a[4]的起始地址。繼續(xù)執(zhí)行while語句,直到遇到\'\\0\'結(jié)束循環(huán),返回形參。最終得到的結(jié)果是從字符串'Program\'的第4個(gè)字符開始,每個(gè)字符加1。

46.B解析:指向同一字符串的指針可以、也只能進(jìn)行減運(yùn)算,返回一個(gè)整型數(shù)。

47.C解析:軟件設(shè)計(jì)遵循軟件工程的基本目標(biāo)和原則,建立了適用于在軟件設(shè)計(jì)中應(yīng)該遵循的基本原理和與軟件設(shè)計(jì)有關(guān)的概念。①抽象是一種思維工具,就是把事物本質(zhì)的共同特性抽出來而不考慮其他細(xì)節(jié)。②模塊是指可以單獨(dú)命名且可編址的元素。如高級語言中的過程、函數(shù)、子程序等。③信息隱蔽是指在一個(gè)模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。④模塊獨(dú)立性是指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。因此,本題的正確答案是C。

48.B解析:共用體變量中的所有成員共享存儲空間,因此變量中的所有成員的首地址相同,且變量的地址也就是該變量成員的地址。

49.A解析:選項(xiàng)B中d已經(jīng)為地址,不應(yīng)在加上求地址符號“&”,故選項(xiàng)B不正確;選項(xiàng)C中,a和b都為變量不是地址,應(yīng)該在a和b之前加上求地址符號“&”,故選項(xiàng)C不正確:選項(xiàng)D中指針d所指向的存儲空間的位置為變量c的值,不為地址,故選項(xiàng)D不正確,所以,4個(gè)選項(xiàng)中A為所選。

50.B解析:本題考查do-while語句。當(dāng)n=-1時(shí),s+=1,s=1;a=a-2=-1;a!=n不成立,結(jié)束循環(huán),此時(shí)s值為1,不符合題意;當(dāng)n=-3時(shí),s+=1,s=1;a=a-2=-1;a!=n成立,繼續(xù)循環(huán),s=s+1=2,a=a-2=-3;a!=n不成立,此時(shí)s值為2,符合題意。

51.C解析:在C語言中,實(shí)數(shù)有兩種表示形式。即十進(jìn)制數(shù)形式和指數(shù)形式,在指數(shù)形式中,字母e的前面必須有數(shù)字,且e的后面必須是整數(shù)。e3,2.1e3.5,e3,e等都是不合法的指數(shù)形式,而123e3或123E3都代表123乘以10的3次方。

52.AA?!窘馕觥俊鼻逦谝?,效率第二”,在考慮到程序的執(zhí)行效率的同時(shí),一定要保證程序清晰、可讀;對符號名的命名,除了要符合語法要求外,還要具有一定的含義;程序的注釋可以幫助程序員理解程序,不是可有可無的。

53.C算法具有的5個(gè)特性是:有窮性、確定性、可行性、有0個(gè)或多個(gè)輸入、有一個(gè)或多個(gè)輸出。所以說,用C程序?qū)崿F(xiàn)的算法可以沒有輸入,但必須要有輸出。因此本題答案選C。

54.D通常,將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程稱為軟件生命周期。也就是說:軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個(gè)時(shí)期都屬于軟件生命周期。

軟件生命周期的主要活動階段為:

①可行性研究和計(jì)劃制定。確定待開發(fā)軟件系統(tǒng)的開發(fā)目標(biāo)和總的要求,給出它的功能、性能、可靠性以及接口等方面的可行方案,制定完成開發(fā)任務(wù)的實(shí)施計(jì)劃。

②需求分析。對待開發(fā)軟件提出的需求進(jìn)行分析并給出詳細(xì)定義,即準(zhǔn)確地確定軟件系統(tǒng)的功能。編寫軟件,規(guī)格說明書及初步的用戶手冊,提交評審。

③軟件設(shè)計(jì)。系統(tǒng)設(shè)計(jì)人員和程序設(shè)計(jì)人員應(yīng)該在反復(fù)理解軟件需求的基礎(chǔ)上,給出軟件的結(jié)構(gòu)、模塊的劃分、功能的分配以及處理流程。

④軟件實(shí)現(xiàn)。把軟件設(shè)計(jì)轉(zhuǎn)換成計(jì)算機(jī)可以接受的程序代碼。即完成源程序的編碼,編寫用戶手冊、操作手冊等面向用戶的文檔,編寫單元測試計(jì)劃。

⑤軟件測試。在設(shè)計(jì)測試用例的基礎(chǔ)上,檢驗(yàn)軟件的各個(gè)組成部分。編寫測試分析報(bào)告。

⑥運(yùn)行和維護(hù)。將已交付的軟件投入運(yùn)行,并在運(yùn)行使用中不斷地維護(hù),根據(jù)新提出的需求進(jìn)行必要而且可能的擴(kuò)充和刪改。

55.D解析:算法的控制結(jié)構(gòu)給出了算法的基本框架,不僅決定了算法中各操作的執(zhí)行順序,也直接反映了算法的設(shè)計(jì)是否符合結(jié)構(gòu)化原則。一個(gè)算法一般都可以用順序、選擇、循環(huán)三種基本控制結(jié)構(gòu)組合而成。

56.D解析:break語句除了能用于switch語句外,還可以用于循環(huán)語句中,因此選項(xiàng)A不正確。在switch語句中,可以使用default來執(zhí)行所有case均失配時(shí)的分支,也可以不使用default,此時(shí)若所有case均失配則跳出switch,因此選項(xiàng)B不正確。在switch語句中,每個(gè)case的作用就是標(biāo)出一個(gè)執(zhí)行的起點(diǎn),當(dāng)符合某個(gè)case時(shí),程序就從該case所標(biāo)出的起點(diǎn)處開始執(zhí)行,若沒有break語句中斷執(zhí)行的話,程序會一直執(zhí)行到switch的最后一條語句,而不是碰到下一個(gè)case就跳出switch。雖然break與case的配對使用會讓所有case分支互不重疊條理明確,但不配對使用在C語言中也是允許的。因此選項(xiàng)C不正確,應(yīng)該選擇D。

57.C解析:在位運(yùn)算中,操作數(shù)每右移兩位,相當(dāng)于在操作數(shù)的左側(cè)添0,最右面的兩位被移出,即操作數(shù)除以4。

58.C

59.B

60.C解析:“%X”以十六進(jìn)制無符號形式輸出整數(shù),變量m和n的初始值都是十六進(jìn)制數(shù),m=m-n=0xabc-oxabc=0x0,所以輸出結(jié)果為0。

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

62.B此程序是統(tǒng)計(jì)一周七天中英文名稱首字母為”T”的個(gè)數(shù),P[i][0]是字符串的首字符,一共有兩個(gè)”T.因此n=2.

63.B

64.B

65.Dstatic變量是局部度量,函數(shù)無法修改,所以當(dāng)i=1時(shí),第2次進(jìn)入f函數(shù)時(shí)c=5,所以最終main函數(shù)中C的值為5。

66.B

\n本題主要考查結(jié)構(gòu)和聯(lián)合內(nèi)存使用的一些區(qū)別:結(jié)構(gòu)中

溫馨提示

  • 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

提交評論