2021-2022年貴州省畢節(jié)地區(qū)全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第1頁
2021-2022年貴州省畢節(jié)地區(qū)全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第2頁
2021-2022年貴州省畢節(jié)地區(qū)全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第3頁
2021-2022年貴州省畢節(jié)地區(qū)全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第4頁
2021-2022年貴州省畢節(jié)地區(qū)全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年貴州省畢節(jié)地區(qū)全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.給定數(shù)列(541,132,984,746,518,181,946,314,205,827)按照從小到大的順序排列,采用快速排序(以中間元素518為基準(zhǔn))的第一趟掃描結(jié)果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

3.

4.對于int*pa[5];的描述,()是正確的。

A.pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素

B.pa是一個指向某數(shù)組中第5個元素的指針,該元素是int型變量

C.pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針

D.pa[5]表示某數(shù)組的第5個元素的值

5.以下程序段中,與語句“k=a>b?(b>c?1:0):0;”功能相同的是()。

A.if((a>b)||(b>c))k=1;elsek=0;

B.if((a>b)&&(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b<=c)k=1;

D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;

6.一個算法的語句執(zhí)行次數(shù)為(2n2+2nlog2n+4n-7),則其時間復(fù)雜度為()。

A.O(n2)B.O(nlog2n)C.O(n)D.O(2n2)

7.程序運行后的輸出結(jié)果是()。A.3B.4C.5D.6

8.有以下程序:#include<stdio,h>main(){intk=5,n=0;while(k>0){switch(k){default:break;case1:n+=k;case2:case3:n+=k;}k--;printf("%d\n",n);}程序運行后的輸出結(jié)果是()。

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

9.有以下程序#include<stdio.h>voidfun(intx){if(x/2>1)fun(x/2);printf("%d",x);}main{fun(7);printf("\n");}程序運行后的輸出結(jié)果是()。A.137B.731C.73D.37

10.十進(jìn)制數(shù)124轉(zhuǎn)換成二進(jìn)制數(shù)是()

A.111l010B.1111100C.1011111D.1111011

11.以下涉及字符串?dāng)?shù)組、字符指針的程序段中,沒有編譯錯誤的是()。A.char*str,name[1];str=“Hello”;

B.char*str,name[1];name=“Hello”;

C.charstrl[10]=“ex1.c”,str2[6];str2=str1;

D.charhead_line[];head_line=“\\0”;

12.若有定義語句:doublea,*p=&a;,以下敘述中錯誤的是()。

A.定義語句中的*號是一個間址運算符

B.定義語句中的*號只是一個說明符

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

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

13.字符串”a+b=12\n”的長度為()。

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

14.當(dāng)輸入為"hello?"時,下面程序的執(zhí)行結(jié)果是()。#include<stdio.h>main{charc;c=getchar;while(c!=?){putehar(e);break;}}A.RvfsuB.hC.?D.hello

15.由兩個棧共享一個向量空間的好處是______。

A.減少存取時間,降低下溢發(fā)生的機(jī)率

B.節(jié)省存儲空間,降低上溢發(fā)生的機(jī)率

C.減少存取時間,降低上溢發(fā)生的機(jī)率

D.節(jié)省存儲空間,降低下溢發(fā)生的機(jī)率

16.在堆棧中存取數(shù)據(jù)的原則是。A.先進(jìn)先出B.后進(jìn)先出C.先進(jìn)后出D.隨意進(jìn)出

17.以下程序的輸出結(jié)果是()。main{inta=1,b;for(b=1,b<=10;b++){if(a>=8)break;if(a%2==1){a+=5;continue;}a=3;}printf("%d\n",b);}A.A.3B.4C.5D.6

18.

