多项式加法题目内容:一个多项式可以表达为x的各次幂与系数乘积的和,比如:现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。程序要处理的幂最大为100。输入格式:总共要输入两个多项式,每个多项式的输入格式如下:每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。输出格式:从最高幂开始依次降到0幂,如:2x6+3x5+12x3-6x+20注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。输入样例:6 25 33 121 60 206 25 32 121 60 20输出样例:4x6+6x5+12x3+12x2+12x+40
5 回答
已采纳
asd8532
TA贡献143条经验 获得超187个赞
#include <stdio.h>
#include <math.h>
void outNum(int j,int k)
{
int absk = abs(k);
if(absk==1 && j!=1 && j!=0)
{
printf("x%d",j);
}
else if(absk==1 && j!=0)
{
printf("x");
}
else if(absk==1)
{
printf("%d",absk);
}
else if(j==0)
{
printf("%d",absk);
}
else if(j==1)
{
printf("%dx",absk);
}
else
{
printf("%dx%d",absk,j);
}
}
int main()
{
int num[101] = { (0) };
int cut = 0;
int ent = 0;
int i,j,k;
while(cut < 2)
{
k=0;
scanf("%d %d",&j,&k);
num[j] += k;
if(j==0)
cut++;
}
for(i=100;i>-1;i--)
{
j=i;
k=num[j];
if(k!=0)
{
ent++;
if(cut==2)
{
if(k<0)
printf("-");
outNum(j,k);
cut ++;
}
else
{
if(k<0)
{
printf("-");
outNum(j,k);
}
else
{
printf("+");
outNum(j,k);
}
}
}
}
if(ent==0)
printf("0");
return 0;
}
慕运维0355845
TA贡献2条经验 获得超1个赞
#include<stdio.h>
int main( )
{
int m,x;
int a[101]={0,};
int i,j;
for( i=0; i<2; ++i )
{
m=101;
while( m!=0 )
{
scanf( "%d %d", &m, &x );
a[m] +=x;
}
}
for( j=100; j>=0; j-- )
{
if( a[j] && j>1 )
{
printf( "%dx%d+",a[j], j );
}
else if( a[j] && j==1 )
{
printf( "%dx+",a[j] );
}
else if( a[j] && j==0 )
{
printf( "%d", a[j] );
}
}
return 0;
}
慕的地219750
TA贡献1条经验 获得超1个赞
#include <stdio.h>
int main ()
{
int a,b;
int i;
int k;
int number[101]={0};
for (k=0;k<2;k++)
{
for (;;)
{
scanf("%d %d",&a,&b);
number[a] = number[a]+b;
if (a==0)
{
break;
}
}
}
for (i=100;i>=0;i--)
{
if (number[i]>0)
{
printf("%d",number[i]);
if (i>0)
{
printf("x");
}
if (i>1)
{
printf("%d",i);
}
if (i>0)
{
printf("+");
}
}
}
return 0;
}
NoDocCat
TA贡献5条经验 获得超19个赞
我来一个简化的
#include <stdio.h>
void printResult(int m, int c);
int main() {
int num[101] = {0};
int m = 0; //幂数
int c = 0; //次数
int count = 0; //记录输出的次数
int isFirstOut = 1; //是否为第一次输出
for (int i = 0; i < 2; i++) {
do {
scanf("%d %d", &m, &c);
num[m] += c;
} while (m != 0);
}
for (int i = 100; i >= 0; i--) {
m = i;
c = num[i];
if (c != 0) {
count++; //计数
if (isFirstOut) { //当第一次输出时
printResult(m, c);
isFirstOut = 0; //更新状态
} else {
if (c > 0) {
printf("+");
}
printResult(m, c);
}
}
}
//当一次也没有输出时 输出0
if (count == 0) {
printf("0");
}
}
void printResult(int m, int c) {
if (m != 0) {
if (c != 1) { //当次数不为1时 输出次数
printf("%d", c);
}
printf("x");
if (m != 1) { //当幂数不为1时 输出幂数
printf("%d", m);
}
} else { //当幂数为0时 只输出次数
printf("%d", c);
}
}- 5 回答
- 1 关注
- 6372 浏览
添加回答
举报
0/150
提交
取消
