(C语言)多项式加法

 多项式加法

【问题描述】编写一个程序,实现两个多项式的加法运算。要求用一个有序的链表表示一个多项式,每一项用一个结点表示。在链表中按照项的幂数进行排列。

【输入形式】两个多项式,用空格隔开。每个多项式中没有空格。每项的系数是浮点数,每项的指数是非负整数。每个多项式降幂排序,已经完全合并同类项。每个多项式字符串的长度小于200。

【输出形式】结果的多项式,同样降幂排序。要求没有多余的正号,没有多余的1的系数,没有多余的1或0的指数。系数如果不省略,则输出3位小数。

【样例输入】x^3-1.3x^2+2 1.3x^2-1.5x-1

【样例输出】x^3-1.500x+1.000

【提示】1. 输出三位小数,可以使用"%.3lf"格式字符串;2. 字符串转浮点数,可以使用stdlib.h中的atof函数

分析:此题难点在于如何从输入的字符串中提取出对应的系数和指数,准确来说逻辑上难度不大,但就是比较繁琐,需要缜密的思维。作者的算法如下:

void transform(char input[N1], float coef0[100], int exp0[100]) {//input是输入的字符串,coef0和exp0是从中提取的系数和指数
	int i, j, k, m, mid, mid2;
	char coef[100][N1] = {'\0'}, exp[100][N1] = {'\0'};//先初始化,避免后续输出时输出奇怪的数字 
	int length = strlen(input);
	if (length == 1) {//多项式只有一个常数项 
		exp0[0] = 0;
		coef0[0] = atof(input);
		exp0[1] = 0;
		coef0[1] = 0;
		return;
	}
	for (i = 0, m = 0; i < length; i++) {
		if (input[i] == 'x') {//寻找x,以x为定位来寻找系数 
		/* 提取指数*/ 
			if (input[i + 1] == '^') {//指数不为1 
				for (j = i +
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值