19.有以下程序:Voidf(inta[],ihti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,i-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d",aa[i]);printf("\n");}執(zhí)行后輸出結(jié)果是

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

20.在C語言中,退格符是

A.\nB.\tC.\fD.\b

二、2.填空題(20題)21.下面的程序可對指定字符串中的字符串進(jìn)行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

22.函數(shù)sub的功能是根據(jù)下面近似分式求π的值。

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

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

#include"math.h"

doublesub(longm)

{doublesum=0.0,t;longn;

for(n=1;n<=m;n++)sum+=【】;

t=sqrt(6*sum);

return(t);

}

23.若x為int類型,請寫出與!x等價的C語言表達(dá)式______。

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

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

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

}

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

#include<atdio.h>

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

{charsub[3];

structnode*next;

}Node

Node~un(chars)/*建立鏈表*/

{......}

voiddisp(Node*h)

{Node*Ps

p=h->next;

while(【】)

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

}

main()

{Node*hd;

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

26.以下程序運行后的輸出結(jié)果是______。

structNODE

{inthum;structNODE*next;

};

main()

{structNODEs[3]={{1,'\0'},{2,'\0'},{3,'\0'}},*p,*q,*r;

intsum=0;

s[0].next=s+1;s[1].next=s+2;s[2].next=s;

p=S;q=p->next;r=q->next;

sum+=q=>next->num;sum+=r->next->next->num;

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

structnode

{intinfo;

【】link;

};

28.設(shè)a、b、c為int型變量,且a=10、b=5、c=1,則執(zhí)行完以下語句,a的值變?yōu)椤尽俊?/p>

a/=10-(++b)-(c--);

29.數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和______兩大類。

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

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

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

for(i=1;i<5.i++)

PRINT(a+i);

printf("\n");

}

31.若有下列定義和語句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結(jié)果為______。

32.以下程序中給指針p分配三個double型動態(tài)內(nèi)存單元,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{dOuble*p;

p=(double*)malloc();

p[0]=1.5;p[1]=2.5;p[2]=3.5

printf("%f%f%f\n",p[0],p[1],p[2]);

}

33.下列程序的運行結(jié)果是______。

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

main()

{inti=1;

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

}

34.閱讀程序:

#include<string.h>

#include<strdio.h>

strle(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!='0')num++;

while(b[n])

{*(a+num)=b[n];num++;n++;}

return(num);

}

main()

{charstrl[81],str2[81],*p1=strl,*p2=str2;

gets(p1);gets(p2);

prinf("%d\n",strle(p1,p2));

}

運行上面的程序,如果從鍵盤上輸入字符串qwerty和字符串a(chǎn)bcd,則程序的輸出結(jié)果是【】。

35.有以下程序:

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;

*q=*(p+5);

printf("%d%d\n",*p,*q);

}

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

36.以下程序運行后輸入:3,abcde<回車>,則輸出結(jié)果是【】。

#include<string.h>

move(char*str,intn)

{chartempinti;

temp=str[n-1);

for(i=n-1;i>0;i--)str[i]=str[i-1];

str[0]=temp

}

main()

{chars[50];ihtn,i,z;

scanf("%d,%s",&n,s);

z=strlen(s);

for(i=1;i<=n;i++)move(s,z);

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

}

37.下面程序有兩個printf語句,如果第一個printf語句輸出的是194,則第二個printf語句的輸出結(jié)果是【】。

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

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

printf("%x\n,p+9);

}

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

39.下列程序的運行結(jié)果是______。

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

40.以下程序的功能是將字符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串:abcl23edf456gh,執(zhí)行程序后輸出:123456。請?zhí)羁铡?/p>

#include<stdioo.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);

三、1.選擇題(20題)41.執(zhí)行下列程序時輸入456<空格>789<空格>123<回車>,輸出結(jié)果是()。#include<stdio.h>main(){charm[80];intc,i;scanf("%c",&C);scanf("%d",&i);scanf("%s",&m);printf("%c,%d,%s\n",c,i,m);}

A.4.56789e+008B.4.78912e+006C.4,56,789,123D.4,56.789

42.若有語句:char*line[5];,以下敘述中正確的是

A.定義line是一個數(shù)組,每個數(shù)組元素是一個基類型為char為指針變量

B.定義line是一個指針變量,該變量可以指向一個長度為5的字符型數(shù)組

