java算法 蓝桥杯 乘法运算

时间:2023-03-08 15:34:55
java算法  蓝桥杯  乘法运算
问题描述
  编制一个乘法运算的程序。
  从键盘读入2个100以内的正整数,进行乘法运算并以竖式输出。
输入格式
  输入只有一行,是两个用空格隔开的数字,均在1~99之间(含1和99)。
输出格式
  输出为4行或7行,符合乘法的竖式运算格式。
样例输入
89 13
样例输出
×13
━━━

━━━

输入输出样例1解释
  3×89=267,则第四行267右侧对准个位输出。1×89=89,则第五行89右侧对准十位输出。267+890=1157,则1157右侧对准个位输出。
样例输入
16 8
样例输出
× 8
━━━
输入输出样例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结束 }
}