美文网首页
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学习笔记]

    习题 1 多项式加法(5分)题目内容:一个多项式可以表达为x的各次幂与系数乘积的和,比如:2x6+3x5+12x3...

  • ##Java学习笔记之基础类库笔记

    Java学习笔记之基础类库笔记 Object 所有类,数组,枚举类的父类 Objects(Java7新增) 工具类...

  • Java学习笔记

    我的Java学习笔记 前言 1. 基本语法 2. 面向对象 3. 异常处理 4. 数组和常用类(String、St...

  • alg4th-1.1

    [TOC] algorithm 4th笔记(1.1) 二分查找 前提:数组有序BinarySearch.java ...

  • Java学习笔记五:Java数组

    一、数组的定义 数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其...

  • Java学习笔记4 - switch语句和数组

    本文主要内容:1、流程控制语句switch2、数组 01 switch语句 a、switch只能针对某个表达式的值...

  • java学习笔记(四)数组

    个人笔记,仅供参考 1、数组 1.2、定义 数组是可以存储多个相同数据类型的数据结构 1.3、数组的声明 数据类型...

  • Numpy学习笔记

    Numpy学习笔记 1、数组的定义和应用 2、数组元素的索引选取 3、数组的计算 4、线性代数的运行计算 1 Ar...

  • java/android 设计模式学习笔记(4)---抽象工厂模

    java/android 设计模式学习笔记(4)---抽象工厂模式 【备注】只用于个人收藏

  • HashMap源码学习笔记

    Java中HashMap源码学习笔记。1.8 / 1.7 中设计思路比较 jdk1.7 1.确定数组下标 2.pu...

网友评论

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

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