2021-2022學(xué)年安徽省宣城市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題(含答案)_第1頁
2021-2022學(xué)年安徽省宣城市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題(含答案)_第2頁
2021-2022學(xué)年安徽省宣城市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題(含答案)_第3頁
2021-2022學(xué)年安徽省宣城市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題(含答案)_第4頁
2021-2022學(xué)年安徽省宣城市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題(含答案)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021-2022學(xué)年安徽省宣城市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(12題)1.如果樹的的結(jié)點(diǎn)A有4個(gè)兄弟,而且B為A的雙親,則B的度為()。

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

2.程序流程圖中帶有箭頭的線段表示的是()。

A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系

3.程序運(yùn)行后的輸出結(jié)果是()。A.10B.11C.20D.21

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

A.if(a)printf("%dn",x);elseprint[("%d\n",y)

B.if(a=0)pritf("%dn",y);elseprint[("%d\n",x)

C.if(a!一0)printf("%dn",x);elseprint[("%a\n",y)

D.if(a=O)print[("%dn",x);elseprintf("%d\n",y)

5.設(shè)x和y均為bool量,則x&&y為真的條件是()。

A.它們均為真B.其中一個(gè)為真C.它們均為假D.其中一個(gè)

6.計(jì)算機(jī)硬件組成中,CPU包含______。

A.控制器和存儲(chǔ)器B.控制器和運(yùn)算器C.控制器、運(yùn)算器和存儲(chǔ)器D.內(nèi)存儲(chǔ)器和外存儲(chǔ)器

7.下面程序的運(yùn)行結(jié)果是______。#include<stdio.h>#include<string.h>fun(char*w,intn){chart,*s1,*s2;s1=w;s2=w+n-1;while(s1<s2){t=*s1++;*s1=*s2--;*s2=t;}}main(){char*p;p="1234567";fun(p,strlen(p));puts(p);}

A.7654321B.1714171C.1711717D.7177171

8.在關(guān)系數(shù)據(jù)模型中,通??梢园?)稱為屬性,其值稱為屬性值。

A.記錄B.基本表C.模式D.字段

9.下列程序段的時(shí)間復(fù)雜度為()。A.O(n)B.O(log2n)C.O(n3)D.O(n2)

10.有以下程序:#include<stdio.h>intfun(int*a,int*b,intn){inti=0,j=0,sum=0;for(;i<n;i++){sum+=a[i];if((i+1)%2==0){b[j++]=sum;sum=0;}}returnj;}main(){inta[8]={1,0,2,3,5,4,2,1},b[8],k,i;k=fun(a,b,8);for(i=0;i<k;i++)printf(“%d”,b[i]);}程序的運(yùn)行結(jié)果是()。

A.0242B.1593C.1351D.286

11.公司中有多個(gè)部門和多名職員,每個(gè)職員只能屬于一個(gè)部門,一個(gè)部門可以有多名職員,從職員到部門的聯(lián)系類型是()

A.多對(duì)多B.一對(duì)一C.多對(duì)一D.一對(duì)多

12.若已知一個(gè)棧的進(jìn)棧序列是1,2,3,,n,其輸出序列為p1,p2,p3,?,pn,若p1=n,則pi為()。

A.iB.n-iC.n-i+1D.不確定

二、2.填空題(12題)13.下列程序運(yùn)行后的輸出結(jié)果是______。

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

運(yùn)行程序,輸入HOWAREYOU。

14.一般來說,數(shù)據(jù)庫的設(shè)計(jì)過程要經(jīng)歷3個(gè)大的階段,即可行性分析與研究階段、系統(tǒng)設(shè)計(jì)階段、設(shè)計(jì)實(shí)施與系統(tǒng)運(yùn)行階段。概念設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)屬于數(shù)據(jù)庫設(shè)計(jì)的【】階段。

15.若有定義floatb[15],*p=b;,且數(shù)組b的首地址為200H,則p+13所指向的數(shù)組元素的地址為______。

16.在運(yùn)算過程中,能夠使空表與非空表的運(yùn)算統(tǒng)一的結(jié)構(gòu)是【】。

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

main()

{

intx=0210;

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

}

18.\13'在內(nèi)存中占1個(gè)字節(jié),"\12"在內(nèi)存中占______個(gè)字節(jié)。

19.二叉樹的遍歷可以分為三種:前序遍歷、()遍歷和后序遍歷。

20.軟件生命周期包括8個(gè)階段。為了使各時(shí)期的任務(wù)更明確,又可分為3個(gè)時(shí)期:軟件定義期、軟件開發(fā)期、軟件維護(hù)期。編碼和測試屬于【】期。

21.表達(dá)式pow(2.8,sqrt(float(x)))值的數(shù)據(jù)類型為______型。

22.表示“整數(shù)x的絕對(duì)值大于5”時(shí)值為“真”的C語言表達(dá)式是【】。

23.與結(jié)構(gòu)化需求分析方法相對(duì)應(yīng)的是【】方法。

24.在C語言中,while和do…while循環(huán)的主要區(qū)別是______的循環(huán)至少被執(zhí)行一次。

三、3.程序設(shè)計(jì)題(10題)25.請(qǐng)編寫函數(shù)fun(),其功能是:計(jì)算并輸出給定10個(gè)數(shù)的方差。

其中

例如,給定的10個(gè)數(shù)為95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0,則輸出為S=11.730729。

注意;部分源程序給出如下.

請(qǐng)勿改動(dòng)主函數(shù)mam和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<math.h>

#include<stdio.h>

doublefun(doublex[10])

{

}

main()

{

doubles,x[i0]={95.0,89.0,76.0,65.0,

88.0,72.0,85.0,81.0,90.0,56.0};

inti;

printf("\nTheoriginaldatais:\n");

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

printf("%6.1f",x[i]);

printf("\n\n");

s=fun(x);

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

}

26.編寫函數(shù)fun,其功能是:根據(jù)以下公式求P的值,結(jié)果由函數(shù)值帶回。m與n為兩個(gè)正整數(shù)且要求m>n。

例如:m=12,n=8時(shí),運(yùn)行結(jié)果為495.000000。

注意:部分源程序在文件PROGl.C文件中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

27.N名學(xué)生的成績已在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請(qǐng)編寫函數(shù)fun(),它的功能是:找出學(xué)生的最高分,由函數(shù)值返回。

注意:部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<stdlib.h>

#defineN8

structslist

{doubles;

structslist*next;

};

typedefstructslistSTREC;

doublefun(STREC*h)

{

}

STREC*creat(double*s)

{

STREC*h,*p,*q;

inti=0;

h=p=(STREC*)malloc(sizeof(STREC));

p->s=0;

while(i<N)

/*產(chǎn)生8個(gè)節(jié)點(diǎn)的鏈表,各分?jǐn)?shù)存入鏈表中*/

{q=(STREC*)malloc(sizeof(STREC));

p->s=s[i];i++;p->next=q;p=q;

}

p->next=0;

returnh;/*返回鏈表的首地址*/

}

outlist(STREC*h)

{

STREC*p;

p=h->next;

printf("head");

do

{printf("->%2.0f",p->s);p=p->next;}

/*輸出各分?jǐn)?shù)*/

while(p!=0);

printf("\n\n");

}

main()

{

doubles[N]={85,76,69,85,91,72,64,87},

max;

STREC*h;

h=creat(s);

outlist(h);

max=fun(h);

printf("max=%6.1f\n",max);

}

28.學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun(),它的功能是:按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前。

注意:部分源程序給出如下.

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fum的花括號(hào)中填入所編寫的若啡:語句。

試題程序:

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STRECa[])

{

}

main()

{

STRECsIN]={{"GA005",85},{"GA003",76},

{"GA002",69},{"GA004",85},{"GA001",91},

{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},

{"GA014",91},{"GA011",66},{"GA017",64},

{"GA018",64},{"GA016",72}};

inti;

FILE*out;

fun(s);

printf("Thedataaftersorted:In");

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

{if((i)%4=-0)

/*每行輸出4個(gè)學(xué)生記錄*/

printf("\n");

printf("%s%4d",s[i].num,s[i].s);

}

printf("\n");

out=fopen("out16.dat","w");

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

{if((i)%4==0&&i)

fprintf(out,"\n");

fprintf(out,"%4d",s[i].s);

}

fprintf(out,"\n");

fclose(out);

}

