从键盘读入两个100以内的整数,进行乘法运算并以竖式输出

从键盘读入两个100以内的整数,进行乘法运算并以竖式输出
输入
89 13
输出
89
13
267
89
1157
为什么是部分提交?


#include <stdio.h>
int main()
{    
    int a,b;
    scanf("%d %d",&a,&b);

    printf("%d\n",a);
    printf("%d\n",b);
    int m=0,n=0;
    int end=0;
    if((a/10==0 && b/10==0) || (a/10==0 || b/10==0))
    {
        end=a*b;
    }
    else {
        m=b/10;
        n=b%10;
        printf("%d\n",n*a);
        printf("%d\n",m*a);
        end=a*b;
    }
    printf("%d",end);
    
    return 0;
}
1 33
1
33
33
应该是
1 33
  1
33
---
  3
30 //竖式每一位跟上面相乘,最后再相加,你这少了这一步
---
33

int main()
{
    int a, b, end = 0;
    scanf("%d%d", &a, &b); //
    printf("%d\n%d\n", a, b);

    if (b < 10)
        end = a * b;
    else
    {
        int c[2], m, n;
        c[0] = b / 10 * 10;
        c[1] = b % 10;

        m = a * c[1];
        n = a * c[0];
        printf("%d\n%d\n", m, n);

        end = m + n;
    }

    printf("%d\n", end);

    return 0;
}

【以下回答由 GPT 生成】

优化方案 - Python实现

首先,将原始代码翻译为Python代码,得到如下:

a, b = input().split()
a = int(a)
b = int(b)

print(a)
print(b)

m = b // 10
n = b % 10

print(n * a)
print(m * a)

end = a * b
print(end)

接下来,我们可以对代码进行优化,使其更加简洁和高效。

优化方案1 - 使用f-string输出结果

首先,我们可以使用f-string来输出结果,这样可以使代码更加简洁。

a, b = input().split()
a = int(a)
b = int(b)

print(a)
print(b)

m = b // 10
n = b % 10

print(f"{n * a}")
print(f"{m * a}")

end = a * b
print(f"{end}")

优化方案2 - 改进乘法运算

然后,我们可以改进乘法运算的部分。原始代码中,我们使用了多次的乘法运算,可以将其简化为一次乘法运算。具体操作如下:

  • 将输入的数字转换为字符串,并获取其长度。
  • 将字符串转换为数字,并进行乘法运算。
  • 将乘法运算的结果转换为字符串,并计算其长度。
  • 将两个长度相减,并使用空格进行填充,得到最终结果。
a, b = input().split()
a = int(a)
b = int(b)

print(a)
print(b)

result = str(a * b)
length = len(result)

line = str(a * int(b[-1]))
print(line)
print(result[:-1].ljust(length, " "))
print(result)

这两种优化方案可以单独使用,也可以结合使用。可以根据个人需求选择使用哪种方案。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^