- 3.一元稀疏多项式的打印和计算在x处的值
问题描述
设计一个一元稀疏多项式简单计算器。
基本要求
(1)输入并建立多项式。
(2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,…,cn,en,其中n是多项式的项数,ci,ei分别是第i 项的系数和指数,序列按指数降序排列。
(3)实现多项式a和b相加,建立多项式a+b。
(4)实现多项式a和b相减,建立多项式a-b。
(5)计算多项式在x处的值。
(6)计算器的仿真界面。
测试数据
带界面版
博客地址: 一元稀疏多项式计算器仿真界面版
相关代码
不带界面,只包含数据结构的设计。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
typedef struct Polynomial //多项式
{
float coef; //系数
int expn; //指数
struct Polynomial *next;//指针
} Polynomial, *Polyn;
//创建一个头指针为head,项数为m的一元多项式
Polyn CreatPolyn(Polyn head, int m)
{
head = (Polyn)malloc(sizeof(struct Polynomial));
head->next = NULL;
for (int i = 1; i <= m; i++)
{
Polyn p = (Polyn)malloc(sizeof(struct Polynomial));
printf(“请输入第%d项的系数与指数:”, i);
scanf(“%f%d”, &p->coef, &p->expn);
if (p->coef == 0) free§;
else
{
Polyn q1, q2;
q1 = head;
q2 = head->next;
while (q2 != NULL && p->expn < q2->expn)
{
q1 = q2;
q2 = q2->next;
}
if (q2 != NULL && p->expn == q2->expn)
{
q2->coef += p->coef;
if (q2->coef == 0)
{
q1->next = q2->next;
free(q2);
}
free§;
}
else
{