29.請(qǐng)編寫函數(shù)fun,其功能是:計(jì)算并輸出3到n之間(含3和n)所有素?cái)?shù)的平方根之和。

例如,在主函數(shù)中從鍵盤給n輸入100后,輸出為:sum=148.874270。

注意:要求n的值大于2但不大于100。部分源程序在文件PROGl.C中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

30.請(qǐng)編寫函數(shù)fun(),其功能是:計(jì)算并輸出下列多項(xiàng)式的值。

S=1+4/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)

例如,著主函數(shù)從鍵盤給n輸入50后,則輸出為S=1.960784。

注意:部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doubles;

printf("\nInputn:");

scanf("%d",&n);

s=fun(n);

printf("\n\ns=%f\n\n",s);

}

31.編寫程序,實(shí)現(xiàn)矩陣(3行3列)的轉(zhuǎn)置(即行列互換)。

例如,若輸入下面的矩陣:

100200300

400500600

700800900

則程序輸出:

100400700

200500800

300600900

注意:部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<conio.h>

intfun(intarray[3][3])

{

}

main()

{

inti,j;

intarray[3][3]={{100,200,300},{400,

500,600},{700,800,900}};

clrscr();

for(i-0;i<3;i++)

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

printf("%7d",array[i][j]);

printf("\n");

}

