java算法 蓝桥杯 乘法运算

时间:2022-06-11 11:09:41
问题描述
  编制一个乘法运算的程序。
  从键盘读入2个100以内的正整数,进行乘法运算并以竖式输出。
输入格式
  输入只有一行,是两个用空格隔开的数字,均在1~99之间(含1和99)。
输出格式
  输出为4行或7行,符合乘法的竖式运算格式。
样例输入
89 13
样例输出
89
×13
━━━
267
89
━━━
1157
输入输出样例1解释
  3×89=267,则第四行267右侧对准个位输出。1×89=89,则第五行89右侧对准十位输出。267+890=1157,则1157右侧对准个位输出。
样例输入
16 8
样例输出
16
× 8
━━━
128
输入输出样例2解释
  8×16=128,则第四行128右侧对准个位输出。计算完成,不再输出。
 
 
代码::
package 蓝桥杯java算法训练;

import java.util.Scanner;

public class _5乘法运算 {
   public static void main(String[] args) {
//	 输入x,y
//       1.先看y是1位还是两位
//       2.若y是1位,则直接按序输出,但是第二行输出y时,前面加一个空格
//            2.1看x*y结果,结果一定要留三位,结果为一位数字则补两个空格,结果为两位,补一
//个空格,结果为三位直接输出
//       3.若y是2位,则分成十位数字s和个位数字g,分别乘以x结果为sx,gx。看十位相乘的结果去
//判断到底有几个空格
//            3.1若sx为两位,则x和y不用加空格,最后乘积的结果为三位,不够补空格
//            3.2若sx为三位,输入的x前加一个空格,y前也加一个。结果为4位数字,不够补空格
	   Scanner scanner = new Scanner(System.in);
	   int x = scanner.nextInt();//输入x,第一个乘数
	   int y = scanner.nextInt();//输入y,第二个乘数
       //现在分为两种情况 y>=10和y<10
	   if (y >= 10) {
		   //将y拆分了
		   int s = y/10;//十位数字
		   int g = y%10;//个位数字
		   //分别计算与x的乘积
		   int sx = s*x;
		   int gx = g*x;
		   //看十位与x的乘积的位数
		   if (sx >= 100) {//三位,前面补空格
			   System.out.println(" "+x);
			   System.out.println(" ×"+y);
			   System.out.println("━━━");
			   //现在要看个位数字和x相乘需要补几个0了
			   if (gx==0) {
				System.out.println("  0"+gx);
			}else if (gx <10) {
				System.out.println("   "+gx);//补三个空格
			}else if (gx <100) {
				System.out.println("  "+gx);//补两个空格
			}else {
				System.out.println(" "+gx);//补一个空格
			}
			System.out.println(sx);
			System.out.println("━━━");
			int num = x*y;
			//看结果需要补全几个空格
			if (num<10) {
				System.out.println("   "+num);
			}else if (num <100) {
				System.out.println("  "+num);
			}else if (num <1000) {
				System.out.println(" "+num);
			}else{
				System.out.println(num);
			}
			
		   }//sx>=100结束
		   else{//sx<100
			   System.out.println(x);
			   System.out.println("×"+y);
			   System.out.println("━━━");
			   if (gx==0) {
				System.out.println(" 0"+gx);
			}else if (gx<10) {
				System.out.println("  "+gx);
			}else if (gx<100) {
				System.out.println(" "+gx);
			}else {
				System.out.println(gx);
			}
			   System.out.println(sx);
			   System.out.println("━━━");
			   int num = x*y;
			   if (num<10) {
					System.out.println("  "+num);
				}else if (num <100) {
					System.out.println(" "+num);
				}else{
					System.out.println(num);
				}
			   
		   }//sx<100结束
		   
		   
	   }//y>=10结束
	   else{//y<10
		   System.out.println(x);
		   System.out.println("× "+y);
		   System.out.println("━━━");
		   int num = x*y;
		   if (num<10) {
			System.out.println("  "+num);
   		}else if (num<100) {
			System.out.println(" "+num);
		}else {
			System.out.println(num);
		}
		   
	   }//y<10结束
	   
   }
}