C.定義line是一個指針數(shù)組,語句中的*號稱為間址運算符

D.定義line是一個指向字符型函數(shù)的指針

43.下列關(guān)于棧的描述中錯誤的是()。A.棧是先進(jìn)后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

44.下面函數(shù)的功能是將指針t2所指向的線性鏈表,鏈接到t1所指向的鏈表的末端。假定t1所指向的鏈表非空structnode{floatx;structnode*next;};connect(structnode*t1,structnode*t2){if(t1->next==NULL)t1->next=t2;elseconnect(______,t2);}要實現(xiàn)此功能則應(yīng)該填入的選項是

A.t1.nextB.++t1.nextC.t1->nextD.++t1->next

45.下面程序輸出的結(jié)果是______。main(){inti=5,j=9,z;x=(i==j?i:(j=7));printf(:\n%d,%d",i,j);}

A.5,7B.5,5C.語法錯誤D.7,5

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

由關(guān)系R和s通過運算得到關(guān)系T,則所使用的運算為()。

A.并B.自然連接C.笛卡爾積D.交

47.數(shù)據(jù)的存儲結(jié)構(gòu)是指()。

A.數(shù)據(jù)所占的存儲空間

B.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的存放形式

C.數(shù)據(jù)在計算機(jī)中的順序存儲方式

D.存儲在計算機(jī)外存中的數(shù)據(jù)

48.在設(shè)計程序時,應(yīng)采納的原則之一是()。

A.不限制goto語句的使用B.減少或取消注解行C.程序越短越好D.程序結(jié)構(gòu)應(yīng)有助于讀者理解

49.下列敘述中,不屬于測試的特征的是

A.測試的挑剔性B.完全測試的不可能性C.測試的可靠性D.測試的經(jīng)濟(jì)性

50.八進(jìn)制數(shù)253.74轉(zhuǎn)換成二進(jìn)制數(shù)是()

A.10101011.1111

B.10111011.0101

C.11001011.1001

D.10101111.1011

51.在C語言中,要求運算數(shù)必須是整型的運算符是()

A.%B./C.<D.!

52.有以下程序

main()

{inti,j,x=0;

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

{x++;

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

{if(j%2)continue;

x++;

}

x++;

}

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

}

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

A.x=4B.x=8C.x=6D.x=12

53.已知字符'A'的ASCII碼值是65,字符變量c1的值是'A',c2的值是'D'。執(zhí)行語句printf("%d,%d",c1,c2-2);后,輸出結(jié)果是

A.A,BB.A,68C.65,66D.65,68

54.下列敘述中j下確的是()。

A.程序執(zhí)行的效率與數(shù)據(jù)的存儲結(jié)構(gòu)密切相關(guān)

B.程序執(zhí)行的效率只取決于程序的控制結(jié)構(gòu)

C.程序執(zhí)行的效率只取決于所處理的數(shù)據(jù)量

D.以上3種說法都不對

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

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

56.有以下程序:#include<stdio.h>main(){char*p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf("%s%s",p,q);printf("%s%s\n",p,q);}若從鍵盤輸入;abcdef<回車>,則輸出結(jié)果是______。

A.defdefB.abcdefC.abedD.dd

57.以下程序段的輸出結(jié)果是()。inta=1234;printf("%2d\n",a);

A.12B.34C.1234D.提示出錯,無結(jié)果

58.以下敘述中不正確的是

A.C語言中的文本文件以ASCII碼形式存儲數(shù)據(jù)

B.C語言中對二進(jìn)制位的防問速度比文本文件快

C.C語言中,隨機(jī)讀寫方式不使用于文本文件

D.C語言中,順序讀寫方式不使用于二進(jìn)制文件

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

A.intn1=n2=10;

B.charc=32;

C.floatf=f+1.1;

D.doublex=12.300.5;

60.請讀程序:#include<srdio.h>main(){intn[2],i,j,k;{for(i=0,i<2;i++)n[i]=0;k=2;for(i=0;i<k;i++){for(j=0;j<k;j++)n[j]=n[i]+l;print{("%d\n",n[k]);}上面程序片段輸出結(jié)果是()

A.不確定的值B.3C.23D.1

四、選擇題(20題)61.假定已建立以下鏈表結(jié)構(gòu),且指針p和q已指向如圖所示的結(jié)點:

62.

63.

64.下列描述中正確的是

A.軟件指的就是程序B.軟件開發(fā)不受任何計算機(jī)系統(tǒng)的限制

C.軟件既是邏輯實體,又是物理實體D.軟件是程序、數(shù)據(jù)與相關(guān)文檔的集合

65.

66.

67.

68.以下選項中正確的定義語句是()。

A.double,a,b;B.doublea=b=7;C.doublea;b;D.doublea=7,b=7;

69.有以下程序:

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

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

70.

71.有如下程序段

#include"stdio.h"

#include"string.h"

#defineN10

#defineM10

char*find(char(*a)[M],intn)

{char*q;inti;

q=a[0];

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

if(strcmp(a[i],q)<0)q=a[i];

returnq;}

main()

{chars[N][M]={"tomeetme","you","and","he","china"};

char*p;

intn=5;

p=find(s,n);

puts(p);}

則執(zhí)行后輸出的結(jié)果為A.A.heB.andC.youD.tomeetme

72.

73.不能實現(xiàn)函數(shù)之間數(shù)據(jù)傳遞的是()。

A.全局變量B.局部變量C.函數(shù)接口D.函數(shù)返回值

74.有以下程序:

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

A.0B.3C.7D.8

75.有以下程序:

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

A.12B.14C.1234D.123456

76.整型變量X和Y的值相等,且為非0值,則以下選項中結(jié)果為0的表達(dá)式是()。

A.X‖YB.X|YC.X&YD.X^Y

77.

78.當(dāng)用“#defineF37.5f”定義后,下列敘述正確的是()。

A.F是float型數(shù)B.F是Char型數(shù)C.F無類型D.F是字符串

79.下列數(shù)據(jù)結(jié)構(gòu)中屬于非線性結(jié)構(gòu)的是()。

A.隊列

B.線性表

C.二叉樹

D.棧

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:輸出M行M列整數(shù)方陣,然后求兩條對角線上的各元素之和并將其返回。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.

參考答案

1.B

2.B

3.A

4.A

5.B條件表達(dá)式的含義是:如果表達(dá)式1成立,結(jié)果為表達(dá)式2的值,如果不成立,則為表達(dá)式3的值。在題干中,如果“a>b”且“b>c”,則k值為1;如果“a>b”且“b<c”,則k值為0;如果“a<b”,則k值為0。條件“a>b”與“b>c”中只要有一個條件不成立,k的值就為0。故本題答案為B選項。

6.A

7.B[解析]&按位與,如果兩個相應(yīng)的二進(jìn)制位都為1.則該位的結(jié)果值為1.否則為0.按位或兩個相應(yīng)的二進(jìn)制位中只要有一個為1.該位的結(jié)果值為1.2的二進(jìn)制為0000010.4的二進(jìn)制為000000所以做或運算結(jié)果為0000110.該數(shù)與5即00000101做與操作結(jié)果為0000100.即4.

8.D解析:在程序中,當(dāng)L的值為5和4時,case都沒有與其匹配的值,所以執(zhí)行default語句;當(dāng)k=3時,執(zhí)行n+=k;得n=3;當(dāng)L=2時,執(zhí)行case2:然后順序執(zhí)行case3:n+=k;得n=5;當(dāng)k=1時,執(zhí)行case1:n+=k;得n=6,然后順序執(zhí)行case2:和case3:n+=k;使得n=7。

9.D本程序主要考查遞歸函數(shù)。fun(7),首先將參數(shù)代入函數(shù),因為(7/2)>1,所以執(zhí)行f(3),依此類推直到f(1.5),(1.5/2)<1,所以執(zhí)行打印函數(shù),此時X值為3,然后退出f(1.5),返回f(3),打印x值即7。所以選D。

10.B

11.AC語言中,字符指針變量可以直接使用字符串賦值,而字符數(shù)組不能直接使用字符串或字符數(shù)組賦值,選項B、C、D錯誤,選項A正確。故本題答案為A選項。

12.Cdoublea,*p=&a語句的意思是將a的值存放到指針變量P中,P是指針可以隨意指向任何地址,所以答案C錯誤。

13.B

14.A本題考查getchar函數(shù)與putchar函數(shù),通過9etchar函數(shù)讀入字符,并通過putchar函數(shù)將字符逐個輸出,當(dāng)用戶輸入“?”時停止輸出,且c是一個字符變量只占一個字節(jié)。

15.B

16.C

17.B當(dāng)b=1時,a=1,第二個if語句成立,此時a=6,返回for循環(huán);當(dāng)b=2,兩個if語句都為假,此時a=3,再返回循環(huán);當(dāng)b=3,第二個if成立,此時a=8,繼續(xù)循環(huán);當(dāng)b=4,第一個if成立,退出for循環(huán)體時b為4,a為8。

18.D

19.A解析:在C語言中所謂函數(shù)的遞歸是在指在調(diào)用一個函數(shù)的過程中,又出現(xiàn)了直接或間接地調(diào)用該函數(shù)本身,直接調(diào)用該函數(shù)本身的稱為函數(shù)遞歸,而間接調(diào)用該函數(shù)稱為函數(shù)的間接遞歸調(diào)用.由程序可以看出函數(shù)f(a,i,j)為一遞歸函數(shù),其功能是i

20.D解析:在C++語言中退格符表示為\\b退格。注意:其他轉(zhuǎn)義字符的意義:\\n表示回車換行,\\t表示橫向跳到下一制表位置,\\v表示豎向跳格,\\r表示回車,\\f表示走紙換頁,\\\\表示反斜線符,\\a表示鳴鈴,\\ddd1~3位表示八進(jìn)制數(shù)所代表的字符,\\xhh1~2位表示十六進(jìn)制數(shù)所代表的字符。

21.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實現(xiàn)過程是將相鄰兩個字符進(jìn)行比較,如果當(dāng)前字符小于下—個字符,則通過中間變量temp將字符兩兩交換,所以第一空應(yīng)填:str[i],第二空應(yīng)填:str[i+1]。最終打印輸出得到的字符串str,所以第三空應(yīng)填:'%s',str。

22.1.0/(n*n)1.0/(n*n)解析:sam中累加的值是1+1/(2*2)+1/(3*3)+…+1//(n*n),如果寫為1/(n*n),則會因為1和n都為整型,結(jié)果則為實型,將1變?yōu)?.0,結(jié)果則為實型。

23.x==0x==0解析:!x的邏輯意思就是x為非,即x==0。

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

25.p!=NULL或P或p!=0或p!='0'p->next或(*p).nextp!=NULL或P或p!=0或p!='0'\r\np->next或(*p).next解析:程序中定義了一個結(jié)構(gòu)體類型名Node,其中定義了一個指向結(jié)點類型的指針next。接下來用Node定義了頭結(jié)點指針變量h和指向第一個結(jié)點的指針變量p,在滿足p未指向最后一個結(jié)點的空指針時(即為NULL),輸出p所指向結(jié)點的字符串,所以第一處應(yīng)填p!=NULL,然后將p指向下一個非空結(jié)點,所以第二處應(yīng)填P->next或與其等效的形式,反復(fù)執(zhí)行直到所有的結(jié)點都輸出。

26.解析:程序通過語句“s[0]next=s+1;s[1].next=s+2;s[2].next=s;”將結(jié)構(gòu)體變量s中各結(jié)點連接成了一個循環(huán)鏈表,即最后一個結(jié)點的指針域指向了頭結(jié)點,整個鏈表形成了一個環(huán),并通過語句“p=s;q=p->next;r=q->next;”將結(jié)構(gòu)體指針變量p、q、r指向了各結(jié)點。

27.structnode*

28.3

29.非線性結(jié)構(gòu)非線性結(jié)構(gòu)

30.1234theend1,2,3,4,theend解析:本題考查帶參數(shù)的宏的定義。第1次循環(huán),i=1時,調(diào)用PRINT(1),P(1)輸出1;第2次循環(huán),i=2時,調(diào)用PRINT(2),P(2)輸出2:第3次循環(huán),i=3時,調(diào)用PRINT(3),P(3)輸出3:第4次循環(huán),i=4時,調(diào)用PRINT(4),P(4)輸出4,theend。

31.44解析:strcpy(s1,s2)函數(shù)的作用是將字符串s2中的內(nèi)容拷貝到字符串s1中的內(nèi)容覆蓋。strlen()函數(shù)是求字符串的長度。本題實際上是要求s2字符串的長度,即是4。

32.3*sizeof(double)或size(double)*3或24或3*8或8*33*sizeof(double)或size(double)*3或24或3*8或8*3解析:本題考核的知識點是malloc()函數(shù).該函數(shù)的調(diào)用格式是“malloc(n)”,作用是申請n個字符的存儲單元,并返回該存儲區(qū)的首地址,實際調(diào)用的時候可在前面加上“(類型說明符*)”,以轉(zhuǎn)換成需要的類型的地址.所以在此空格處應(yīng)該填寫3*sizeof(double)或size(double)*3或其他等價的表達(dá)式。

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

34.10

35.運行后報錯運行后報錯解析:指針q沒有指向確定的存儲單元,故不能賦值。

36.cdeabcdeab解析:本題中函數(shù)move的實參到形參是按地址傳遞,故形參的改變會影響實參。根據(jù)題目可知在main函數(shù)中,n=3、s[0]=\'a\'、s[1]=\'b\'、s[2]=\'c\'、s[3]=\'d\'、s[4]=\'e\',數(shù)組元素s[5]~s[49]全部為\'\\0\',故z=strlen(s)=5。

第1次調(diào)用函數(shù)move時,形參str='abcd'、n=5,執(zhí)行完函數(shù)move后str[4]=str[3]=\'d\'、str[3]=str[2]=\'c\'、str[2]=str[1]=\'b\'、str[1]=str[0]=\'a\'、str[0]=str[4]=\'e\'。即s[0]=\'e\'、s[1]=\'a\'s[2]、s[2]=\'b\'、s[3]=\'c\'、s[4]=\'d\'。

第2次調(diào)用函數(shù)move時,形參str='eabcd、n=5,執(zhí)行完函數(shù)move后str[4]=str[3]=\'c\'、str[3]=str[2]=\'b\'、str[2]=str[1]=\'a\'、str[1]=str[0]=\'e\'、str[0]=str[4]=\'d\'。即s[0]=\'d\'、s[1]c\'e\'、s[2]=\'a\'、s[3]=\'b\'、s[4]=\'c\'。

第3次調(diào)用函數(shù)move時,形參str='deabc'、n=5,執(zhí)行完函數(shù)move后str[4]=str[3]=\'b\'、str[3]=str[2]=\'a\'、str[2]=str[1]=\'e\'、str[1]=str[0]=\'d\'、str[0]=str[4]=\'c\'。即s[0]=\'c\'、s[1]=\'d\'、s[2]=\'e\'、s[3]=\'a\'、s[4]=\'b\'。

所以printf函數(shù)的輸出結(jié)果為:cdeab。

37.1a61a6解析:對于指針變量的運算,就是對地址的運算。本題中由于指針指向的是整型變量,所以,使指針變量移動9個位置也就是移動18個字節(jié)。注意,本題是以十六進(jìn)制輸出的。

38.2525解析:#NAME?

39.b=14b=14解析:分析程序可知,n的初始值為1,因此,while(n<=3)循環(huán)3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。當(dāng)n=4時,判斷條件不滿足,退出循環(huán)。

40.s[i]>='0'&&s[i]<='9'或isdigit(s[i])s[i]>='0'&&s[i]<='9'或isdigit(s[i])解析:“chars[80],d[80];”定義了兩個字符型數(shù)組,可以放入80個字符。gets函數(shù)是C語言提供的一個專門用于讀字符串的函數(shù),它讀入全部字符(包括空格),直到遇到回車為止。本題中,讀入字符串s后,開始比較s中的每個字符是否為數(shù)字字符,因為字符數(shù)據(jù)在內(nèi)存中以相應(yīng)的ASCII碼存放,所以只需比較相應(yīng)的字符是否在'0'到'9'之間,或使用庫函數(shù)isdigit(),來判斷是否為數(shù)字字符。如果是數(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])以及其他任何等價表達(dá)式。

41.D

42.A解析:C語言中[]比*優(yōu)先級高,因此line先與[5]結(jié)合,形成line[5]形式,這是數(shù)組形式,它有5個元素,然后再與line前面的'*'結(jié)合,表示此數(shù)組是一個指針數(shù)組,每個數(shù)組元素都是一個基類型為char的指針變量。

43.B棧是限定只能在表的一端進(jìn)行插入和刪除操作的線性表,入棧和出棧都是在棧頂進(jìn)行,它們的操作特點是先進(jìn)后出,因此具有記憶作用。??梢圆捎庙樞虼鎯?,也可以采用鏈?zhǔn)酱鎯Α?/p>