fun(array);

printf("Convertedarray:\n");

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

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

printf("%7d",array[i][j]);

printf("\n");

}

}

32.函數(shù)fun的功能是:將s所指字符串中下標(biāo)為偶數(shù)同時(shí)ASCII值為奇數(shù)的字符刪除,s所指串中剩余的字符形成的新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為“ABCDEFGl2345”,其中字符C的ASCII碼值為奇數(shù),在數(shù)組中的下標(biāo)為偶數(shù),因此必須刪除:而字符1的ASCII碼值為奇數(shù),在數(shù)組中的下標(biāo)也為奇數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。

最后t所指的數(shù)組中的內(nèi)容應(yīng)是“BDFl2345”。

注意:部分源程序存在文件PROGl.C中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

33.請(qǐng)編寫函數(shù)fun,函數(shù)的功能是:將大于形參m且緊靠m的k個(gè)素?cái)?shù)存入xx所指的數(shù)組中。例如,若輸入17,5,則應(yīng)輸出:19,23,29,3l,37。

注意:部分源程序在文件PROGl.C文件中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花插號(hào)中填入你編寫的若干語句。

34.請(qǐng)編寫函數(shù)fun,其功能是:計(jì)算并輸出

例如,在主函數(shù)中從鍵盤給n輸入20后,輸出為:s=534.188884。

注意:要求n的值大于1但不大于100。

部分源程序在文件PROGl.C中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

四、單選題(0題)35.設(shè)q1和q2是指向一個(gè)float型一維數(shù)組的指針變量,k為float型變量,則不能正確執(zhí)行的語句是()。

A.k=*q1+*q2;B.q1=k;C.q1=q2;D.k=*q1*(*q2);

五、單選題(0題)36.

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

#include<stdio.h>

main

{inta=0,i;

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

{switch(i)

{case0:

case3:a+=1;

case1;

case2:a+=2;

default:a+=3;

}

}

printf("%d",a);

}

A.19B.1C.6D.8

六、單選題(0題)37.在結(jié)構(gòu)化方法中,軟件功能分解屬于下列軟件開發(fā)中的階段是______。

A.詳細(xì)設(shè)計(jì)B.需求分析C.總體設(shè)計(jì)D.編程調(diào)試

參考答案

1.C

2.C解析:程序流程圖是人們對(duì)解決問題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號(hào)表示操作的內(nèi)容,流程線表示操作的先后次序。帶箭頭的線段在數(shù)據(jù)流程圖中表示數(shù)據(jù)流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項(xiàng)中,在圖元之間用帶有箭頭的線段表示圖元關(guān)系。在模塊之間用帶有箭頭的線段表示調(diào)用關(guān)系。構(gòu)成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;

表示邏輯條件。

