预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共108页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第一章绪论 1.16 voidprint_descending(intx,inty,intz)// 按从大到小顺序输出三个数 { scanf("%d,%d,%d",&x,&y,&z); if(x<y)x<->y;//<->为表示交换的双目运算符,以下同 if(y<z)y<->z; if(x<y)x<->y;//冒泡排序 printf("%d%d%d",x,y,z); }//print_descending 1.17 Statusfib(intk,intm,int&f)//求k阶斐波那契序列的第m项的值f { inttempd; if(k<2||m<0)returnERROR; if(m<k-1)f=0; elseif(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++)//求出序列第k至第m个元素的值 { sum=0; for(j=i-k;j<i;j++)sum+=temp[j]; temp[i]=sum; } f=temp[m]; } returnOK; }//fib 分析:通过保存已经计算出来的结果,此方法的时间复杂度仅为O(m^2).如果采用递归编程(大多数人都会首先想到递归方法),则时间复杂度将高达O(k^m). 1.18 typedefstruct{ char*sport; enum{male,female} gender; charschoolname;//校名为'A','B','C','D'或'E' char*result; intscore; }resulttype; typedefstruct{ intmalescore; intfemalescore; inttotalscore; }scoretype; voidsummary(resulttyperesult[])//求各校的男女总分和团体总分,假设结果已经储存在result[]数组中 { scoretypescore; i=0; while(result[i].sport!=NULL) { switch(result[i].schoolname) { case'A': score[0].totalscore+=result[i].score; if(result[i].gender==0)score[0].malescore+=result[i].score; elsescore[0].femalescore+=result[i].score; break; case'B':score.totalscore+=result[i].score; if(result[i].gender==0)score.malescore+=result[i].score; elsescore.femalescore+=result[i].score; break; ……………… } i++; } for(i=0;i<5;i++) { printf("School%d:\n",i); printf("Totalscoreofmale:%d\n",score[i].malescore); printf("Totalscoreoffemale:%d\n",score[i].femalescore); printf("Totalscoreofall:%d\n\n",score[i].totalscore); } }//summary 1.19 Statusalgo119(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 分析:当某一项的结果超过了maxint时,它除以前面一项的商会发生异常. 1.20 voidpolyvalue() { floatad; float*p=a; printf("Inputnumberofterms:"); scanf("%d",&n); printf("Inputthe%dcoefficientsfroma0toa%d:\n",n,n); for(i=0;i<=n;i++)scanf("%f",p++); printf("Inputvalueofx:"); scanf("%f",&x); p=a;xp=1;sum=0;//xp用于存放x的i次方 for(i=0;i<=n;i++) { sum+=xp*(*p++); xp*=x; } print