44.C解析:成員next中存放的是下一個結(jié)點的地址。

45.A解析:條件表達(dá)式的一般形式為:表達(dá)式1?表達(dá)式2:表達(dá)式3;先求解表達(dá)式1,若為真則求解表達(dá)式2;若表達(dá)式1的值為假,則求解表達(dá)式3。本題中先判斷i==j,不等,執(zhí)行j=7;然后執(zhí)行x=7。故本題為A。

46.D關(guān)系R與s經(jīng)交運算后所得到的關(guān)系是由那些既在R內(nèi)又在S內(nèi)的共有元組組成的,記為RnS。

47.B解析:數(shù)據(jù)的存儲結(jié)構(gòu),又稱為數(shù)據(jù)的物理結(jié)構(gòu),是數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的存放形式,數(shù)據(jù)的存儲結(jié)構(gòu)有順序結(jié)構(gòu)、鏈?zhǔn)浇Y(jié)構(gòu)、散列結(jié)構(gòu)和索引結(jié)構(gòu)等。

48.D解析:濫用goto語句將使程序流程無規(guī)律,可讀性差,因此選項A)不選;注解行有利于對程序的理解,不應(yīng)減少或取消,選項B)也不選;程序的長短要依照實際情況而論,而不是越短越好,選項C)也不選。

49.C解析:軟件測試的目標(biāo)是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程序中的錯誤,給出程序可靠性的鑒定。它有3個方面的重要特征,即測試的挑剔性、完全測試的不可能性及測試的經(jīng)濟(jì)性。其中沒有測試的可靠性這一說法。注意:軟件測試與軟件調(diào)試的概念,以及相應(yīng)的方法。

50.A

51.A解析:題目的四個選項中,B、C、D都不要求運算數(shù)必須為整數(shù),參與模運算(%)的運算數(shù)必須是整型數(shù)據(jù)。

52.B解析:此程序考察了for循環(huán)和x++。對于大循環(huán),有兩個x++,其中循環(huán)3次,對于小循環(huán),循環(huán)三次,但是運行了兩次x++,所以最后結(jié)果是6+2=8。

53.C解析:在C語言中,字符型數(shù)據(jù)在內(nèi)存中的存儲形式是ASCII碼值。當(dāng)需要以整型格式輸出字符時,輸出的也是ASCII碼值。字符“A”和“D”的ASCII碼值分別為65和68。

54.A解析:程序執(zhí)行的實際計算工作量與不僅與程序的控制結(jié)構(gòu)有一定的關(guān)系,與處理的數(shù)據(jù)量有關(guān),而民還與數(shù)據(jù)的存儲結(jié)構(gòu)密切相關(guān)。所以,選項A正確,選項B和選項C錯誤。

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

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