3.D[解析]聲明data是結(jié)構(gòu)S數(shù)組。初始化data[0].a=10;data[O]b=100;data[1].a=20;data[]b=200.主函數(shù)中p=data[1];即p.a=data[1].a;p.b=data[1].b;執(zhí)行語句prit("%odn",++(pa);打印輸出時(shí)p.a先增1再打印。p.a=data\u3000\u3000[1].a=20.先增1等于21.

4.D主要考查if判斷語句,A選項(xiàng)if(a),如果a為真,則輸出X,否則輸出Y。B選項(xiàng)if(a==0),如果a恒等于0,則輸出Y,否則輸出X。C選項(xiàng)a(!=o),如果a不等于0,則輸出X,否則輸出y。D選項(xiàng)if(a==0),如果a恒等于0,則輸出X,否則輸出y。由以上結(jié)論可知,輸出結(jié)果不同的為D選項(xiàng)。

5.A

6.B

7.C

8.D解析:數(shù)據(jù)庫表中字段轉(zhuǎn)化為屬性,把記錄的類型轉(zhuǎn)化為關(guān)系模式。

9.A

10.B程序中,fun函數(shù)的功能是接收兩個(gè)數(shù)組a、b,以及數(shù)組a的元素個(gè)數(shù)n,然后通過for循環(huán)將數(shù)組a中下標(biāo)為偶數(shù)的元素與后面相鄰的下標(biāo)為奇數(shù)的元素兩兩相加,賦給數(shù)組b中下標(biāo)為j的元素,最后返回?cái)?shù)組b的個(gè)數(shù)。所以main函數(shù)中,通過調(diào)用fun函數(shù),將數(shù)組a的元素兩兩相加,得到數(shù)組b的各個(gè)元素,再通過for循環(huán)輸出,結(jié)果為:1593。故本題答案為B選項(xiàng)。

11.C解析:該題考查的是實(shí)體間的聯(lián)系。多對(duì)多聯(lián)系(m:n):如果對(duì)于實(shí)體集A中的每個(gè)實(shí)體,實(shí)體集B中有n個(gè)實(shí)體(n≥0)與之聯(lián)系,反之,對(duì)于實(shí)體集B中的每個(gè)實(shí)體,實(shí)體集A中有m個(gè)實(shí)體(m≥0)與之聯(lián)系,則稱實(shí)體集A與實(shí)體集B之間是多對(duì)多聯(lián)系,記作m:n。一對(duì)一聯(lián)系(1:1):如果對(duì)于實(shí)體集A中的每一個(gè)實(shí)體,實(shí)體集B中至多有一個(gè)實(shí)體與之有聯(lián)系,反之亦然,則稱實(shí)體集A與實(shí)體集B之間是一對(duì)一聯(lián)系,記作1:1。一對(duì)多聯(lián)系(1:n):如果對(duì)于實(shí)體集A中每一個(gè)實(shí)體,實(shí)體集B中有n個(gè)實(shí)體(n≥0)與之聯(lián)系,反之,對(duì)于實(shí)體集B中的每個(gè)實(shí)體,實(shí)體集A中至多只有一個(gè)實(shí)體與之聯(lián)系,則稱實(shí)體集A與實(shí)體集B之間是一對(duì)多聯(lián)系,記作1:n。那么根據(jù)題意可知是多對(duì)一聯(lián)系。所以選項(xiàng)C是正確的。

12.C

13.HOWHOW解析:在scanf()函數(shù)中,使用空格作為分隔符,如果輸入含有空格的字符中,則不能使用scanf()數(shù),所以本題中輸入空格就返回了'\\0\\,s數(shù)組也就確定了,后面的輸入就不再讀入數(shù)組s中。

14.系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)解析:系統(tǒng)設(shè)計(jì)階段是系統(tǒng)的具體設(shè)計(jì)過程,主要包括概念設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)3個(gè)步驟。這3個(gè)不同層次上的設(shè)計(jì)過程,是把實(shí)體以及相互之間的聯(lián)系轉(zhuǎn)換為“數(shù)據(jù)”并落實(shí)于計(jì)算機(jī)中。

15.252H252H解析:要解答本題,首先要明白在對(duì)指針進(jìn)行加,減運(yùn)算時(shí),數(shù)字“1”不是十進(jìn)制數(shù)的“1”,而是指“1”個(gè)存儲(chǔ)單元長度。1個(gè)存儲(chǔ)單元長度占存儲(chǔ)空間的多少,應(yīng)該視具體情況而定,如果存儲(chǔ)單元的基類型是血型,則移動(dòng)1個(gè)存儲(chǔ)單元的長度就是位移2個(gè)字節(jié);如果存儲(chǔ)單元基類型是float型,則移動(dòng)1個(gè)存儲(chǔ)單元的長度就是位移4個(gè)字節(jié)。所以p+13所指向的數(shù)組元素的地址為:200H+(13*4)H=252H。

