求c语言程序 一元多项式
发布网友
发布时间:2022-05-15 11:46
我来回答
共3个回答
热心网友
时间:2023-08-03 10:43
哈哈,我今天开会的时候写的
没有来的急看你给的
typedef struct Node
{ float coef; /*系数域*/
int exp; /*指数域*/
struct Node *next; /*指针域*/
} PloyNode
不过,我觉得我设计的结构体在很多问题的处理上比你的要方便的多
还有,我还没有来得急调试
还有一个加的我没有时间写了
你自己改改改,可以么?
另外说一下<stdlib.h>在有的TC编译器里只承认<malloc.h>
呵呵,记得帮我把分加上,如果有什么问题就发到我邮箱里
我明天要去我哥哥家,所以这两天没有时间帮你了
#include <stdlib.h>
#include <math.h>
#define null 0
#define len sizeof(struct xiang)
struct xiang{
float xs;
int n;
char c;
struct xiang *next;}
/*shengcheng*/
struct xiang * link(){
struct xiang *head;
struct xiang *p1,*p2;
int n=0;
p1=p2=(struct xiang *)malloc(len);
scanf("%fx^%d%c",&p1->xs,&p1->n,&p1->c);
head=null;
while(p->c!='#'){
n=n+1;
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
p1=(struct xiang *)malloc(len);
scanf("%fx^%d%c",&p1->xs,&p1->n,&p1->c);
}
p2->next=null;
return (head);
}
/*df*/
struct xiang *df(struct xiang *p){
struct xiang *head;
struct xiang *p1,p2;
int n=0;
p1=p2=(struct xiang *)malloc(len);
p1->xs=p->xs*p->n;
p1->n=p->n-1;
head=null;
while(p->next!=null){
n=n+1;
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
p1=(struct xiang *)malloc(len);
p1->xs=p->xs*p->n;
p1->n=p->n-1;
p=p->next;
if(p1->n<0){
p2->next=null; break;}
}
p2->next=null;
return(head);
}
/*f(x)*/
float struct fun(xiang *p,float x){
float y;
struct xiang *p1;
y=p->xs*pow(x,p->n);
p1=p;
while(p->next!=null){
p=p->next;
if(p1->c=='+') y=y+p->xs*pow(x,p->n);
if(p1->c=='-') y=y-p->xs*pow(x,p->n);
p1=p; }
return y;}
/*ouput*/
void print(struct xiang *p){
printf("=%.3fx^%d",p->xs,p->n);
while(p->next!=null){
if(p->c=='+') printf("+");
if(p->c=='-') printf("-");
p=p->next;
printf("=%.3fx^%d",p->xs,p->n);}
/*del*/
void del(struct xiang *p){
struct xiang *p1=p;
if(p==null) return;
do{
p=p->next;
free(p1);
p1=p;}while(p->next!=null);
free(p);
}
}
/*main*/
main(){
float x,y,dy;
struct xiang *f,*df;
f=null;
df=null;
printf("shu ru o xiangshi \nf(x)=");
f=link();
printf("shurude shi:\nf(x)=");
print(f);
printf("shu shi:\nf'(x)=");
df=df(f);
print(df);
printf("qing shu ru yige x=");
scanf("%f",&x);
y=fun(f,x);
dy=fun(df,x);
printf("f(%.3f)=%.3f\ndf(%.3f)=%.3f\n",x,y,x,dy);
del(f);
del(df);
}
热心网友
时间:2023-08-03 10:44
一元多项式.....你这可包括了差不多所有的一元多项式了。要写成千上万个函数来实现。要是简单的到立方还好说,要是加上求导10次方就真的要写n多函数了。有点不太现实
热心网友
时间:2023-08-03 10:44
仔细想想方法和种类很多.
简单点的,
可以用数组解决,
也可以用链表的方法解决.
优缺点,你自己考虑一下。你是程序更适合那种!!