今天给各位分享多项式乘法c语言的知识,其中也会对多项式乘法c语言表示进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、如何用C语言实现一元多项式简单计算器的设计2、一元多项式的实现(C语言)3、急!c语言 计算多项式的程序4、怎么用C语言做一个一元多项式的程序
如何用C语言实现一元多项式简单计算器的设计
/*:————–一元稀疏多项式计算(部分)————–*
* 基本功能:(1)输入并建立多项式; *
* (2)多项式输出,以 c1,e1,c2,e2,…输出 *
* 其中ci为系数,ei为指数; *
* (3)多项式相加,c=a+b。 *
* 说明: (1)多项式一指数升序排序,但输入时不检查; *
* (2)以带头指针的单链表存储。 *
*——————————————————-*/
#define OK 1
#define FAILE 0
#define ERROR 0
#define OVERFLOW 0
#include iostream
using namespace std;
typedef struct PolynNode { /*某一项*/
double coef; /*系数*/
int expn; /*指数*/
} ElemType,term;
typedef struct LNode {
ElemType data;
struct LNode *next;
}LNode,*LinkList;
typedef LinkList Polyn; /*带头结点*/
int init_polyn(Polyn head,int n)
{/*创建有n项的多项式,n应大于0,但不作检查*/
/*指数e1e2e3…,但不作检查,间隔地输入系数与指数,即c1 e1 …*/
Polyn p,q = head;
double coef;
int expn,count;
if(head == NULL)
return ERROR;
if((p = (Polyn)malloc(sizeof(LNode))) == NULL)
return OVERFLOW;
printf(“Please input n pairs of coef and expn.\n”);
for(count = 0;count n;count++) {
q-next = p;
q = p;
scanf(“%f%d”,coef,expn);
p-data.coef = coef;
p-data.expn = expn;
if((p = (Polyn)malloc(sizeof(LNode))) == NULL)
return OVERFLOW;
}
q-next = NULL;/*尾*/
return OK;
}
int print_polyn(Polyn head)
{/*输出*/
Polyn p=head-next;
int count;
if(head == NULL)
return ERROR;
while(p != NULL) {
printf(“%.4lf % 3d”,p-data.coef,p-data.expn);
count++;
if((count % 10 == 0) (!count))
printf(“\n”);
p = p-next;
}
return OK;
}
int add_polyn(Polyn ha,Polyn hb,Polyn hc)
{/*多项式相加*/
Polyn p1 = ha,p2 = ha,q1 = hb,q2 = hb;
hc = ha;
while( (p1 != NULL) (q1 != NULL)) {
if(p1-data.expn q1-data.expn) { /*p1指数q1指数*/
p2 = p1;
p1 = p1-next;
}
else {
if(p1-data.expn == q1-data.expn) { /*q1指数==p1指数*/
if(!(p1-data.coef + q1-data.coef)) {/*系数之和为0*/
p1 = p1-next;
free(p2-next);
p2-next = p1;
q1 = q1-next;
free(q2-next);
q2-next =q1;
}
else { /*系数之和不为0*/
p1-data.coef += q1-data.coef;
p2 = p1;
p1 = p1-next;
q1 = q1-next;
free(q2-next);
q2-next =q1;
}
}
else { /*q1指数p1指数*/
p2-next = q1;
q1-next = p1;
p2 = p2-next;
q1 = q1-next;
q2-next = q1;
}
}
}
if(p1 == NULL) { /*p1结束了,q1未结束*/
p2-next = q1;
}
ha-next = NULL;
free(ha);
free(hb);
return OK;
}
int main()
{
int creat_polyn(Polyn head);
int init_polyn(Polyn head,int n);
int print_polyn(Polyn head);
int add_polyn(Polyn ha,Polyn hb,Polyn hc);
LNode polyn1,polyn2;
Polyn ha = polyn1,hb = polyn2,hc;
int n;
printf(“How many terms do you want to initial the polynomial ha?Input a number.\n”);
scanf(“%d”,n);
init_polyn(ha,n);
print_polyn(ha);
printf(“How many terms do you want to initial the polynomial hb?Input a number.\n”);
scanf(“%d”,n);
init_polyn(hb,n);
print_polyn(hb);
add_polyn(ha,hb,hc);
print_polyn(hc);
return 0;
}
一元多项式的实现(C语言)
#define TURE 1
#define FALSE 0
#includestdio.h
#includestdlib.h
typedef struct
{
float coef;
int e;
}ElementType;
typedef struct node
{
ElementType data;
struct node *next;//这也是为什么要定义struct node 而非struct的原因
}Lnode,*LinkList;
int Head_CreatLinkList (LinkList L,int n,ElementType a[])//头插法建立链表
{
int i;
LinkList head,p;
L=(LinkList)malloc(sizeof(Lnode));
L-next=NULL;
head=L;
for(i=0;in;i++)
{
p=(LinkList)malloc(sizeof(Lnode));
p-next=NULL;
p-data.coef=a[i].coef;
p-data.e=a[i].e;
head-next=p;
head=p;
}
return TURE;
}
int GetElement(LinkList L)
{
int m;
m=L-data.e;
//printf(“%d”,m);
return m;
}
int Comp(int a,int b )
{
if(ab)
return 1;
else if(ab)
return -1;
else
return 0;
}
int Union_LinkList(LinkList L1,LinkList L2,LinkList L3)
{
LinkList p1,p2,p3,flag1,flag2;//flag标记指针,用于删除L2中节点
p1=L1-next;
p2=L2-next;
L3=p3=L1;//L3改变将导致L1的改变,即最终L3和L1相同
while(p1p2)
{
switch(Comp(GetElement( p1),GetElement( p2)))
{
case -1:
{
p3-next=p1;
p3=p1;
p1=p1-next;
break;
}
case 1:
{
p3-next=p2;
p3=p2;
p2=p2-next;
break;
}
case 0:
{
p1-data.coef=p1-data.coef+p2-data.coef;
if(p1-data.coef==0)
{
flag1=p1;
p1=p1-next;
free(flag1);
}
flag2=p2;
p2=p2-next;
free(flag2);
break;
}
}
}
p3-next=p1?p1:p2;
free(L2);
return TURE;
}
int Display_LinkList(LinkList L)
{
LinkList p;
p=L;
if(!p)
return FALSE;
while(p-next)
{
p=p-next;
printf(“[%f%, %d]\t”,p-data.coef,p-data.e);
}
printf(“\n”);
return TURE;
}
void main()
{
LinkList a,b,c;
ElementType a1[6]={{1,1},{2,7},{3,3},{4,4},{5,9},{1,10}};
ElementType a2[4]={{-1,1},{2,7},{3,8},{-5,9}};
Head_CreatLinkList (a,6,a1);
Head_CreatLinkList (b,4,a2);
Display_LinkList(a);
Display_LinkList(b);
Union_LinkList(a,b,c);
Display_LinkList(c);
}
这是自己以前写的一个多项式加法的程序,现在也没检查了,希望你自己好好调试一下,至于减法和除法,只要加一点吧。希望对你有帮助
急!c语言 计算多项式的程序
#include stdio.h
#include stdlib.h
void main( )
{
double coe[20], x, sum = 0;
int i, n;
printf(“请输入总项数: “);
scanf(“%d”, n);
printf(“请按指数从高到低的顺序输入各项系数: “);
for(i = n; i = 0; i–)
scanf(“%lf”, coe[i]);
printf(“请输入变量x的值: “);
scanf(“%lf”, x);
for(i = n; i = 0; i–)
sum = sum * x + coe[i];
printf(“\n结果为: %lf\n”, sum);
}
怎么用C语言做一个一元多项式的程序
#include stdio.h
#includewindows.h
void re(int max,int number); //判断符号输出
int main()
{
int number[101]={0}; //存放指数幂
int x1,x2;
int esc=1,max=0;
for(int i=0;esc==1;i++) {
scanf(“%d %d”,x1,x2);
if(i==0) {
max=x1;
}
if(x2!=0){
number[x1]+=x2; //同一个次幂的系数都存在数组的同一个位置
// printf(“%d”,number[x1]);
}
if(x1==0) { //数据停止录入的指令
esc=0;
}
// printf(“min=%d,max=%d\n”,min,max);
}
int n_number[101]={0}; //存放指数幂
int n_max=0;
for(int i=0;esc==0;i++) {
scanf(“%d %d”,x1,x2);
if(i==0) {
n_max=x1;
}
if(x2!=0){
n_number[x1]+=x2; //同一个次幂的系数都存在数组的同一个位置
// printf(“%d”,number[x1]);
}
if(x1==0) { //数据停止录入的指令
esc=1;
}
// printf(“min=%d,max=%d\n”,min,max);
}
if(n_maxmax) { //整个if用于将两个多项式的系数传给其中最大幂指数较大的数组
for(int i=4;i=0;i–) {
if(number[i]!=0||n_number[i]!=0) {
n_number[i]+=number[i];
// printf(“n_number[%d]=%d\n”,i,n_number);
}
if(n_number[i]!=0){
int data=n_number[i];
// printf(“%d”,n_number[i]);
re(i,data);
}
}
}else {
for(int i=100;i=0;i–) {
if(number[i]!=0||n_number[i]!=0) {
number[i]+=n_number[i];
}
if(number[i]!=0) {
int data=number[i];
// printf(“%d”,number[i]);
re(i,data);
}
}
}
printf(“\n”);
system(“pause”);
return 0;
}
void re(int i,int number)
{
if(number!=1){
printf(“%d”,number); //如果系数为1不输出系数,如果系数为-1输出负号
}else if(number==-1) {
printf(“-“);
}
if(i) { //当指数不为0时输出x
printf(“x”);
}
if(i1) { //防止出现幂数为1的情况
printf(“%d”,i);
}
if(i0number0){ //系数为负数时不输出+号
printf(“+”);
}
}
关于多项式乘法c语言和多项式乘法c语言表示的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。