16.循環(huán)鏈表循環(huán)鏈表解析:在鏈表的運(yùn)算過程中,采用鏈接方式即循環(huán)鏈表的結(jié)構(gòu)把空表與非空表的運(yùn)算統(tǒng)一起來。循環(huán)鏈表具有兩個(gè)特點(diǎn):①在循環(huán)鏈表中增加了一個(gè)表頭結(jié)點(diǎn),其數(shù)據(jù)域?yàn)槿我饣蚋鶕?jù)需要來設(shè)置,指針域指向線性表的第一個(gè)元素的結(jié)點(diǎn)。循環(huán)鏈表的頭指針指向表頭結(jié)點(diǎn)。②循環(huán)鏈表中最后一個(gè)結(jié)點(diǎn)的指針不是空,而是指向表頭結(jié)點(diǎn)。

17.8888解析:C語言規(guī)定,以0開頭的整型常量為八進(jìn)制。另外,在primf()函數(shù)中,%X表示以十六進(jìn)制無符號(hào)形式輸出一個(gè)整數(shù),且十六進(jìn)制中的ABCDEF為大寫字母。本題的輸出應(yīng)該是八進(jìn)制210的十六進(jìn)制形式。將八進(jìn)制轉(zhuǎn)換為十六進(jìn)制,可以先將其轉(zhuǎn)換為二進(jìn)制。因?yàn)?位八進(jìn)制表示3位二進(jìn)制,4位二進(jìn)制表示1位十六進(jìn)制。(210)8=(10001000)2=(88)16,故本題輸出為880

18.22解析:'\\13':表示八進(jìn)制數(shù)13表示的ASCII字符,是一個(gè)字符,占一個(gè)字節(jié);而”\\12”是個(gè)字符串,除了八進(jìn)制數(shù)12表示的ASCII字符占一個(gè)字節(jié)外,還有在字符串的末尾加上串結(jié)束標(biāo)志“'\\0'”,所以共有2個(gè)字節(jié)。

19.中序中序解析:二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷。前序遍歷是指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時(shí),仍然先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹。中序遍歷指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹;并且遍歷左、右子樹時(shí),仍然先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹。后序遍歷指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷右子樹,然后訪問根

20.軟件開發(fā)軟件開發(fā)解析:軟件生命周期可以分為3個(gè)時(shí)期:軟件定義期,包括問題定義、可行性研究和需求分析3個(gè)階段;軟件開發(fā)期,包括系統(tǒng)設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和測試4個(gè)階段;軟件維護(hù)期,即運(yùn)行維護(hù)階段。編碼和測試屬于軟件開發(fā)階段。

21.floatfloat解析:在此表達(dá)式中x是float類型的變量,經(jīng)過開方所得到的結(jié)果仍是float類型,再和2.8進(jìn)行運(yùn)算時(shí),應(yīng)該先將2.8轉(zhuǎn)換成float類型再運(yùn)算,最后結(jié)果仍是float型。

22.x>5||x<-5或abs(x)>5x>5||x<-5或abs(x)>5解析:要使整數(shù)x的絕對(duì)值大于5,則x大于5或x小于-5,用C語言表示即為:x>5||x<-5或者abs(x)>5。

23.結(jié)構(gòu)化設(shè)計(jì)結(jié)構(gòu)化設(shè)計(jì)解析:與結(jié)構(gòu)化需求分析方法相對(duì)應(yīng)的是結(jié)構(gòu)化設(shè)計(jì)方法。結(jié)構(gòu)化設(shè)計(jì)就是采用最佳的可能方法設(shè)計(jì)系統(tǒng)的各個(gè)組成部分以及各個(gè)成分之間的內(nèi)部聯(lián)系的技術(shù)。

24.do…whiledo…while解析:考查while和do…while循環(huán)的主要區(qū)別。while循環(huán)的控制出現(xiàn)在循環(huán)體之前,只有當(dāng)while后面的表達(dá)式的值為非零時(shí),才可能執(zhí)行循環(huán)體;在do…while構(gòu)成的循環(huán)體中,總是先執(zhí)行一次循環(huán)體,然后再求表達(dá)式的值,因此無論表達(dá)式的值是否為零,循環(huán)體至少要被執(zhí)行一次。

