| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 674 人关注过本帖
标题:谁帮我测试下这个代码找出为什么结果会那样
取消只看楼主 加入收藏
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
结帖率:96.15%
收藏
已结贴  问题点数:20 回复次数:6 
谁帮我测试下这个代码找出为什么结果会那样
//*两个多项式的输入必须依照幂次数的升序依次输入,并且没有常数项*//
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LENTH sizeof(struct  Polyfactor)
  //*构造多项式因子的结构体*//
typedef struct Polyfactor                     
{
//*声明多项式因子的系数*//
 int coeff;
 //*多项式因子的幂次数*//
 int power;   
 //*用于指向下一个多项式因子的指针*//
 struct Polyfactor *next;      
}Factor;              
//*建立链表存储多项式函数*//
Factor *createpolyn(Factor *head)     
{
    //*设置两个指针用于创建链表*//
    Factor *p1=0;                 
    Factor *p2=0;
    int m=0;
    int n=0;
    //*当输入是q时多项式输入结束*//
    do                  
    {
        printf("请输入多项式因子的系数:");         
         scanf("%d",&m);
         printf("请输入多项式因子的幂次数:");
         scanf("%d",&n);
        if(head==0)
         {
            p1=(Factor*)malloc(LENTH);
            if(p1==0)
            {
                exit(0);
            }
            head=p1;
            p2=p1;
        }
        else
         {
            p1=(Factor*)malloc(LENTH);   
            if(p1==0)
            {
            exit(0);
            }
            else
            {
             p2->next=p1;
             p2=p1;
            }
            p2->coeff=m;
            p2->power=n;
        }
   
    }while(m!=0&&n!=0);
    p2->next=0;
    return head;
}     //*多项式的输入*//
//*对链表进行插入,其中p3指向P1的前驱*//
Factor *addpolyn(Factor *head,Factor *p1,Factor *p2,Factor *p3)   
{
//p1所指向的链表结点为尾结点时,并且P2没有指向链表尾结点*//
 if(p1->power==0&&p1->coeff==0)
 {
     p1->power=p2->power;
     p1->coeff=p2->coeff;
     p1->next=p2->next;
     return head;
 }
 //p1所指向的链表结点的幂次数比p2的小时,将p2插入p1后*//
 if(p1->power<p2->power)
 {
     if(p3==p1)
     {
         head=p2;
         p2->next=p1;
         return head;
     }
     else
     {
         p2->next=p1->next;
         p1->next=p2;
     }
 }
//p1所指向的链表结点的幂次数比p2的大时,将p2插入p1前*//
 else
 {
        p2->next=p1;
        p3->next=p2;
 }
 return head;
 
 }
 //*对链表进行删除,其中P3指向要删除点的前驱*//
Factor *delpolyn(Factor *head,Factor *p1,Factor *p3)
{
//*把要删除点的后继赋值给删除点的前驱的后继*//
 p3->next=p1->next;
 return head;
}
int main()
{   
 Factor *p=0,*p1=0,*p2=0,*p3=0;
 Factor *head1=0,*head2=0;
 Factor *createpolyn(Factor *head1);
 Factor *addpolyn(Factor *head,Factor *p1,Factor *p2,Factor *p3);
 Factor *delpolyn(Factor *head,Factor *p1,Factor *p3);
//*创建两个链表分别把两个头指针赋值给head1和head2*//
 head1=p1=createpolyn(head1);
 head2=p2=createpolyn(head2);
 p3=p1;
    do
 {
//*两个多项式因子的幂次数相同*//
  if(p1->power==p2->power)
  {
     if(p1->coeff==-p2->coeff)                       
     {
           head1=delpolyn(head1,p1,p3);           
     }
     else
     {
      p1->coeff+=p2->coeff;
     }
  }
  //*两个多项式的幂次数不同*//
  else                                          
  {
   head1=addpolyn(head1,p1,p2,p3);
  }
  p3=p1;
  p1=p1->next;
  p2=p2->next;
 }while(p1&&p2);
//*当两个链表都还没指向链表结尾时*//
 while(p2)
 {
  head1=addpolyn(head1,p1,p2,p3);            
 }
 p=head1;
 printf("所得的多项式:\n");
 do
 {
  printf("%dX^%d",p->coeff,p->power);
  printf("+");
  p=p->next;
//*输出所得多项式的结果*//
 }while(p);   
 return 0;
}

 
         谁帮我测试下看下结果为什么会那样?

[ 本帖最后由 清风拂晓 于 2010-10-21 19:19 编辑 ]
搜索更多相关主题的帖子: 代码 结果 
2010-10-20 22:51
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
领分

清风拂暮(木)
2010-10-20 22:51
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
你还没帮我 就叫我给分

清风拂暮(木)
2010-10-20 23:04
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
你何必对分数那么执着

清风拂暮(木)
2010-10-20 23:11
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
水母 要断电了 明天晚上在来看看 希望有答案了

清风拂暮(木)
2010-10-20 23:26
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
悲剧还是没人来帮我看看啊

清风拂暮(木)
2010-10-21 19:13
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
谢谢啊 我又发现了一些问题出错在哪里了 我再想想怎么解决

清风拂暮(木)
2010-10-21 20:24
快速回复:谁帮我测试下这个代码找出为什么结果会那样
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013090 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved