目录
介绍
在数学上,一元多项式的升幂排序可以写成Pn(x)=P0+P1*x+P2*x^2+…+Pn*x^n。
用数组表示一元多项式,数组的下标既是多项式的项数,又可以默认表示x的指数,用户只需按照升幂顺序输入每一项的系数即可,操作简单。
代码
#include <stdio.h>
#include <math.h>
#include <Windows.h> //使用清屏和休眠
void create(int a[],int n);
void add(int a[],int b[],int n);
void ShowMenu();
void evaluation(int a[],int n);
int main()
{
int choice;
int n=0;
while(1)
{
ShowMenu();
printf("请输入你要进行的操作:\n") ;
scanf("%d",&choice);
system("cls"); //清空屏幕
if(choice==1||choice==2)
{
printf("请输入多项式的项数\n");
scanf("%d",&n);
}
int a[n],b[n],c[n];
switch(choice)
{
case 1:
create(a,n);
evaluation(a,n);
break;//多项式求值
case 2:
create(a,n);
create(b,n);
add(a,b,n);
break;//多项式相加
case 0: return 0;
default:
printf("输入错误,请重新输入!\n"); break;
}
printf("\n即将返回主菜单\n");
Sleep(5000); //显示结果
system("cls"); //清空屏幕
}
return 0;
}
void create(int a[],int n)
{
int i;
printf("请按照升幂次序依次输入多项式的系数\n");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("你的多项式如下:\nP=%d+",a[0]);
for(i=1;i<n-1 ;i++)
{
printf("%d*x^%d+",a[i],i);
}
printf("%d*x^%d \n",a[n-1],n-1);
}
void add(int a[],int b[],int n)
{
int c[n];
int i=0;
printf("相加结果如下:\nP=%d+",a[0]+b[0]);
for(i=1;i<n-1 ;i++)
{
c[i]=a[i]+b[i];
printf("%d*x^%d+",c[i],i);
}
c[n-1]=a[n-1]+b[n-1];
printf("%d*x^%d",c[n-1],n-1);
printf("\n");
}
void ShowMenu()
{
printf("-------菜单-------\n");
printf("1-多项式求值\n");
printf("2-多项式相加\n");
printf("0-退出\n");
printf("------------------\n");
}
void evaluation(int a[],int n)
{
int i;
int sum=0;
int x;
printf("请输入x的值:\n");
scanf("%d",&x);
for(i=0;i<n;i++)
{
sum=sum+a[i]*pow(x,i);
}
printf("你的结果如下:\n%d\n",sum);
}