25.doublefun(doublex[10]){doublexl=0.0s=0.0;inti;for(i=0;i<10;i++)xl=xl+x[i];xl-xl/10;/*求10個(gè)數(shù)的平均值*/for(i=0;i<l0;i++)s=s+(x[i]-xl)*(x[i]-x1);returnsqrt(s/l0);/*求10個(gè)數(shù)的方差*/}doublefun(doublex[10])\r\n{\r\ndoublexl=0.0,s=0.0;\r\ninti;\r\nfor(i=0;i<10;i++)\r\nxl=xl+x[i];\r\nxl-xl/10;\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000/*求10個(gè)數(shù)的平均值*/\r\nfor(i=0;i<l0;i++)\r\ns=s+(x[i]-xl)*(x[i]-x1);\r\nreturnsqrt(s/l0);\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000/*求10個(gè)數(shù)的方差*/\r\n}解析:又是一道算式表達(dá)題,程序中用第1個(gè)循環(huán)來完成求10個(gè)數(shù)的總和,接著再用x1=x1/10來求出平均值。

26.

解析:(1)該程序功能是對(duì)組合數(shù)公式求值。它的解題思路,可以分解為以下幾步:求m!→求n!→求(m-n)!→求組合數(shù)的值。

(2)從已給部分源程序的main主函數(shù)開始入手,主函數(shù)中的“printf(“P=%f\n”,fun(12,8));”語句中“fun(12,8)”將12、8傳遞給fun中的m與n,fun函數(shù)實(shí)現(xiàn)對(duì)組合數(shù)的求佰。

27.doublefun(STREC*h){doublemax=h->s;while(h!=NULL)/*通過循環(huán)找到最高分?jǐn)?shù)*/{if(max<h->s)max=h->s;h=h->next;}returnmax;}doublefun(STREC*h)\r\n{\r\ndoublemax=h->s;\r\nwhile(h!=NULL)/*通過循環(huán)找到最高分?jǐn)?shù)*/\r\n{if(max<h->s)max=h->s;\r\nh=h->next;\r\n}\r\nreturnmax;\r\n}解析:在本題中,h為一個(gè)指向結(jié)構(gòu)體的指針變量,若要引用它所指向的結(jié)構(gòu)體中的某一成員時(shí),要用指向運(yùn)算符“->”。由于是鏈表,所以要使h逐一往后移動(dòng),使用的是h=h->next。

28.intfun(STRECa[]){intij;STRECt;for(i=1;i<N;i++)/*用冒泡法進(jìn)行排序進(jìn)行N-1次比較*/for(j=0;j<N-1;j++)/*在每一次比較中要進(jìn)行N-1次兩兩比較*/if(a[j].s<a[j+1].s){t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分?jǐn)?shù)的高低排列學(xué)生的記錄高分在前*/}intfun(STRECa[])\r\n{\r\ninti,j;\r\nSTRECt;\r\nfor(i=1;i<N;i++)/*用冒泡法進(jìn)行排序,進(jìn)行N-1次比較*/\r\nfor(j=0;j<N-1;j++)/*在每一次比較中要進(jìn)行N-1次兩兩比較*/\r\nif(a[j].s<a[j+1].s)\r\n{t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前*/\r\n}解析:冒泡法算法思路:如果有N個(gè)數(shù),則要進(jìn)行N-1次比較,在每一次比較中要進(jìn)行N-1次兩兩比較(這種算法較好理解但不是最精的)。所謂兩兩比較就是從頭到尾依次將相鄰兩個(gè)數(shù)進(jìn)行比較并將其中大的數(shù)放在前或在后(若要求從小到大排序,則大的數(shù)要放在后。反之則對(duì)調(diào)),即兩兩比較后這兩個(gè)數(shù)要形成題中所要求的順序。由于總是從頭到尾進(jìn)行比較,所以第1次比較結(jié)束后,最大(或最小)數(shù)肯定在最后,第2次比較結(jié)束后,次最大(或次最小)數(shù)肯定在倒數(shù)的第2個(gè)數(shù),依次類推,所以進(jìn)行第一次比較時(shí)必須比較到最后一個(gè)數(shù),而進(jìn)行第2次比較時(shí)只要比較到倒數(shù)的第2個(gè)數(shù)即可,所以進(jìn)行第i次比較時(shí)只需比較N-i次即可(這種算法較難理解,但它是最好的)。

選擇法算法思路:如果有N個(gè)數(shù)則從頭到倒數(shù)的第2個(gè)數(shù)一個(gè)一個(gè)往后走動(dòng),每走動(dòng)1個(gè)數(shù)總是將這個(gè)數(shù)與其后的所有數(shù)進(jìn)行比較并找出它們的最大(或最小)數(shù),找出最大(或最小)數(shù)后再將所得的最大(或最小)數(shù)與該數(shù)進(jìn)行交換,交換后再走到下一個(gè)數(shù)依次交換到結(jié)束。此外,選擇法還可用如下思路:如果有N個(gè)數(shù),則從頭到倒數(shù)的第2個(gè)數(shù)—個(gè)一個(gè)往后走動(dòng),每走動(dòng)一個(gè)數(shù)總是將這個(gè)數(shù)與其后的所有數(shù)進(jìn)行兩兩比較,在比較時(shí)按順序?qū)⑦M(jìn)行比較的這兩個(gè)數(shù)排序(即交換)。

