| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1161 人关注过本帖
标题:这个程序为什么输入第一个数字后就提示已123.exe(我的程序名)停止工作?
只看楼主 加入收藏
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
结帖率:96.15%
收藏
已结贴  问题点数:20 回复次数:10 
这个程序为什么输入第一个数字后就提示已123.exe(我的程序名)停止工作?
//*两个多项式的输入必须依照幂次数的升序依次输入*//
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LENTH sizeof(struct  Polyfactor)  
#define NULL 0
typedef struct Polyfactor                       //*构造多项式因子*//
{
    int coeff;                        //*多项式因子的系数*//
    int power;                       //*多项式因子的幂次数*//
    struct Polyfactor *next;       //*用于指向下一个多项式因子的指针*//
};              

struct Polyfactor *createpolyn(struct Polyfactor *head)     //*建立链表存储多项式*//
{
 struct Polyfactor *p1=NULL;                 //*设置两个指针用于创建链表*//
 struct Polyfactor *p2=NULL;
 int m=0;
 int n=0;
 while(m!='q'&&n!='q')                   //*当输入不是数字时多项式输入结束*//
 {
     printf("请输入多项式因子的系数:");         
     scanf("%d\n",m);
     printf("请输入多项式因子的幂次数:");
     scanf("%d\n",n);
     if(head=NULL)
     {
      p1=(struct Polyfactor*)malloc(LENTH);
      if(p1==NULL)
      {exit(0);}
      head=p1;
      p2=p1;
     }
     else
     {
      p1=(struct Polyfactor*)malloc(LENTH);
      if(p1==NULL)
        {exit(0);}
      else
      {
       p2->next=p1;
       p2=p1;
      }
       p2->coeff=m;
      p2->power=n;
     }
 }                            //*多项式的输入*//
 return head;
}
struct Polyfactor *addpolyn(struct Polyfactor *head,struct Polyfactor *p1,struct Polyfactor *p2,struct Polyfactor *p3)    //*对链表进行插入,其中p3指向P1的前驱*//
{
    if(p1->power<p2->power)                   //p1所指向的链表结点的幂次数比p2的小时,将p2插入p1后*//
    {
        p2->next=p1->next;
        p1->next=p2;
    }
    else                                      //p1所指向的链表结点的幂次数比p2的大时,将p2插入p1前*//
    {
        p2->next=p1;
        p3->next=p2;
    }
    return head;
 
 }
struct Polyfactor *delpolyn(struct Polyfactor *head,struct Polyfactor *p1,struct Polyfactor *p3)               //*对链表进行删除,其中P3指向要删除点的前驱*//
{
    p3->next=p1->next;                                     //*把要删除点的后继赋值给删除点的前驱的后继*//
    return head;
}
void main()
{
    struct Polyfactor *p,*p1,*p2,*p3=NULL;
    struct Polyfactor *head1=NULL,*head2=NULL;
    struct Polyfactor *createpolyn(struct Polyfactor *head1);
    struct Polyfactor *addpolyn(struct Polyfactor *head,struct Polyfactor *p1,struct Polyfactor *p2,struct Polyfactor *p3);
    struct Polyfactor *delpolyn(struct Polyfactor *head,struct Polyfactor *p1,struct Polyfactor *p3);
    head1=p1=createpolyn(head1);                   //*创建两个链表分别把两个头指针赋值给head1和head2*//
    head2=p2=createpolyn(head2);
    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;
    do
    {
        printf("%dX^%d",p->coeff,p->power);
        printf("+");
        p=p->next;
    }while(p);                                    //*输出所得多项式的结果*//
}
这个程序为什么输入第一个数字后就提示已123.exe(我的程序名)停止工作?
搜索更多相关主题的帖子: 数字 提示 输入 
2010-10-17 18:53
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
哪位高手帮忙解决下

清风拂暮(木)
2010-10-17 20:17
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:0 
while(m!='q'&&n!='q')  明明m n 是整形怎么不等于字符型啊

If You Want Something, Go Get It, Period.
2010-10-17 22:08
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
这个。。。没注意 不过这个地方如果直接1的话 也是出现问题

清风拂暮(木)
2010-10-17 22:10
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
对了 那个可以看做是用ACII码?

清风拂暮(木)
2010-10-17 22:12
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:0 
scanf("%d\n",m);
改为
scanf("%d",&m);
 else                                      //p1所指向的链表结点的幂次数比p2的大时,将p2插入p1前*//
    {
要申请内存  p2=(struct Polyfactor*)malloc(LENTH);

        p2->next=p1;
        p3->next=p2;
    }




If You Want Something, Go Get It, Period.
2010-10-17 22:24
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:0 
回复 5楼 清风拂晓
按你这么说,终止循环还要找p,q 的ASIIC码啊

If You Want Something, Go Get It, Period.
2010-10-17 22:26
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
那个p2我已经直接用参数传过来的应该不需要再申请内存了吧?

清风拂暮(木)
2010-10-17 22:28
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
还有我把那个输入的函数,后面的改好了  但结果  提示字出现后 我输入数字 要输入2个数才能出现第2个提示 而且第二个一要输入就又提示程序已关闭了

清风拂暮(木)
2010-10-17 22:32
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
那个地方我想在能想到的就是把M和N变成字符串型的 判断循环的时候M和N还是字符 但判断可以循环后里面用一个函数把字符串变成整数 ,再把整形又编程字符串形  这样感觉复杂了点

清风拂暮(木)
2010-10-17 22:37
快速回复:这个程序为什么输入第一个数字后就提示已123.exe(我的程序名)停止工 ...
数据加载中...
 
   



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

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