多项式c语言程序(用c语言写程序求多项式的方法)
今天给大家分享一下多项式C语言程序的知识,也会讲解一下用C语言编程多项式的方法。如果你碰巧解决了你现在面临的问题,别忘了关注这个网站,现在就开始吧!
这篇文章的列表: 1.题目:用C语言编程多项式计算 2、急!计算多项式的c语言程序 3.如何用C语言制作一元多项式的程序? 4、C语言多项式 5.c语言程序问题:写一个程序实现多项式计算。 6、多项式计算C语言编程 题目:用C语言编程多项式计算 #包含stdio.h
#包含stdlib.h
//结构节点
结构多项式
{
int coef
int exp
struct polynode * link
};
typedef struct poly node * poly pointer;//重命名
//插入一个节点并排序。
多指针插入(int e,int c,多指针头)
{
聚指针p,pr,k;
p =(poly pointer)malloc(sizeof(struct polynode));
pr =头;
p-link = NULL;
p-coef = c;
p-exp = e;
If (head==NULL) //链表为空。
{
head = p;
}
其他
{
而(pr!=NULLpr-exp=e) //降序排列
{
if (pr-exp==e)
{
pr-coef = pr-coef c;
回程头;
}
k = pr
pr = pr-link;
}
if (pr==head)
{
p-link =头;
head = p;
回程头;
}
if (pr==NULL)
{
k-link = p;
}
其他
{
p-link = k-link;
k-link = p;
}
}
回程头;
}
//打印链表
空白显示(多指针头)
{
聚指针p;
p =头部;
做
{
printf("%dx(exp)%d ",p-coef,p-exp);
p = p-link;
}
而(p!= NULL);
}
int main()
{
poly pointer first =(poly pointer)malloc(sizeof(struct polynode));
poly pointer second =(poly pointer)malloc(sizeof(struct polynode));
int c;
int e;
int I;
first = NULL
秒=空;
Printf("多项式加法小程序\ n \ n ");
Printf("请输入第一个多项式。(输入0,0结束)\ n \ n ");
Printf("请输入第1项。\ n高效:\ n ");
scanf("%d ",c);
Printf("请输入第1项。\n索引:\ n ");
scanf("%d ",e);
for(I = 0;c!=0;I )//将第一个等式存储在链表中。
{
first=insert(e,c,first);
Printf("请输入第一个多项式。(输入0,0结束)\ n \ n ");
Printf("请输入项目% d..\n系数:\ n ",I ^ 2);
scanf("%d ",c);
Printf("请输入项目% d..\n索引:\n”,I ^ 2);
scanf("%d ",e);
}
Printf("第一多项式");
显示(第一);
printf(" \ n \ n请输入第二个多项式。(输入0,0结束)\ n \ n ");
Printf("请输入第1项。\ n高效:\ n ");
scanf("%d ",c);
Printf("请输入第1项。\n索引:\ n ");
scanf("%d ",e);
for(I = 0;c!=0;I )//将第二个等式存储在链表中。
{
秒=插入(e,c,秒);
Printf("请输入第一个多项式。(输入0,0结束)\ n \ n ");
Printf("请输入项目% d..\n系数:\ n ",I ^ 2);
scanf("%d ",c);
Printf("请输入项目% d..\n索引:\n”,I ^ 2);
scanf("%d ",e);
}
Printf("二次多项式");
显示(秒);
printf(" \ n \ n \ n \ n ");
Printf("多项式和");
而(第二!=NULL)//将第二个链表合并到第一个链表中。
{
first=insert(second-exp,second-coef,first);
秒=秒-链接;
}
显示(第一);//打印输出
返回0;
}
急!计算多项式的c语言程序 #包括
#包括
空的
主(
)
{
两倍
coe如何用C语言做一元多项式程序? #包含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
}
如果(x2!=0){
数字[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
}
如果(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;我- ) {
if(数字[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,数据);
}
}
}否则{
for(int I = 100;I = 0;我- ) {
if(数字[i]!=0||n_number[i]!=0) {
数字[I]= n _数字[I];
}
if(数字[i]!=0) {
int data = number[I];
// printf("%d ",number[I]);
re(i,数据);
}
}
}
printf(" \ n ");
系统(“暂停”);
返回0;
}
void re(整数I,整数)
{
如果(数字!=1){
printf("%d ",数字);//如果系数为1,则不输出系数,如果系数为-1,则输出负号。
}else if(number==-1) {
printf("-");
}
If(i) {//指数不为0时输出X。
printf(" x ");
}
If(i1) {//防止1的幂。
printf("%d ",I);
}
如果(i0number0){ //系数为负,则不输出信号。
printf(" ");
}
}
c语言多项式 #包含stdio.h
#定义程度_最大8
void get_poly(double coeff[],int *degree)
{
int I;
printf("请输入最大度数:");
scanf("%d ",度);
for(I = *度;I = 0;我- ) {
printf("输入%d `s系数:",I);
scanf("%lf ",coeff[I]);
}
printf(" \ n您的多项式是:\ n ");
for(I = *度;I = 0;我- ) {
printf("%.2lfX^%d%c”,coeff[i],I,(i 0?':' \ n '));
}
}
double eval _ poly(const double coeff[],int degree,double x)
{
int I;
double m = x,ret = 0;
ret = coeff[0];
for(I = 1;i =度;i ) {
ret = coeff[I]* m;
m * = x;
}
返回ret
}
int main() {
double coeff[DEGREE_MAX],x;
int度;
get_poly(系数,度数);
printf(" \ n请输入X值:");
scanf("%lf ",x);
printf("答案是%.2lf\n ",eval_poly(coeff,degree,x));
返回0;
}
c语言程序问题:写一个程序实现多项式计算 #包含stdio.h
#包含stdlib.h
#包含数学. h
#定义EPS 1E-6
typedef结构项{
双倍系数;
int幂;
结构项* next
} *多项式,* pItem
多项式创建(){//创建多项式
pItem头,p;
双coe
int pwr
head = p =(pItem)malloc(sizeof(item));
while(1) {
Printf("系数的幂(以0 0结尾):");
scanf("%lf%d ",coe,PWR);
if(fabs(coe) = EPS!PWR)break;
p-next =(pItem)malloc(sizeof(item));
p-next-系数= coe
p-next-power = PWR;
p = p-next;
}
p-next = NULL;
回程头;
}
Void Sort(多项式头){//按降序幂排序。
pItem pt,q,p = head
while(p-next) {
q = p-next;
while(q-next) {
if(p-next-power q-next-power) {
pt = p-next;
p-next = q-next;
q-next = p-next-next;
p-next-next = pt;
}
else q = q-next;
}
p = p-next;
}
}
Void Show(多项式头){//显示多项式。
多项式p = head-next;
int flag = 1;
if(p == NULL)返回;
while(p) {
如果(标志){
if(fabs(p系数)= EPS) {
if(p-power == 0) printf("%.2lf ",p-系数);
else if(p-power == 1) {
if(p系数= = 1.0)printf(" x ");
else if(p-coefficient = =-1.0)printf("-x ");
else printf("%.2lfx ",p-系数);
}
else if(p-系数== 1.0) printf("x^%d”,p-幂);
else if(p-系数== -1.0) printf("-x^%d”,p-幂);
else printf("%.2lfx^%d”,p-系数,p-幂);
flag = 0;
}
}
else if(p系数0.0 fabs(p系数)= EPS) {
if(p-power == 0) printf(" %.2lf ",p-系数);
else if(p-power == 1) {
if(p系数= = 1.0)printf(" x ");
else printf(" %.2lfx ",p-系数);
}
else if(p系数= = 1.0)printf(“x^%d”,p次方);
else printf(“%.2lfx^%d”,p系数,p次方);
}
else if(p系数0.0 fabs(p系数)= EPS) {
if(p-power == 0) printf("- %.2lf ",-p-coefficient);
else if(p-power == 1) {
if(p系数= =-1.0)printf("-x ");
else printf("- %.2lfx ",-p-系数);
}
else if(p系数== -1.0) printf("- x^%d ",p次方);
else printf("- %.2lfx^%d ",-p系数,p次方);
}
p = p-next;
}
printf(" \ n ");
}
double Power(double x,int n) {
double值= 1.0;
int I;
for(I = 0;I n;I)值* = x;
返回值;
}
双值(多项式头,双x){//多项式求值
多项式p;
double值= 0.0;
for(p = head-next;p;p = p-下一个)
值= p-系数*幂(x,p-幂);
返回值;
}
多项式副本(多项式A) {
多项式头,t,p;
head = t =(pItem)malloc(sizeof(item));
for(p = A-next;p;p = p-next) {
t-next =(pItem)malloc(sizeof(item));
t-next-系数= p-系数;
t-next-power = p-power;
t = t-next;
}
t-next = NULL;
回程头;
}
多项式加法(多项式a,多项式b){//多项式加法
多项式头,p,q,t;
head = Copy(A);
for(p = B;p-next;p = p-next) {
q =头;
while(q-next) {
if(p-next-power = = q-next-power){
q-下一个系数= p-下一个系数;
if(fabs(q-next-coefficient)= EPS){
t = q-next;
q-next = t-next;
免费(t);
}
打破;
}
q = q-next;
}
if(q-next == NULL) {
q-next =(pItem)malloc(sizeof(item));
q-下一个系数= p-下一个系数;
q-next-power = p-next-power;
q-next-next = NULL;
}
}
排序(头);
回程头;
}
多项式减法(多项式a,多项式b){//多项式减法
多项式头,p,q,t;
head = Copy(A);
for(p = B;p-next;p = p-next) {
q =头;
while(q-next) {
if(p-next-power = = q-next-power){
q-下一个系数= p-下一个系数;
if(fabs(q-next-coefficient)= EPS){
t = q-next;
q-next = t-next;
免费(t);
}
打破;
}
q = q-next;
}
if(q-next == NULL) {
q-next =(pItem)malloc(sizeof(item));
q-下一个系数=-p-下一个系数;
q-next-power = p-next-power;
q-next-next = NULL;
}
}
排序(头);
回程头;
}
多项式乘法(多项式a,多项式b){//多项式乘法
多项式头,t,p,q;
head = t =(pItem)malloc(sizeof(item));
for(p = A-next;p;P = p-next) {//完成乘法过程。
for(q = B-next;q;q = q-next) {
t-next =(pItem)malloc(sizeof(item));
t-next-coefficient = p系数* q系数;
t-next-power = p-power q-power;
t = t-next;
}
}
t-next = NULL;
排序(头);//排序
p =头部;
While(p-next) {//合并相似项。
q = p-next;
while(q-next) {
if(p-next-power = = q-next-power){
p-下一个系数= q-下一个系数;
t = q-next;
q-next = t-next;
免费(t);
}
else q = q-next;
}
p = p-next;
}
回程头;
}
void FreeMemory(多项式头){
多项式q,p =头;
while(p) {
q = p;
p = q-next;
免费(q);
}
}
int main() {
Printf("创建多项式A:\ n ");
多项式A = Create();
排序(A);
printf(" A(x)=);展示(一);
Printf("创建多项式B:\ n ");
多项式B = Create();
排序(B);
printf(" B(x)=);显示(B);
多项式C =加法(A,B);
printf(" C(x)=);展示(C);
多项式D = Subtract(A,B);
printf(" D(x)=);显示(D);
多项式E =乘法(A,B);
printf(" E(x)=);显示(E);
printf(" A(%). 2 lf)= . 4lf \ n ",2.0,Value(A,2.0));
printf(" B(% . 2 lf)= " . 4lf \ n ",2.0,Value(B,2.0));
printf(" C(% . 2 lf)= " . 4lf \ n ",2.0,Value(C,2.0));
printf(" D(% . 2 lf)= " . 4lf \ n ",2.0,Value(D,2.0));
printf(" E(% . 2 lf)= " . 4lf \ n ",2.0,Value(E,2.0));
自由内存(A);
自由内存(B);
自由内存(C);
自由内存(D);
自由内存(E);
返回0;
}
多项式计算c语言程序设计 这个其实很简单。我们需要三个数组(暂且考虑int数组),长度都是10,分别存储多项式1和2以及计算结果。初始化为全0。根据你的假设输入。最后三个数组是:
多项式1: [7 1:[7,0,-5,2,0,0,0,0](x,0,0)(X的零次幂系数为7,X的一次幂系数为2,以此类推,下同)。
多项式2: [-8,1,3,0,0,0,0,0,0,0]
计算结果:[0,0,0,0,0,0,0,0,0](还没统计,当然都是0)
加减法很容易算,就不赘述了。乘法怎么算?按照真正的数学计算步骤来推就行了。你将3x2,x和-8分别乘以2x3-5x2 7,最后把结果加起来。转换成一个程序就是把几个数组加起来:
[-56, 0, 40, -16, 0, 0, 0, 0, 0, 0]
[0, 7, 0, -5, 2, 0, 0, 0, 0, 0]
[0, 0, 21, 0, -15, 6, 0, 0, 0, 0]
加起来就行了。
至于提高水平,这个题目不好,因为多项式除法的结果不唯一。比如2x2 1除以x2 1,你可以说2x2 1 = 2(x2 1)-1或者2x2 1 = 1(x2 1) x2。这样的题目数学意义不大,编程也达不到锻炼水平的效果。也许我误解了?
多项式C语言程序的介绍就说到这里吧。感谢您花时间阅读本网站的内容。别忘了在这个网站上搜索更多关于用C语言编程多项式的方法和多项式C语言程序的信息。
最后更新于 2023-09-03 10:21:26 并被添加「C语言 多项式的方法 」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章