欢迎来到天天文库
浏览记录
ID:52983247
大小:380.22 KB
页数:30页
时间:2020-04-06
《2015广工数据结构答案.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、/**********【题目】试写一算法,如果三个整数a,b和c的值不是依次非递增的,则通过交换,令其为非递增。***********/voidDescend(int&a,int&b,int&c)/*通过交换,令a>=b>=c*/{intt;if(a<=b){t=a;a=b;b=t;}if(b<=c){t=b;b=c;c=t;}if(a<=b){t=a;a=b;b=t;}}/**********【题目】试编写算法求一元多项式P(x)=a0+a1x+a2x^2+...+anx^n的值P(x0),并确定算法中每一语句的
2、执行次数和整个算法的时间复杂度。**********/floatPolynomial(intn,inta[],floatx)/*求一元多项式的值P(x)。*//*数组a的元素a[i]为i次项的系数,i=0,...,n*/{inti,j;floatp=0,t=1;for(i=0;i<=n;i++){p=a[i]*t+p;t=t*x;}returnp;}/**********【题目】已知k阶裴波那契序列的定义为f(0)=0,f(1)=0,...,f(k-2)=0,f(k-1)=1;f(n)=f(n-1)+f(n-2)+
3、...+f(n-k),n=k,k+1,...试编写求k阶裴波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。**********/StatusFibonacci(intk,intm,int&f)/*求k阶斐波那契序列的第m项的值f*/{intt[60],sum,i,j;if(k<2
4、
5、m<0)returnERROR;if(m6、sum=0;for(j=i-k;j<=i;j++)sum+=t[j];t[i]=sum;}f=t[m];}returnOK;}/**********【题目】试编写算法,计算i!×2^i的值并存入数组a[0..n-1]的第i-1个分量中(i=1,2,…,n)。假设计算机中允许的整数最大值为MAXINT,则当对某个k(1≤k≤n)使k!×2^k>MAXINT时,应按出错处理。注意选择你认为较好的出错处理方法。**********/StatusSeries(inta[],intn)/*求i!*2^i序列的值并依次存入长度7、为n的数组a;*//*若所有值均不超过MAXINT,则返回OK,否则OVERFLOW*/{intlast=1;inti;for(i=1;i<=n;i++){a[i-1]=last*2*i;if(a[i-1]>MAXINT)returnOVERFLOW;last=a[i-1];}returnOK;}/**********【题目】假设有A、B、C、D、E五个高等院校进行田径对抗赛,各院校的单项成绩均以存入计算机并构成一张表,表中每一行的形式为:项目名称性别校名成绩得分编写算法,处理上述表格,以统计各院校的男、女总分和团8、体总分,并输出。**********/voidScores(ResultType*result,ScoreType*score)/*求各校的男、女总分和团体总分,并依次存入数组score*//*假设比赛结果已经储存在result[]数组中,*//*并以特殊记录{"",male,'',"",0}(域scorce=0)*//*表示结束*/{inti=0;while(result[i].sport!=NULL){switch(result[i].schoolname)/*使用switch语句记录各院校的成绩*/{case9、'A':score[0].totalscore+=result[i].score;if(result[i].gender==male)score[0].malescore+=result[i].score;elsescore[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;el10、sescore[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;elsescore[2].femalescore+=r
6、sum=0;for(j=i-k;j<=i;j++)sum+=t[j];t[i]=sum;}f=t[m];}returnOK;}/**********【题目】试编写算法,计算i!×2^i的值并存入数组a[0..n-1]的第i-1个分量中(i=1,2,…,n)。假设计算机中允许的整数最大值为MAXINT,则当对某个k(1≤k≤n)使k!×2^k>MAXINT时,应按出错处理。注意选择你认为较好的出错处理方法。**********/StatusSeries(inta[],intn)/*求i!*2^i序列的值并依次存入长度
7、为n的数组a;*//*若所有值均不超过MAXINT,则返回OK,否则OVERFLOW*/{intlast=1;inti;for(i=1;i<=n;i++){a[i-1]=last*2*i;if(a[i-1]>MAXINT)returnOVERFLOW;last=a[i-1];}returnOK;}/**********【题目】假设有A、B、C、D、E五个高等院校进行田径对抗赛,各院校的单项成绩均以存入计算机并构成一张表,表中每一行的形式为:项目名称性别校名成绩得分编写算法,处理上述表格,以统计各院校的男、女总分和团
8、体总分,并输出。**********/voidScores(ResultType*result,ScoreType*score)/*求各校的男、女总分和团体总分,并依次存入数组score*//*假设比赛结果已经储存在result[]数组中,*//*并以特殊记录{"",male,'',"",0}(域scorce=0)*//*表示结束*/{inti=0;while(result[i].sport!=NULL){switch(result[i].schoolname)/*使用switch语句记录各院校的成绩*/{case
9、'A':score[0].totalscore+=result[i].score;if(result[i].gender==male)score[0].malescore+=result[i].score;elsescore[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;el
10、sescore[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;elsescore[2].femalescore+=r
此文档下载收益归作者所有