猿问

求大神编写一个计算多项式加法的C程序!

多项式加法

题目内容:

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

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

程序要处理的幂最大为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


yuantongxin
浏览 6253回答 5
5回答

asd8532

#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

#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

#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

我来一个简化的#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);     } }

慕运维0355845

111
随时随地看视频慕课网APP
我要回答