初一的多项式怎么才能学好,我一直学不好,求简单的方法
答案:2 悬赏:20 手机版
解决时间 2021-02-03 15:27
- 提问者网友:城市野鹿
- 2021-02-02 22:26
初一的多项式怎么才能学好,我一直学不好,求简单的方法
最佳答案
- 五星知识达人网友:洒脱疯子
- 2021-02-02 23:58
简单的方法就是你自己认为学不好,我是过来人,你静下心来,一个人钻一个下午,就可以完成了。我之前的经验是,多项式不好,是单项式不好,单项式就像你班上的同学,刚开始名字怎么记忆都会没有印象,你要去想这个人是谁,干嘛的,为什么是这样的,有谁和他很像,当你心态平和了你就发现当时怎么那么傻不就是他吗?~是不是晕了,总结一下,单项式要认清,OK。单项式组合起来就是多项式了。
跟你交个底,心态,很重要,从错误中成长,无论怎样,找方法说服自己把一道多项式题目弄懂,不要求多,发现之前的想法有了冲突了,再改。过程,熟悉就在过程中。
跟你交个底,心态,很重要,从错误中成长,无论怎样,找方法说服自己把一道多项式题目弄懂,不要求多,发现之前的想法有了冲突了,再改。过程,熟悉就在过程中。
全部回答
- 1楼网友:轮獄道
- 2021-02-03 00:11
//一元多项式计算器 。非原创,我测试了下,还行,你再试试吧
#include
#include
#define ok 1;
#define read(i) while (((i)=getchar())=='\n'); //读入合法字符
typedef int status;
typedef struct polynode
{
float coef;
int expn;
struct polynode *next;
}poly,*p_poly;
status creatpoly(p_poly*,int); //创建多项式链表
void outp_poly(p_poly); //输出多项式
void addpoly(p_poly*,p_poly,p_poly); //求和
void decpoly(p_poly*,p_poly,p_poly); //求差
void delpoly(p_poly*); //删除并释放多项式
status main()
{
p_poly polyhead[26]={0};
char menu,name;
for (;;)
{
printf ("1.建立多项式\n");
printf ("2.输出多项式\n");
printf ("3.求两个多项式之和(必须先创建),建立和式并输出\n");
printf ("4.求两个多项式之差(必须先创建),建立差式并输出\n");
printf ("5.删除多项式\n");
printf ("6.退出\n");
printf ("请选择指令:");
read(menu)
switch (menu)
{
case '1':
{
int n;
printf ("请输入要创建的多项式的名称(单个小写字母表示):");
read(name)
if (null!=polyhead[name-'a'])
{
printf ("此多项式已经存在!\n");
break;
}
printf ("请输入项数:");
scanf ("%d",&n);
if(creatpoly(&polyhead[name-'a'],n)) printf ("多项式%c创建完毕!\n",name);
break;
}
case '2':
printf ("请输入要输出的多项式的名称:");
read(name)
if (null==polyhead[name-'a'])
{
printf ("此多项式不存在!\n");
break;
}
outp_poly(polyhead[name-'a']);
break;
case '3':
{
char name1,name2;
printf ("请输入加式一的名称:");
read(name1)
if (null==polyhead[name1-'a'])
{
printf ("此多项式不存在!请先创建\n");
break;
}
printf ("请输入加式二的名称:");
read(name2)
if (null==polyhead[name2-'a'])
{
printf ("此多项式不存在!请先创建\n");
break;
}
printf ("请输入要创建的和式的名称:");
read(name)
if (null!=polyhead[name-'a'])
{
printf ("此多项式已经存在!\n");
break;
}
addpoly(&polyhead[name-'a'],polyhead[name1-'a'],polyhead[name2-'a']);
outp_poly(polyhead[name-'a']);
break;
}
case '4':
{
char name1,name2;
printf ("请输入被减式的名称:");
read(name1)
if (null==polyhead[name1-'a'])
{
printf ("此多项式不存在!请先创建\n");
break;
}
printf ("请输入减式的名称:");
read(name2)
if (null==polyhead[name2-'a'])
{
printf ("此多项式不存在!请先创建\n");
break;
}
printf ("请输入要创建的差式的名称:");
read(name)
if (null!=polyhead[name-'a'])
{
printf ("此多项式已经存在!\n");
break;
}
decpoly(&polyhead[name-'a'],polyhead[name1-'a'],polyhead[name2-'a']);
outp_poly(polyhead[name-'a']);
break;
}
case '5':
printf ("请输入要删除的多项式名称:");
read(name)
if (null==polyhead[name-'a'])
{
printf ("此多项式不存在!\n");
break;
}
delpoly(&polyhead[name-'a']);
printf ("多项式%c已删除!\n",name);
break;
case '6':
return ok;
}
}
}
status creatpoly(p_poly* p_polyhead,int n)
{ //为确保其他子函数正常运行,入口参数要求不含同类项、指数递减
int i=0;
p_poly p,tail;
*p_polyhead=(poly*)malloc(sizeof(poly));
(*p_polyhead)->expn=n;
tail=*p_polyhead;
printf ("请按照指数递减序输入最简形式的多项式\n");
for (;icoef),&(p->expn));
tail->next=p;
tail=p;
}
tail->next=null;
return ok;
}
void outp_poly(p_poly polyhead)
{
int i=0;
p_poly p;
printf ("%d ",polyhead->expn);
p=polyhead->next;
for (;iexpn;i++)
{
printf ("%f,%d ",p->coef,p->expn);
p=p->next;
}
printf ("\n");
}
void addpoly(p_poly* p_polyhead,p_poly polyhead1,p_poly polyhead2)
{
int i=0;
p_poly p1,p2,p,tail;
p1=polyhead1->next;
p2=polyhead2->next;
*p_polyhead=(p_poly)malloc(sizeof(poly));
p=tail=*p_polyhead;
while(p1&&p2)
{
int e1,e2;
e1=p1->expn;
e2=p2->expn;
if (e1>e2)
{
p=(p_poly)malloc(sizeof(poly));
tail->next=p;
tail=p;
*p=*p1;
p1=p1->next;
i++;
}
else if(e1==e2)
{
float sum_c=p1->coef+p2->coef;
if (sum_c!=0.0)
{
p=(p_poly)malloc(sizeof(poly));
tail->next=p;
tail=p;
p->coef=sum_c;
p->expn=e1;
i++;
}
p1=p1->next;
p2=p2->next;
}
else if (e1next=p;
tail=p;
*p=*p2;
p2=p2->next;
i++;
}
}
while (p1)
{
p=(poly*)malloc(sizeof(poly));
*p=*p1;
tail->next=p;
tail=p;
p1=p1->next;
i++;
}
while (p2)
{
p=(poly*)malloc(sizeof(poly));
*p=*p2;
tail->next=p;
tail=p;
p2=p2->next;
i++;
}
(*p_polyhead)->expn=i;
tail->next=null;
}
void decpoly(p_poly* p_polyhead,p_poly polyhead1,p_poly polyhead2)
{
int i=0;
p_poly p1,p2,p,tail;
p1=polyhead1->next;
p2=polyhead2->next;
*p_polyhead=(p_poly)malloc(sizeof(poly));
p=tail=*p_polyhead;
while(p1&&p2)
{
int e1,e2;
e1=p1->expn;
e2=p2->expn;
if (e1>e2)
{
p=(p_poly)malloc(sizeof(poly));
tail->next=p;
tail=p;
*p=*p1;
p1=p1->next;
i++;
}
else if(e1==e2)
{
float dif_c=p1->coef-p2->coef;
if (dif_c!=0.0)
{
p=(p_poly)malloc(sizeof(poly));
tail->next=p;
tail=p;
p->coef=dif_c;
p->expn=e1;
i++;
}
p1=p1->next;
p2=p2->next;
}
else if (e1next=p;
tail=p;
p->coef=-p2->coef;
p->expn=p2->expn;
p2=p2->next;
i++;
}
}
while (p1)
{
p=(poly*)malloc(sizeof(poly));
*p=*p1;
tail->next=p;
tail=p;
p1=p1->next;
i++;
}
while (p2)
{
p=(poly*)malloc(sizeof(poly));
*p=*p2;
tail->next=p;
tail=p;
p2=p2->next;
i++;
}
(*p_polyhead)->expn=i;
tail->next=null;
}
void delpoly(p_poly* p_polyhead)
{
p_poly p,prior;
p=prior=*p_polyhead;
while (p->next)
{
p=p->next;
free(prior);
prior=p;
}
*p_polyhead=null;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