一元多次函数相加减c语言 两整数相加减c语言

C语言:用单链表实现任意两个一元多项式的加、减法运算

#include stdio.h

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、网站空间、营销软件、网站建设、香洲网站维护、网站推广。

#include stdlib.h

#include string.h

#define N 7

typedef enum { add, nul, sub, div1, yu, l, r }OP;

int a[N][N] = {

{ 0, 0, -1, -1, -1, 1, 2 },

{ 0, 0, -1, -1, -1, 1, 2 },

{ 1, 1, 0, 0, 0, 1, 2 },

{ 1, 1, 0, 0, 0, 1, 2 },

{ 1, 1, 0, 0, 0, 1, 2 },

};

int top;

OP beg;

int b[1024];

OP op[1024];

void init_nu( ){ top = 0; }

void push_nu( int term ){ b[top++] = term; }

int pop_nu( ){ return b[--top]; }

int is_empty_nu( ){ return top == 0; }

void destory_nu( ) { top = 0; }

void init_sign( ){ beg = 0; }

void push_sign( OP sign ){ op[beg++] = sign; }

void destory_sign( ){ beg = 0; }

OP pop_sign( ){ return op[--beg];}

OP get_sign( ){ return op[beg - 1]; }

int is_empty_sign( ){return beg == 0; }

int eval()

{

int i, j;

i = pop_nu();

j = pop_nu();

switch( pop_sign() )

{

case '+': push_nu( j + i ); break;

case '-': push_nu( j - i ); break;

case '*': push_nu( j * i ); break;

case '/': push_nu( j / i ); break;

case '%': push_nu( j i ); break;

defult: break;

}

}

int change( char *s )

{

int i;

int n = strlen( s );

for( i = 0; i n; i++ )

{

if( s[i] = '0' s[i] = '9' )

push_nu( 0 );

while( s[i] = '0' s[i] = '9' )

push_nu( 10 * pop_nu() + s[i++] - '0' );

switch( s[i] )

{

case '+': while( a[add][get_sign()] = 0 )

eval();

push_sign( add ); break;

case '-': while( a[nul][get_sign()] = 0 )

eval();

push_sign( nul ); break;

case '*': while( a[sub][get_sign()] = 0 )

eval();

push_sign( sub ); break;

case '/': while( a[div1][get_sign()] = 0 )

eval();

push_sign( div1 ); break;

case '%': while( a[yu][get_sign()] = 0 )

eval();

push_sign( yu ); break;

case '(': push_sign( l ); break;

case ')': while( (get_sign()) != l )

eval();

pop_sign();

break;

defult: break;

}

}

return pop_nu();

}

int main( void )

{

char *s = "((5-3)*2+4/22+1)";

init_nu();

init_sign();

printf( "%d\n", change( s ));

destory_nu();

destory_sign();

return 0;

}

以前编的,希望对你有帮助。

别忘了给我分。

一元多项式计算(C语言)

#includestdio.h 声明部分:源代码含有2个文件

#includemalloc.h

typedef struct pnode // 定义指针//

{int coef; //定义系数//

int exp; //定义指数//

struct pnode *next;

}pnode;

pnode * creat() //creat函数用来存放多项式//

{int m,n;

pnode *head,*rear,*s;

head=(pnode *)malloc(sizeof(pnode));

rear=head;

printf("\n输入指数(按递增顺序输入):");

scanf("%d",m);

printf("输入一元式系数(0为退出):");

scanf("%d",n);

do

{

s=(pnode *)malloc(sizeof(pnode));

s-coef=n; //n为系数//

s-exp=m; //m为指数//

rear-next=s;

s-next=NULL;

rear=s;

printf("\n输入指数(按递增顺序输入):");

scanf("%d",m);

printf("输入一元式系数(0为退出):");

scanf("%d",n);

}while(n);

return head;

}

pnode * add(pnode *heada,pnode *headb)

{pnode *headc,*a,*b,*s,*rearc;

int sum;

a=heada-next;b=headb-next;

headc=(pnode *)malloc(sizeof(pnode));

rearc=headc;

//多项式的存放//都放到s中里//

while(a!=NULLb!=NULL) //指数相等,则系数相加。//

{

if(a-exp==b-exp)

{ sum=a-coef+b-coef;

if(sum)

{s=(pnode *)malloc(sizeof(pnode));

s-coef=sum;

s-exp=a-exp;

rearc-next=s;

rearc=s;

a=a-next;

b=b-next;}

else

{a=a-next;

b=b-next;

}

}

else if(a-expb-exp)

//a指数如果小于b,则a放到s中//

{ s=(pnode *)malloc(sizeof(pnode));

s-coef=a-coef;

s-exp=a-exp;

rearc-next=s;

//用下一个结点s取代下一个c//

rearc=s;

a=a-next;

}

else //如果a的指数大,则b放到s中//

{ s=(pnode *)malloc(sizeof(pnode));

s-coef=b-coef;

s-exp=b-exp;

rearc-next=s;

rearc=s;

b=b-next;

}

}

if(a)

{while(a!=NULL) //b空了放a中的项//

{s=(pnode *)malloc(sizeof(pnode));

s-coef=a-coef;

s-exp=a-exp;

rearc-next=s;

s-next=NULL;

rearc=s;

a=a-next;

}

}

else if(b)

{while(b!=NULL) //a空了放b中的项//

{s=(pnode *)malloc(sizeof(pnode));

s-coef=b-coef;

s-exp=b-exp;

rearc-next=s;

s-next=NULL;

rearc=s;

b=b-next;

}}

return headc;

}

