1
多项式加法(5分)

题目内容:

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

网易云课堂_程序设计入门-C语言_第六章:数组_1多项式加法

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

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

时间限制:500ms内存限制:32000kb
 
  1 #include <stdio.h>
  2 main()
  3 {
  4     int a[101][2], b[101][2], c[101][2];
  5     int i, j, m, n, cnt = 0;
  6     
  7     for (i = 0; i < 101; i++)        /* a表清零 */
  8     {
  9         for (j = 0; j < 2; j++)
 10         {
 11             a[i][j] = 0;
 12         }
 13     }
 14 
 15     for (i = 0; i < 101; i++)        /* b表清零 */
 16     {
 17         for (j = 0; j < 2; j++)
 18         {
 19             b[i][j] = 0;
 20         }
 21     }
 22 
 23     for (i = 0; i < 101; i++)        /* c表清零 */
 24     {
 25         for (j = 0; j < 2; j++)
 26         {
 27             c[i][j] = 0;
 28         }
 29     }
 30 
 31     do {
 32         scanf("%d %d", &m, &n);
 33         a[m][0] = m;
 34         c[m][0] = m;
 35         a[m][1] = n;
 36     } while (m != 0);        /* 输入a表,输入c表的第0列幂,不输入c表的第1列系数 */
 37 
 38     do {
 39         scanf("%d %d", &m, &n);
 40         b[m][0] = m;
 41         c[m][0] = m;
 42         b[m][1] = n;
 43     } while (m != 0);        /* 输入b表,输入c表的第0列幂,不输入c表的第1列系数 */
 44 
 45     for (i = 0, j = 1; i < 101; i++)        /* 统计c表的第1列系数 */
 46     {
 47         c[i][1] = a[i][1] + b[i][1];
 48     }
 49 
 50     for (i = 100; i > 1; i--)        /* 从c表的第100行开始循环,一直到第2行 */
 51     {
 52         if (c[i][1] != 0)        /* 只统计c表第1列系数不为0 */
 53         {
 54             if (c[i][1] == 1)        /* 如果c表第1列系数==1,比如40 1 */
 55             {
 56                 if (cnt > 0)                /* 如果输出超过一次,记得前面加正号+ */
 57                 {
 58                     printf("+");
 59                 }
 60                 printf("x%d", c[i][0]);        /* 输出x40 */
 61             }
 62             else if (c[i][1] == -1)        /* 如果c表第1列系数==-1,比如40 -1 */
 63             {
 64                 printf("-x%d", c[i][0]);        /* 前面加负号-,系数-1省略,输出-x40 */
 65             }
 66             else        /* 其他情况,c表第1列系数不等于1,也不等于-1 */
 67             {
 68                 if (c[i][1] < 0)
 69                 {
 70                     printf("%dx%d", c[i][1], c[i][0]);        /* 系数小于0,直接输出 */
 71                 }
 72                 else
 73                 {
 74                     if (cnt > 0)
 75                     {
 76                         printf("+");        /* 如果系数大于0,需要考虑是否第一次输出,不是第一次输出,需要前面加正号+ */
 77                     }
 78                     printf("%dx%d", c[i][1], c[i][0]);
 79                 }
 80             }
 81             cnt++;
 82         }
 83     }
 84 
 85     if (c[1][1] != 0)        /* c表第1行第1列系数不等于0 */
 86     {
 87         {
 88             if (c[1][1] == 1)        /* 如果c表第1列系数==1 */
 89             {
 90                 if (cnt > 0)
 91                 {
 92                     printf("+");        /* 如果输出超过一次,记得前面加正号+ */
 93                 }
 94                 printf("x");
 95             }
 96             else if (c[1][1] == -1)        /* 如果c表第1列系数==-1 */
 97             {
 98                 printf("-x");
 99             }
100             else
101             {
102                 if (a[1][1] > 0 && cnt > 0)        /* 如果系数大于0,需要考虑是否第一次输出,不是第一次输出,需要前面加正号+ */
103                 {
104                     printf("+");        /* 如果输出超过一次,记得前面加正号+ */
105                 }
106                 printf("%dx", c[1][1]);
107             }
108             cnt++;
109         }
110     }
111 
112     if (c[0][1] != 0)
113     {
114         if (cnt > 0)
115         {
116             printf("+");        /* 如果系数大于0,需要考虑是否第一次输出,不是第一次输出,需要前面加正号+ */
117         }
118         printf("%d", c[0][1]);
119         cnt++;
120     }
121 
122     if (cnt == 0)
123     {
124         printf("0");
125     }
126 }

 

相关文章:

  • 2021-10-06
  • 2022-12-23
  • 2021-12-17
  • 2022-01-17
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-30
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案