56.A解析:本題考查%s控制符在scanf函數(shù)中的應(yīng)用。scanf函數(shù)中%s控制符的作用是將鍵盤輸入的字符串送到內(nèi)存,輸入的字符串從第一個非空格字符算起,遇到空格或回車就認(rèn)為是輸入結(jié)束。本題中執(zhí)行語句scanf('%s%s',p,q)時,從鍵盤輸入abcdef<回車>后,指針變量p指向字符串'abc\\0',q指向字符串'def\\0',但是由于p和q指向同一個存儲單元,所以存儲單元中存放的是'def\\0',printf函數(shù)的輸出結(jié)果為defdef。

57.C解析:在C語言中,對于不同類型的數(shù)據(jù)用不同的格式字符,其中,“%d”是按整型數(shù)據(jù)的實際長度輸出,“%md”中,m為指定的輸出字段的寬度,如果數(shù)據(jù)的位數(shù)小于m,則左端補以空格,若大于m,則按實際位數(shù)輸出。注意:格式輸入函數(shù)scanf的使用。

58.D解析:本題考核的知識點是文件的讀寫方式。在C語言中文本文件是以ASCII碼形式存放的,每個字符占一個字節(jié)。由于數(shù)據(jù)在計算機(jī)中是以;進(jìn)制形式存放的,因此二進(jìn)制文件中的數(shù)據(jù)可以直接讀出,而不需要像文本文件那樣把ASCH碼轉(zhuǎn)換成二進(jìn)制,因此速度較快。在文本文件中,數(shù)據(jù)以ASCII碼形式存放的,用戶很難判定一個數(shù)據(jù)到底占幾個字節(jié),所以不適合使用隨機(jī)讀寫方式。數(shù)據(jù)以二進(jìn)制形式存放,占有的字節(jié)數(shù)是固定的,所以可以進(jìn)行隨機(jī)讀寫,當(dāng)然也可以順序讀寫。所以,D選項為所選。

