一元多次函数相加减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语言
分享路径:http://scyanting.com/article/hhsgdp.html