y;//<->为表示交换的双目运算符"> y;//<->为表示交换的双目运算符" />
欢迎来到天天文库
浏览记录
ID:58470
大小:281.00 KB
页数:96页
时间:2017-05-06
《严蔚敏C语言版《数据结构》习题集答案.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第一章绪论1.16voidprint_descending(intx,inty,intz)//按从大到小顺序输出三个数{ scanf("%d,%d,%d",&x,&y,&z); if(xy;//<->为表示交换的双目运算符,以下同 if(yz; if(xy;//冒泡排序 printf("%d%d%d",x,y,z);}//print_descending1.17Statusfib(intk,intm,int&f)//求k阶斐波那契序列的第m项的值f
2、{ inttempd; if(k<2
3、
4、m<0)returnERROR; if(m5、6、m==k)f=1; else { for(i=0;i<=k-2;i++)temp[i]=0; temp[k-1]=1;temp[k]=1;//初始化 sum=1; j=0; for(i=k+1;i<=m;i++,j++)//求出序列第k至第m个元素的值 temp[i]=2*sum-temp[j]; f=temp[m]; } return7、OK;}//fib分析:k阶斐波那契序列的第m项的值f[m]=f[m-1]+f[m-2]+......+f[m-k] =f[m-1]+f[m-2]+......+f[m-k]+f[m-k-1]-f[m-k-1] =2*f[m-1]-f[m-k-1]所以上述算法的时间复杂度仅为O(m).如果采用递归设计,将达到O(k^m).即使采用暂存中间结果的方法,也将达到O(m^2). 1.18typedefstruct{ char*sport; 8、 enum{male,female}gender; charschoolname;//校名为'A','B','C','D'或'E' char*result; intscore; }resulttype;typedefstruct{ intmalescore; intfemalescore; inttotalscore;9、 }scoretype;voidsummary(resulttyperesult[])//求各校的男女总分和团体总分,假设结果已经储存在result[]数组中{ scoretypescore[MAXSIZE]; i=0; while(result[i].sport!=NULL) { switch(result[i].schoolname) { case'A': score[0].totalscore+=result[i].score; if10、(result[i].gender==0)score[0].malescore+=result[i].score; elsescore[0].femalescore+=result[i].score; break; case'B': score[0].totalscore+=result[i].score; if(result[i].gender==0)score[0].malescore+=result[i].score; elsescore11、[0].femalescore+=result[i].score; break; …… …… …… } i++; } for(i=0;i<5;i++) { printf("School%d:",i); printf("Totalscoreofmale:%d",score[i].malescore); printf("Totalscoreoffemale:%d",score[i].femalescore); printf("Totalscoreofal12、l:%d",score[i].totalscore); }}//summary1.19Statusalgo119(inta[ARRSIZE])//求i!*2^i序列的值且不超过maxint{ last=1; for(i=1;i<=ARRSIZE;i++) { a[i-1]=last*2*i; if((a[i-1]/last)!=(2*i))reurnOVERFLOW; last=a[i-1]; returnOK; }}//algo119分析:
5、
6、m==k)f=1; else { for(i=0;i<=k-2;i++)temp[i]=0; temp[k-1]=1;temp[k]=1;//初始化 sum=1; j=0; for(i=k+1;i<=m;i++,j++)//求出序列第k至第m个元素的值 temp[i]=2*sum-temp[j]; f=temp[m]; } return
7、OK;}//fib分析:k阶斐波那契序列的第m项的值f[m]=f[m-1]+f[m-2]+......+f[m-k] =f[m-1]+f[m-2]+......+f[m-k]+f[m-k-1]-f[m-k-1] =2*f[m-1]-f[m-k-1]所以上述算法的时间复杂度仅为O(m).如果采用递归设计,将达到O(k^m).即使采用暂存中间结果的方法,也将达到O(m^2). 1.18typedefstruct{ char*sport;
8、 enum{male,female}gender; charschoolname;//校名为'A','B','C','D'或'E' char*result; intscore; }resulttype;typedefstruct{ intmalescore; intfemalescore; inttotalscore;
9、 }scoretype;voidsummary(resulttyperesult[])//求各校的男女总分和团体总分,假设结果已经储存在result[]数组中{ scoretypescore[MAXSIZE]; i=0; while(result[i].sport!=NULL) { switch(result[i].schoolname) { case'A': score[0].totalscore+=result[i].score; if
10、(result[i].gender==0)score[0].malescore+=result[i].score; elsescore[0].femalescore+=result[i].score; break; case'B': score[0].totalscore+=result[i].score; if(result[i].gender==0)score[0].malescore+=result[i].score; elsescore
11、[0].femalescore+=result[i].score; break; …… …… …… } i++; } for(i=0;i<5;i++) { printf("School%d:",i); printf("Totalscoreofmale:%d",score[i].malescore); printf("Totalscoreoffemale:%d",score[i].femalescore); printf("Totalscoreofal
12、l:%d",score[i].totalscore); }}//summary1.19Statusalgo119(inta[ARRSIZE])//求i!*2^i序列的值且不超过maxint{ last=1; for(i=1;i<=ARRSIZE;i++) { a[i-1]=last*2*i; if((a[i-1]/last)!=(2*i))reurnOVERFLOW; last=a[i-1]; returnOK; }}//algo119分析:
此文档下载收益归作者所有