void main()

{pnode *a,*b,*c;

printf("建立A:");

a=creat();

printf("\n建立B:");

b=creat();

c=add(a,b);

c=c-next;

printf("%dx^%d",c-coef,c-exp);

c=c-next;

while(c!=NULL)

{printf("+%dx^%d",c-coef,c-exp);

c=c-next;

}

}

一元多项式的计算 能够按照指数降序排列建立并输出多项式 能够完成两个多项式的相加及相减

#includestdio.h

typedef struct polynode

node *create() //用尾插法建立一元多项式的链表

printf("exp: ");

scanf("%d",e);

while(c!=0) //输入系数为0时,多项式的输入结束

s-coef=c;

printf("coef:");

scanf("%d",c);

scanf("%d",e);

void print(node *p) //输出函数,打印出一元多项式

temp=q-next;free(q);q=temp;

if(p!=NULL) //将多项式A中剩余的结点加入到和多项式中

pre-next=p;

else

void multipoly(node *ha,node *hb)

{ node *p,*q,*n,*m;

p=ha-next;

m-exp=p-exp+q-exp;

p=p-next;

polyadd(n,m);

printf("多项式的积是:\n");

printf("请输入多项式hb的系数与指数:\n");

hb=create();

printf("多项式的和是:\n");

multipoly(ha,hb);

简介

在数学中,多项式(polynomial)是指由变量、系数以及它们之间的加、减、乘、幂运算(非负整数次方)得到的表达式。

对于比较广义的定义,1个或0个单项式的和也算多项式。按这个定义,多项式就是整式。实际上,还没有一个只对狭义多项式起作用,对单项式不起作用的定理。0作为多项式时,次数定义为负无穷大(或0)。单项式和多项式统称为整式。

c语言/c++ : 一元多项式的表示及运算;加,减,乘计算都包括的程序,在线等高人解答

#include stdio.h

#include math.h

#include assert.h

typedef struct POLYM{ // 多项式数据结构

int n; // n-1 次多项式 a0+a1x+...+a[n-1]x^(n-1)

double*a; // 必须在运算之前初始化

}*LPPOLYM;

void showPolym(POLYM*pf){ if(!pf) return;

printf("%d\n",pf-n);

for(int i=0; ipf-n; i++) printf("%.1f\t",pf-a[i]);

printf("\n");

}

POLYM* poly_add(POLYM*pout, POLYM*f,POLYM*g){ if(!pout ||!f || !g) return 0L;

int n=f-n; if(ng-n) n=g-n; pout-n=n;

double*p=f-a, *q=g-a, *r=pout-a;

for(int i=0; in; i++, r++) { *r=0;

if(i=f-n) *r+=*p++;

if(i=g-n) *r+=*q++;

}

return pout;

}

POLYM* poly_subtract(POLYM*pout, POLYM*f,POLYM*g){ if(!pout ||!f || !g) return 0L;

int n=f-n; if(ng-n) n=g-n; pout-n=n;

double*p=f-a, *q=g-a, *r=pout-a;

for(int i=0; in; i++, r++) { *r=0;

if(i=f-n) *r-=*p++;

if(i=g-n) *r-=*q++;

}

return pout;

}

POLYM* poly_x(POLYM*pout, POLYM*f,POLYM*g){ if(!pout ||!f || !g) return 0L;

int m=f-n, n=g-n; assert(m=0 n=0);

pout-n= m+n-1;

double*p=f-a, *q=g-a, *r=pout-a;

double c;

for(int i=0; im+n; i++, r++) {

c=0;

for(int j=0; jm; j++) if( (i-j=0) (i-jn) ) c+=f-a[j]*g-a[i-j];

*r=c;

}

return pout;

}

int main(int argc, char *argv[]){

int m=2, n=3;

double fa[]={1,2,}, ga[]={4,5,6}; // 初始化 f, g

POLYM f={m, fa}, g={n, ga};

POLYM r; r.a=new double[m+n+1]; // 初始化 r

showPolym(f);

showPolym(g);

// POLYM*q=poly_add(r,f,g); showPolym(q);

POLYM*q=poly_x(r,f,g); showPolym(q);

return 0;

}

求数据结构程序C语言版,计算任意两个一元多项式的加减乘法,输出结果多项式,要求实现多项式的插入和删除

struct poly

{

int cishu;//次方数

int xishu; //系数

};

/*在写加减乘除时:首先输入一个多项式其实就是一个结构体数组 每个数组元素由 次数和系数组成 排序(按照次数的大小顺序排序) 求出每个多项式的长度, 再 每个加减乘除函数里面的堆上分配一个新的结构体数组(malloc)以两者中最长的长度分配,加减乘除时先遍历长度大的再遍历长度小的 两个for循环OK!然后将剩下的再来一个循环copy一下剩下的没有合并同类项的,返回合并后的多项式...插入好说,删除也好说!这个代码量还有点不想写 */

typedef struct poly Polygon;

int Input(Polygon*);//输入函数返回输入多项式的长度

void sort(Polygon*);//排序

Polygon *Add(Polygon*,Polygon*);//加

Polygon* Minus(Ploygon*,Polygon*);//减

Polygon* Mul(Polygon*,Polygon*);//乘

Polygon* Div(Polygon*,Polygon*);//除

void Output(Polygon*);//输出

void Insert(Polygon*)//查入


当前题目:一元多次函数相加减c语言 两整数相加减c语言
URL分享:http://myzitong.com/article/hhsgdp.html