美文网首页
4 数组-[Java学习笔记]

4 数组-[Java学习笔记]

作者: dk_qi | 来源:发表于2018-12-30 14:21 被阅读0次

    习题

    1 多项式加法(5分)

    题目内容:

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

    思路

    1. 用数组来存放数据,用数组下标来表示幂。
    2. 当两次读到幂为0的项时,读入结束。
    3. 输出时注意几种特殊情况:
    • 只有0项时,只输出0。
    • 系数为1的项,不输出系数。
    • 幂为1的项如果存在,该项不输出幂数。
    • 系数可能是负数。

    代码

    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner  in = new Scanner(System.in);
            int index, coef, flag = 0, flag2 = 0, flag3 = 0;
            int[] m = new int[101];     //用下标来表示幂
            //读入数据
            do {
                index = in.nextInt();
                coef = in.nextInt();
                m[index] += coef;
                if(index == 0) {
                    flag++;
                }
            }while(flag < 2);
            //输出数据
            for(int i = 100; i >= 0; i--) {
                if(m[i] != 0) {
                    flag3 = 1;  //flag3用来判断是否所有项都为0
                    if(m[i] > 0) {
                        if(flag2 == 0) {    //控制第一个"+"输出
                            flag2 = 1;
                        }
                        else {
                            System.out.print("+");
                        }
                    }
                    else {
                        System.out.print("-");
                        m[i] = -m[i];
                        flag2 = 1;
                    }
                    
                    if(m[i] != 1) {     //当系数不为1时
                        System.out.print(m[i]);
                    }
                    else if(i == 0){
                        System.out.print(m[i]);
                    }
                    
                    if(i == 1) {    
                        System.out.print("x");
                    }
                    else if(i != 0){
                        System.out.print("x"+i);
                    }
                }
            }
            if(flag3 == 0) {    //所有项都为0时只输出0
                System.out.print("0");
            }
            
        }
    }
    

    ---END---

    相关文章

      网友评论

          本文标题:4 数组-[Java学习笔记]

          本文链接:https://www.haomeiwen.com/subject/gvkvlqtx.html