c-我刚刚入门,写一个一元多项式的简单计算,求帮忙解决这个加减问题,代码如下,帮忙找出错误,急急急

问题描述

我刚刚入门,写一个一元多项式的简单计算,求帮忙解决这个加减问题,代码如下,帮忙找出错误,急急急

#include
#include
typedef struct node
{
float c;
int e;
struct node * next;
}lnode,*plnode;
void insert_menu();
void insert_pol(plnode &l);
void output_pol(plnode &l);
void add_pol(plnode list1, plnode list2);
void sub_pol(plnode list1, plnode list2);
void main()
{
plnode A,B,l;
int n;
A=(plnode)malloc(sizeof(lnode));
B=(plnode)malloc(sizeof(lnode));
l=(plnode)malloc(sizeof(lnode));
while(1)
{
insert_menu();
printf("输入你要选择的操作:");
do
{
scanf("%d",&n);
getchar();
if(n7)
printf("不存在该操作n请重新输入你要选择的操作:");
}while(n7);
switch(n)
{
case 1:insert_pol(A);break;
case 2:insert_pol(B);break;
case 3:output_pol(A);break;
case 4:output_pol(B);break;
case 5:add_pol(A,B);break;
case 6:sub_pol(A,B);break;
case 7:exit(0);
}
}
}
void insert_menu()
{
printf("**********************主菜单*********************n");
printf(" 1、输入并建立多项式 An");
printf(" 2、输入并建立多项式 Bn");
printf(" 3、输出多项式 An");
printf(" 4、输出多项式 Bn");
printf(" 5、两个多项式相加,输出结果多项式n");
printf(" 6、两个多项式相减,输出结果多项式n");
printf(" 7、退出程序n");
printf("*************************************************n");
}
void insert_pol(plnode &l)
{
plnode s,p;
int i,n;
l=(plnode)malloc(sizeof(lnode));
l->next=NULL;
p=l;
printf("请输入多项式项数:");
scanf("%d",&n);
system("cls");
for(i=0;i
{
s=(plnode)malloc(sizeof(lnode));
printf("请依次输入多项式第%d项的系数和指数:n",i+1);
scanf("%f %d",&s->c,&s->e);
s->next = NULL;

p->next = s;

p = s;

}
system("cls");
}
void output_pol(plnode &l)
{

plnode p,s1,s2,b;
b=(plnode)malloc(sizeof(lnode));
p = l->next;
s1=p;
s2=p->next;
if (p==NULL)
{
printf("P(x,n)=0");
}
printf("P(x,n)=");
for(s1=p;s1!=NULL;s1=s1->next)
{
for(s2=s1->next;s2!=NULL;s2=s2->next)
{
if(s1->e > s2->e)
{
b->e=s1->e;
s1->e=s2->e;
s2->e=b->e;
b->c=s1->c;
s1->c=s2->c;
s2->c=b->c;
}
}
}
while (p)

{

printf("%f*X^%d",p->c,p->e);
p = p->next;

if(p != NULL)
printf("+");
}
printf("n");
}
void add_pol(plnode list1, plnode list2)
{
plnode p,a,b;
p=(plnode)malloc(sizeof(lnode));
for(a=list1->next;a!=NULL;a=a->next)
for(b=list2;b->next!=NULL;b=b->next)
{
if(a->e == b->next->e)
{
a->c=a->c+b->next->c;
p=b->next;
b->next=p->next;
free(p);
}
}
while(1)
{
if(a->next==NULL)
{
a->next=b->next;break;
}
a=a->next;
}
output_pol(a);
}
void sub_pol(plnode list1, plnode list2)
{
plnode p,a,b,q;
p=(plnode)malloc(sizeof(lnode));
for(a=list1;a->next!=NULL;a=a->next)
for(b=list2;b->next!=NULL;b=b->next)
{
if(a->next->e == b->next->e)
{
a->next->c=a->next->c-b->next->c;
if(a->next->c==0)
{
q=a->next;
a->next=q->next;
free(q);
}
p=b->next;
b->next=p->next;
free(p);
}
}
while(1)
{
if(a->next==NULL)
{
a->next=b->next;break;
}
a=a->next;
}
while(b->next)
{
b->next->c=-b->next->c;
b=b->next;
}
output_pol(a);
}

解决方案

 for(a=list1->next;a!=NULL;a=a->next)
for(b=list2;b->next!=NULL;b=b->next)
这里循环不能这么写,得写成
for (a = list1->next, b = list2; a != NULL && b->next != NULL; a = a->next, b = b->next)

解决方案二:

时间: 2024-11-03 06:09:39

c-我刚刚入门,写一个一元多项式的简单计算,求帮忙解决这个加减问题,代码如下,帮忙找出错误,急急急的相关文章

linux-Linux 刚刚入门,很多东西很混乱,求指导

问题描述 Linux 刚刚入门,很多东西很混乱,求指导 刚学linux,求指导.安装的是ubunto 14.04想问一下root身份和一般用户身份在终端怎么区分,为甚么我在终端输入su-命令切换到root身份会提示认证错误.sudo命令在一般用户和root下都可以用吗?谢谢 解决方案 1.ubuntu的GNOME模拟终端默认是会显示"用户名@计算机名:路径$",没显示就看命令符号,#就是root 2.sudo是临时提升用户权限的命令,root用户拥有管理计算机的所有权限,就没有使用的必

自己动手写一个java版简单云相册_java

动手写一个java版简单云相册,实现的功能是: 用户可以一次上传一个至多个文件. 用户可以下载其他人上传的图片. 用户可以查看其他所有人的图片. 用户只能删除通过自己IP上传的图片. 用到的技术: 文件上传下载.设计模式.Dom4j.xPath等. 先看下2个页面: 源代码: web.xml: <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns=

获取ip地址-我写一个自己的简单网站如何获取留言者的IP地址

问题描述 我写一个自己的简单网站如何获取留言者的IP地址 如题,我用VS2010写一个简单的asp.net网页形式的网站,简单的数据库,只需要几个表就行, 其中一个表是用来存储留言者的地址(IP),有没有哪位大虾告诉我一下用什么字段来存储别人的IP地址,还有就是如何读取别人的IP地址, 是用控件?还是用其他方法?

java-在一个3x3的二维矩阵里面随机的用0或1填充,找出该矩阵里面的相同行或者列

问题描述 在一个3x3的二维矩阵里面随机的用0或1填充,找出该矩阵里面的相同行或者列 package exercise_7; public class Exercise7_10 { public static void main(String[] args) { int[][] test = new int[3][3]; for (int i = 0; i < test.length; i++) { for (int j = 0; j < test[i].length; j++) { int

一个实用的ASP分页函数,解决你重复写分页代码的烦恼

   有时候,大家是不是因为写一些重复的代码而感到烦恼呢?由于在做ASP程序时,很多时候都要用到分页,重复作分页程序错误多不说了,而且影响到作程序的积极性,故写一分页函数,方便大家调用.如下:       <%'=================   ProgrammName: 分页函数   ======================='  ================   Programmed  by  Bubuy   ====================='    ========

自写一个模仿Dictionary与Foreach的实现及心得总结_实用技巧

自己写一个类模仿Dictionary实现 a.自定义字典类MyDic 复制代码 代码如下: using System.Collections.Generic; namespace _10_自己写Dictionary { class KeyValuePair { public KeyValuePair() { } public KeyValuePair(string key, string value) { this.key = key; this.value = value; } private

c++-写一个程序,筛选出10到1000的回文数

问题描述 写一个程序,筛选出10到1000的回文数 能不能帮忙看看,c++的,我是学c#的,不太会,做一个源程序 解决方案 #include <stdio.h> int main() { int m,n,k; for(m=1;m<=1000;m++) { k=m; n=0; while(k>0) { n=n*10+(k%10); k=k/10; } if(m==n) printf("%d ", m); } return 0; } 解决方案二: http://co

java类的问题-用java 写一个方法,能够判断任意整数是否是素数

问题描述 用java 写一个方法,能够判断任意整数是否是素数 用java代码写一个方法,能够判断任意整数是否是素数......... 解决方案 public class Num{ public static void main(String args[]){ int m; boolean tag=true; System.out.print("Please enter a num:"); try{ m=(int)System.in.read(); for(int i=m-1;i>

数组 语言-简单的 素数筛选 刚刚入门计蒜客上的一个题目总过不了

问题描述 简单的 素数筛选 刚刚入门计蒜客上的一个题目总过不了 小度机器人最近正在添加功能,Robin希望小度机器人可以告诉他从1到N( 1 < N <= 10000)有多少个素数.请你来帮帮他吧? 输入包括一行,仅一个数字N. 输出在(1, N]区间内的所有的素数. 解决方案 http://www.cnblogs.com/wuzhenbo/archive/2012/04/26/2470357.html 解决方案二: 素数计算再简单不过了,当然你还是最好检查下你的程序.然后看看是不是性能的原因