试题3(1999级试题5).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
试题3(1999级试题5).doc

试题3(1999年5) C代n) [程序] 本程序 ? [程序] #include stdio.h #include malloc.h typedef struct elem{int index;double coef;struct elem *next }POLYNODE; void write(POLYNODE *g) { POLYNODE *p=g; while(p){ printf(%8.4f,p-coef); if(p-index) printf(*^%d,p-index); if(p-next p-next-coef0) printf(+); p = p-next; } printf(\n\n); } main() { POLYNODE *f,*g,*s,*inpoly(),*polymul(); f=inpoly();g=inpoly();s=polymul(f,g);write(); } POLYNODE *reverse(POLYNODE *g) { POLYNODE *u=NULL,*v=g,*w; while(v){ w=v-next;v-next=u;u=v;v=w;} return u; } POLYNODE *polymul(POLYNODE *f, POLYNODE *g) { POLYNODE *fp,*gp,*tail,*p=NULL,*q; int i,maxindex; double temp; maxindex = f-index+g-index; g=reverse(g); for(i=maxindex;i=0;i--){ fp=f;gp=s; while(fp!=NULL fp-indexi) fp = fp-next; while(gp!=NULL gp-indexi-fp-index) gp = gp-next; temp = 0.0; while(fp gp) if(fp-index + gp-index ==i){ temp +=fp-coef*gp-coef; fp=fp-next; gp=gp-next; else if( (1) ) fp=fp-next; else gp=gp-next; if(temp!=0.0){ q=( POLYNODE*)malloc(sizeof(POLYNODE)); q-index=i; q-coef=temp; q-next=NULL; if( (2) ) p=q; else (3) ; tail =q; } } g=reverse(g); return p; } POLYNODE *inpoly() { POLYNODE *u,*v,*h=NULL,*p; int index; double coef; printf(Input index(0 for finish)); scanf(%d,index); while(index =0){ printf(input coef); scanf(%lf,coef); p=( POLYNODE*)malloc(sizeof(POLYNODE)); p-index=index; p-coef = coef; v=h; while(v!=NULL indexv-index) { nu=v;v=v-next;} if(v==NULL || index v-index) { p-next=v; if(v==h) (4) ;else (5) ;} else v-coef +=coef; printf(Input index( 0 for finish)); scanf(%d,index); } return h; } [解析] 这道试题看起来很麻烦,其实不然,程序中科学地使用3函inpoly()完成polymul()完成 先看函inpoly(),它在returnu;完成回送返回值的操作,所以要特h的操作。 一直到p-coef;是完成一v=h,因v=NULL,所以v是否NULL的判v和h的 接下indexv-index这个循环条件的含义,就不难确定这是在v= =NULL的v= =NULL又代表什么?v= =NULL有1、第一次2、在 有了以上的理解,不难确定,以下if-else体中indexv-index的含而v-coef +=coef则是完成在指数相等时的系数相加。仔细研究if-else体中的if部分,不 先考p-next = v;使p-next置空。填空(4)5)的v=h;和其后的循4)中要h,否while循4)的h=p。 基于上述的分析,不5)p-next =v;,u-next=p就可以完成任 现在回到函数polymul。首先,程序取reverse()将链表g反g的各reverse

文档评论(0)

liuxiaoyu99 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档