多项式求和

这道题没有做完,不过基本思路已经了解了,懒得改了。时间不是很充裕。等我考完研回来再做!

题目内容:

一个多项式可以表达为x的各次幂与系数乘积的和,比如:

2x6+3x5+12x3+6x+20

现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。

程序要处理的幂最大为100。

 

输入格式:

总共要输入两个多项式,每个多项式的输入格式如下:

每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。

注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。

 

输出格式:

从最高幂开始依次降到0幂,如:

2x6+3x5+12x3-6x+20

注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。

 

输入样例:

6 2

5 3

3 12

1 6

0 20

6 2

5 3

2 12

1 6

0 20

 

输出样例:

4x6+6x5+12x3+12x2+12x+40

#include<stdio.h>

struct	number
{
	int pow;    //幂
	int c;    //系数
}number[100];
int main()
{	
	//输入 
    //统计输入的个数
	int cat=-1;
	do{
		cat++;
		scanf("%d %d",&number[cat].pow ,&number[cat].c);
		
	}while(number[cat].pow != 0);//当幂次为0时输入完成
	
	//对结构按幂从小到大排序 
	for( int i = cat -1; i>0; i-- )
	{
		int minid = 0;
		for(int j = 1; j < i+1; j++)
		{
			if( number[minid].pow > number[j].pow)
			{
				minid = j;
			}
		}
		struct number t;
		t =number[minid];
		number[minid] = number[i];
		number[i] = t;
	}
	//检验成功 
//	for(int i=0; i<cat; i++){
//		printf("%dx%d\n", number[i].c, number[i].pow);
//	}

	//幂次相同项系数合并 
	int j=0;
	for(int i=1; i<cat; i++)
	{
		if(number[j].pow != number[i].pow)
		{
			number[++j] = number[i];
		}
		else
		{
			number[j].c += number[i].c; 
		}
	 }

	 for(int i=0; i<=j; i++){
		if(number[i].c != 0)
		{
			if(number[i].pow == 0)
			{
				printf("%d", number[i].c);
			}else
			{
				printf("%dx%d", number[i].c, number[i].pow);
			}
			if(i != j ){
				printf("+");
			}
		}
	} 
	
	return 0;
	
}

是两个多项式的求和,每个多项式的结束标志是幂为0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值