• 多项式加法


    题目内容:

    一个多项式可以表达为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

    时间限制:500ms内存限制:32000kb

    来源:网易云课堂——C程序设计(翁恺)第六章第一题

     1 #include<stdio.h>
     2 #define true 1
     3 #define false 0 
     4 int main()
     5 {
     6     int polynomial[101] = {0};
     7     int i, temp;
     8     int max = 0;
     9     int flag = 0;  /*结束输入标志位,表示已经
    10                    输入的多项式个数*/ 
    11     
    12     while(flag != 2) {
    13         scanf("%d %d", &i, &temp);
    14         polynomial[i] += temp; //更新多项式系数 
    15         
    16         if (i > max)  //找出最大幂次数 
    17             max = i;
    18                 
    19         if (i == 0)  //限定输入2个多项式 
    20             flag++;    
    21     }
    22     
    23     int signForInteger = true;
    24     int signForZero = true;
    25     for (i = max; i >= 0; i--) {
    26         if (polynomial[i] != 0) {
    27             signForZero = false;   
    28             
    29             if (polynomial[i] < 0)
    30                 signForInteger = true;  //负数的系数前略去加号 
    31                 
    32             if (signForInteger == true)  
    33                 signForInteger = false;  //最高次项略去加号 
    34             else 
    35                 printf("+" ); //非最高次项默认加号 
    36                 
    37             if (i != 0 && polynomial[i] != 1)  //省略系数1 
    38                 printf("%d", polynomial[i]);
    39                     
    40             if (i == 0)  //常数项 
    41                 printf("%d
    ",polynomial[i]);
    42             else if (i == 1)  //i = 1 省略幂次数1
    43                 printf("x");
    44             else
    45                 printf("x%d", i);    
    46         }
    47         else {    
    48             if (i == 0) {
    49                 if (signForZero == false)
    50                     printf("+");  //多项式末项为零
    51                     
    52                 printf("%d
    ", polynomial[i]);  //多项式为零 
    53             }
    54                 
    55         }
    56     }    
    57     return 0;
    58 }

    思路:

  • 相关阅读:
    模电电路分析
    正式答辩提问
    Dockerfile
    Docker常用命令
    docker镜像与容器
    Docker容器与容器数据
    docker命令自动安装
    Docker与虚拟机
    Java Lambda表达式 Stream
    Java Lambda表达式
  • 原文地址:https://www.cnblogs.com/tonony1/p/4224874.html
Copyright © 2020-2023  润新知