| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1170 人关注过本帖
标题:帮我看哪错了?多项式问题
只看楼主 加入收藏
jfckpep
Rank: 1
等 级:新手上路
帖 子:40
专家分:2
注 册:2010-4-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
帮我看哪错了?多项式问题
#include <stdio.h>
#include <stdlib.h>

struct Node
{
    float coef;
    int expn;
    struct Node *next;
}Link;

struct Node *Makenode(struct Node *head)
{
    float coef;
    int expn;
    struct Node *p=NULL;
    struct Node *L=head;
    p=(struct Node*)malloc(sizeof(Link));
    if(!p)
    {
        printf("分配内存失败!\n");
        exit(0);
    }
    if(head = NULL)
        head=p;
    else
    {
        while(L)
        {
            L=L->next;
        }
        p->next=L;
        L=p;
    }
    printf("请输入系数:");
    scanf("%f",&coef);
    //printf("\n");
    printf("请输入指数:");
    scanf("%d",&expn);
    printf("\n");
    p->coef=coef;
    p->expn=expn;
    return head;
}
void printpoly(struct Node *head)
{
    struct Node *p=head;
    p=p->next;
    while(p)
    {
//        p=p->next;
        printf("%fX^%d",p->coef,p->expn);
        p=p->next;
    }
}


main()
{
    int n,i;
    struct Node *head=NULL;
    printf("请输入项数:");
    scanf("%d",&n);
    printf("\n");
    for(i=1;i<=n;i++)
    {
        printf("输入第%d项的数据\n",i);
        head=Makenode(head);
    }
    printpoly(head);
}
搜索更多相关主题的帖子: 多项式 
2010-04-29 23:53
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
if(head == NULL)
        head=p;

void printpoly(struct Node *head)
{
    struct Node *p=head;
    p=p->next;  这句注释掉
    while(p)
收到的鲜花
  • jfckpep2010-04-30 10:40 送鲜花  3朵  
2010-04-30 07:32
jfckpep
Rank: 1
等 级:新手上路
帖 子:40
专家分:2
注 册:2010-4-25
收藏
得分:0 
为什么这样改?,“=”不是表示空么,p=p->next 如果不去掉会有什么影响呢?
2010-04-30 09:16
xichong
Rank: 7Rank: 7Rank: 7
来 自:四川南充
等 级:黑侠
威 望:2
帖 子:146
专家分:582
注 册:2009-6-10
收藏
得分:10 
if语句中采用的是逻辑表达式,==才是逻辑表达式,=是赋值表达式,两者是不一样的
收到的鲜花
  • jfckpep2010-04-30 10:40 送鲜花  3朵  
2010-04-30 09:26
xichong
Rank: 7Rank: 7Rank: 7
来 自:四川南充
等 级:黑侠
威 望:2
帖 子:146
专家分:582
注 册:2009-6-10
收藏
得分:0 
p=p->next 如果不去掉会有什么影响呢? 那就要看你创建的链表中头结点中是否有值了,如果有,则要去掉,循环第一次就要输出头结点中数据域中的值!
收到的鲜花
  • jfckpep2010-04-30 10:41 送鲜花  3朵  
2010-04-30 09:31
jfckpep
Rank: 1
等 级:新手上路
帖 子:40
专家分:2
注 册:2010-4-25
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>

struct Node
{
    float coef;
    int expn;
    struct Node *next;
}Link;

struct Node *Makenode(struct Node *head)
{
    float coef;
    int expn;
    struct Node *p;
    struct Node *L=head;
    p=(struct Node*)malloc(sizeof(Link));
    if(!p)
    {
        printf("分配内存失败!\n");
        exit(0);
    }
    if(head == NULL)
        head=p;
    else
    {
        while(L->next!=NULL)
        {
            L=L->next;
        }
        L->next=p;
//        L=p;
    }
    L=p;
    printf("请输入系数:");
    scanf("%f",&coef);
    //printf("\n");
    printf("请输入指数:");
    scanf("%d",&expn);
    printf("\n");
    p->coef=coef;
    p->expn=expn;
    L->next = NULL;
    return head;
}
void printpoly(struct Node *head)
{
    float coef;
    int expn;
    struct Node *p=head;
//    p=p->next;
    printf("f(x)=");
    while(p)
    {
        printf("%.3fX^%d",p->coef,p->expn);
        if(p->next!=NULL)
        {
            if(p->next->coef>0)
                printf("+");
        }
        p=p->next;
    }
}
struct Node *fluxion(struct Node *headp,struct Node *headf)
{
    struct Node *p=headp;
    while(p->next!=NULL)
    {
        struct Node *f=headf;
        struct Node *temp;
        temp=(struct Node *)malloc(sizeof(Link));
        if(!temp)
        {
            printf("分配内存失败!\n");
            exit(0);
        }
        if(headf==NULL)
            headf=temp;
        else
        {
            while(f->next!=NULL)
            {
                f=f->next;
            }
            f->next=temp;
        }
        f=temp;
        temp->coef=(p->coef)*(p->expn);
        temp->expn=p->expn-1;
        f->next=NULL;
        p=p->next;
    }
    return headf;
}
main()
{
    int n,i;
    struct Node *head=NULL;
    struct Node *headf=NULL;
    printf("请输入项数:");
    scanf("%d",&n);
    printf("\n");
    for(i=1;i<=n;i++)
    {
        printf("输入第%d项的数据\n",i);
        head=Makenode(head);
    }
    printpoly(head);
    printf("\n");

    fluxion(headl);
    printf("\n");
   
}
为什么调用了fluxion函数,却没结果输出?
2010-04-30 10:46
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
struct Node *fluxion(struct Node *headp,struct Node *headf)

fluxion(headl);

难道编译器没有报错?
2010-04-30 16:48
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
struct Node *head=NULL;
struct Node *headf=NULL;
headl 都没有定义
2010-04-30 16:50
jfckpep
Rank: 1
等 级:新手上路
帖 子:40
专家分:2
注 册:2010-4-25
收藏
得分:0 
啊,不好意思,发贴时弄错了,原来是这样的:
fluxion(head,headf);
printpoly(headf);
2010-04-30 18:49
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:10 
不明白的地方自己一定要去好好地思考一番
 实在搞不懂 在去请教  这样自己才能更加有体会 明白的更透彻

不然 自己只会惯性提问 碰到不清楚的时候
收到的鲜花
  • jfckpep2010-04-30 20:37 送鲜花  3朵   附言:我很赞同
2010-04-30 19:11
快速回复:帮我看哪错了?多项式问题
数据加载中...
 
   



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

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