数据结构题集c语言版答案严蔚敏吴伟民[1]

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

16

void Descend(int &x, int &y, int &z)

{

int t;

if(x

if(x

if(y

}

17

Status Fibonacci(int k, int m, int &f)

/* 求k阶斐波那契序列的第m项的值f */

{

int i,j,sum,temp[20];

if(k<2||m<0) return ERROR;

if(m

else if(m==k-1) f=1;

else

{for(i=0;i<=k-2;i++)

temp[i]=0;

temp[k-1]=1;

for(i=k;i<=m;i++)

{sum=0;

for(j=i-k;j

sum+=temp[j];

temp[i]=sum;

}

f=temp[m];

}

return OK;

}// Fibonacci

18

void Scores(ResultType *result, ScoreType *score)

/* 求各校的男、女总分和团体总分, 并依次存入数组score */ /* 假设比赛结果已经储存在result[ ]数组中, */

/* 并以特殊记录{"", male, ' ', "", 0 }(域scorce=0)*/

/* 表示结束*/ {

int i=0;

while(result[i].sport!=NULL)

{

switch(result[i].schoolname)

{

case 'A':

score[0].totalscore+=result[i].score;

if(result[i].gender==male) score[0].malescore+=result[i].score;

else score[0].femalescore+=result[i].score;

break;

case 'B':

score[1].totalscore+=result[i].score;

if(result[i].gender==male) score[1].malescore+=result[i].score;

else score[1].femalescore+=result[i].score;

break;

case 'C':

score[2].totalscore+=result[i].score;

if(result[i].gender==male) score[2].malescore+=result[i].score;

else score[2].femalescore+=result[i].score;

break;

case 'D':

score[3].totalscore+=result[i].score;

if(result[i].gender==male) score[3].malescore+=result[i].score;

else score[3].femalescore+=result[i].score;

break;

case 'E':

score[4].totalscore+=result[i].score;

if(result[i].gender==male) score[4].malescore+=result[i].score;

else score[4].femalescore+=result[i].score;

break;

}

i++;

}

for(s='A';s<='E';s++)

{

printf("School %c:\n",s);

printf("Total score of male:%d\n",score[i].malescore);

printf("Total score of female:%d\n",score[i].femalescore);

printf("Total score of all:%d\n\n",score[i].totalscore);

}

}

19

Status Series(int ARRSIZE, int a[])

/* 求i!*2^i序列的值并依次存入长度为ARRSIZE的数组a; */ /* 若所有值均不超过MAXINT,则返回OK,否则返回OVERFLOW */ {

int last,i;

last=1;

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

{

a[i-1]=last*2*i;

if (a[i-1]>MAXINT)

return OVERFLOW;

last=a[i-1];

}

return OK;

}

20

float Polynomial(int n, int a[], float x)

/* 求一元多项式的值P(x)。 */

/* 数组a的元素a[i]为i次项的系数,i=0,...,n */

{

int j,i;

float y,s;

y=0;

for(j=n;j>0;j--)

y=x*(y+a[j]);

s=y+a[0];

return(s);

}

第二章

12

char Compare(SqList A, SqList B)

// 比较顺序表A和B,

// 返回'<', 若A

// '=', 若A=B;

// '>', 若A>B

{

int i;

for(i=1;i<=A.length&&i<=B.length;i++)

if(A.elem[i]!=B.elem[i])

return A.elem[i]>B.elem[i]?'>':'<';

if(A.length==B.length) return '=';

return A.length>B.length?'>':'<';

}

相关文档
最新文档