59.B

60.A

61.A本題考查的是在鏈表中刪除結(jié)點的操作。在本題中指針p指向結(jié)點a,q指向結(jié)點b。要把結(jié)點b刪除,就應(yīng)該首先讓結(jié)點a的指針域指向結(jié)點C,即p—next=q—next,也可以寫成(*p).next=(Pq).next,然后釋放結(jié)點b,

free(q):所以,4個選項中,只有A)滿足題意。

62.C

63.D

64.D軟件并不只是包括可以在計算機(jī)上運行的程序,與這些程序相關(guān)的文檔一般也被認(rèn)為是軟件的一部分,即軟件是包括程序、數(shù)據(jù)及其相關(guān)文檔的完整集合。其中,程序是按事先設(shè)計的功能和性能要求執(zhí)行的指令序列;數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu);文檔是與程序開發(fā)、維護(hù)和使用有關(guān)的圖文材料。

軟件具有如下特點:軟件是一種邏輯實體,而不是具體的物理實體;軟件的生產(chǎn)與硬件不同,它沒有明顯的制造過程;在軟件的運行和使用期間,沒有硬件那樣的機(jī)械磨損和老化問題;軟件的開發(fā)和運行常常受到計算機(jī)系統(tǒng)的限制,對計算機(jī)系統(tǒng)有著不同程度的依賴性;軟件的開發(fā)至今尚未完全擺脫手工藝的開發(fā)方式;軟件本身是復(fù)雜的;軟件成本相當(dāng)昂貴;相當(dāng)多的軟件工作涉及社會因素。

65.C

66.D

67.A

68.DA選項中變量類型符double后面不能有逗號。B選項中變量b不能先使用再定義,應(yīng)該寫成選項D中的格式。C選項中變量a后面應(yīng)該是逗號而不是分號。

69.D本題考查的是

溫馨提示

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

最新文檔

評論

0/150

提交評論