插入法算法思路:先對(duì)頭兩個(gè)數(shù)進(jìn)行排序。然后把第3個(gè)數(shù)插入到前兩個(gè)數(shù)中,插入后前3個(gè)數(shù)依然有序;再把第4個(gè)數(shù)插入到前3個(gè)數(shù)中,插入后前4個(gè)數(shù)依然有序;依次插完所有的數(shù)。具體執(zhí)行方式(假設(shè)從小到大排序):從第2個(gè)數(shù)開始往后一個(gè)一個(gè)走動(dòng)直到最后。每走到1個(gè)數(shù)總是將該數(shù)(先將其存到1個(gè)臨時(shí)變量中)與其前面的數(shù)進(jìn)行比較(比較的順序總是從后往前進(jìn)行),在比較時(shí)只要發(fā)現(xiàn)該數(shù)比被比較的數(shù)小,就將被比較的數(shù)往后移1位,然后該數(shù)還要冉與前1個(gè)數(shù)進(jìn)行比較,亢到發(fā)現(xiàn)該數(shù)比被比較的數(shù)大或己比較到頭(即第1個(gè)數(shù)的前面),并將該數(shù)存入當(dāng)前被比較數(shù)的后1位(存儲(chǔ)空間)。

如果有整型一維數(shù)組a其有N個(gè)元素,要求將其按從小到大排序。注意元素下標(biāo)是從0始的。

冒泡法:

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

for(j=0;N-1;j++)

if(a[j]>a[j+1])

{t=a[j];a[j]=a[j+1];a[j+1]=a[j];}

選擇法

for(i=0i<N-1;i++)

{p=i;

for(ji+1;j<N;j++)

if(a[p]>a[j])p=j;

if{p!=i)

t=a[i];a[i]=a[p];a[p]=t;

}

插入法

for{i=1;i<N;i++}

{t=a[i];

for{j=i-1;a[j]>t&&j>=0;j--)

a[j+1]=a[j];

a[j+1]=t;

}

29.

解析:函數(shù)fun的功能是計(jì)算并輸出3到n之間(含3和n)所有素?cái)?shù)的平方根之和,首先根據(jù)題干中的要求找出3到n之間的素?cái)?shù),并求出素?cái)?shù)的平方根,然后求得這些平方根的和。

30.doublefun(intn){inti;doubles=0.0s1=0.0;for(i=1;i<=n;i++){s1=s1+i;/*求每—項(xiàng)的分母*/s=s+1.0/s1;/*求S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)*/}returns;}doublefun(intn)\r\n{\r\ninti;\r\ndoubles=0.0,s1=0.0;\r\nfor(i=1;i<=n;i++)\r\n{s1=s1+i;/*求每—項(xiàng)的分母*/\r\ns=s+1.0/s1;/*求S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)*/\r\n}\r\nreturns;\r\n}解析:該程序的數(shù)學(xué)思路是:在程序中輸入n后,以前n項(xiàng)的和作為分母遞加,由于s1是浮點(diǎn)類數(shù)據(jù)所以s=s+1.0/s1;for循環(huán)的作用是每一次循環(huán)給總結(jié)果s加上一項(xiàng)1.0/s1。

31.intfun(intarray[3][3]){intijt;for(i=0;i<3;i++)/*將右上三角和左下三角對(duì)換實(shí)現(xiàn)行列互換*/for(j=i+1;j<3;j++){t=array[i][j];array[i][j]=array[j][i];array[j][i]

溫馨提示

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

評(píng)論

0/150

提交評(píng)論