翁恺老师java作业第五周

import java.util.Scanner;
/*** 一个多项式可以表达为x的各次幂与系数乘积的和,比如:* 2x6+3x5+12x3+6x+20* 现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。* 程序要处理的幂最大为100。* @author Administrator**/
public class Homework1 {public static void main(String[] args) {// TODO Auto-generated method stub//定义初始变量Scanner in=new Scanner(System.in);int Size=101;//定义数组上限(0~100)int i,a,n;//i用于循环,a,n为输入的数据int flag=0;//用flag 来控制输入次数int[] Dxs=new int[Size];//定义多项式数组//计算输入while (flag<2) {n=in.nextInt();a=in.nextInt();//输入数据,a是系数,n是幂if(n==0){flag++;//输入为零,多项式无效,输入下一个多项式}//对输入的多项式进行累加if(Dxs[n]!=0){Dxs[n]+=a;//数组一开始一定为0,所以这里不会执行}else{Dxs[n]=a;//直接执行这里的代码,然后进行累加}}//输入计算完毕,开始计算输出//计算最大幂数int max=0;for(i=Size;i>0;i--)//初始定义的i再次使用,这里i是为了从大到小遍历哪个位置有数据{if(Dxs[i-1]!=0)//注意下标{max=i;break;}}//开始输出数据if(max==0){//这里说明两个多项式最大幂数都是0,直接输出系数即可System.out.print(Dxs[0]);}else//幂数不为0,范围是从1到100(由于题目限制,不能是负数{for(i=max;i>-1;i--)//从最高次幂,遍历到0次幂{//幂数大于1if(i>1){if(Math.abs(Dxs[i])==1){//系数绝对值为1,直接输出 x和幂数System.out.print("x"+i);}else if(Math.abs(Dxs[i])>1){//系数绝对值大于1,可以输出系数绝对值和 x 加幂数System.out.print(Math.abs(Dxs[i])+"x"+i);}}//幂数等于1else if(i==1){if(Math.abs(Dxs[i])==1){//系数绝对值和幂数都为1,直接输出 xSystem.out.print("x");}else if(Math.abs(Dxs[i])>1){//幂数为1,输出系数的绝度值和 xSystem.out.print(Math.abs(Dxs[i])+"x");}}//系数不为0else if(Dxs[i]!=0){//输出系数System.out.print(Math.abs(Dxs[i]));}//判断正负if(i>0){//因为是从i开始的,所以要减一if(Dxs[i-1]<0){System.out.print("-");}else if(Dxs[i-1]>0){System.out.print("+");}}}			}in.close();//这是后面学习的io流知识,可以不加,加上纯属是为了让编译器没有warning}
}

如果有更好的算法结构,欢迎在评论区打出你的文章地址,如果看不懂,请在评论区打出你的问题


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部