第四章(数组) 编程题 1
2015-12-26 13:38
183 查看
题目内容: 一个多项式可以表达为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
题目难点分析:
多项式加减法,主要有以下难点,是一开始没考虑到的:
1. 某个多项式系数为1时,不能写成1x5,而应该是x5;
2. 某个多项式幂为1时,不能写成5x1,而应该是5x;
3. 首项前面不能加“+”号,因此需要做一个判断首项的记录;
4. 多项式只有0时输出0;
5. x的0次幂如果系数为0,则应该不输出,但我没实现出来……
以下是答案:
现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。 程序要处理的幂最大为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. 某个多项式系数为1时,不能写成1x5,而应该是x5;
2. 某个多项式幂为1时,不能写成5x1,而应该是5x;
3. 首项前面不能加“+”号,因此需要做一个判断首项的记录;
4. 多项式只有0时输出0;
5. x的0次幂如果系数为0,则应该不输出,但我没实现出来……
以下是答案:
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[] a = new int[10]; int[] b = new int[10]; boolean isfirst = true; while (true) { int i = in.nextInt(); int j = in.nextInt(); a[i] = j; if ( i == 0) { break; } } while (true) { int i = in.nextInt(); int j = in.nextInt(); b[i] = j; if ( i == 0) { break; } } in.close(); for (int i =0; i < a.length ; i++) { if ( a[i] != 0 || b[i] != 0) { a[i] = a[i] + b[i]; } } for (int i = a.length-1 ; i > 0; i--) { if (a[i] > 0) { if ( isfirst) { isfirst = false; } else { System.out.print("+"); } if ( a[i] == 1) { if ( i ==1) { System.out.print("x"); } else { System.out.print("x" + i); } } else { if ( i ==1) { System.out.print(a[i] + "x"); } else { System.out.print(a[i] + "x" + i ); } } } else if (a[i]<0) { if ( i == 1) { System.out.print(a[i] + "x"); } else { System.out.print(a[i] + "x" + i ); } } } if ( a[0] != 0 && isfirst==false) { System.out.print("+" + a[0]); } else { System.out.print(a[0]); } } }
相关文章推荐
- zw.delphi不同版本程序运行速度测试
- python 程序构架
- 判断101-200之间有多少个素数,并输出所有素数。
- 用Python脚本做一些网页游戏中力所能及的自动化任务
- C语言学习笔记----伊能C语言学习笔记----变量可以在程序的三个地方声明
- 使用Python实现Hadoop MapReduce程序
- Hibernate 学习代码/笔记(四)(一对多)
- C语言学习笔记----伊能C语言学习笔记----如何在一个文件中使用另一个文件中定义的变量呢??
- Java基础学习总结(1)——equals方法
- Java基础学习总结(1)——equals方法
- 25个Java机器学习工具&库
- Eclipse安装WindowBuilder
- 实战c++中的智能指针unique_ptr系列-- unique_ptr的get_deleter方法(自定义删除器)
- 实战c++中的智能指针unique_ptr系列-- unique_ptr的get_deleter方法(自定义删除器)
- eclipse--.classpath .project文件的含义
- Weiphp随笔,百度天气API接口
- Java随机生成验证码
- 【Java学习笔记】——Statement & PrepareStatement
- MAC上安装JAVA 1.8,安装不成功,以及配置JAVA_HOME遇到的问题
- R语言的科学编程与仿真 chapter 4 答案