我写的方法很复杂,在我目前看的结果中算复杂的,但是我自己验算数据都是对的,计蒜客中4套数据只过了三套,我想知道哪里有错误,或者哪里可以修改,谢谢
#include <stdio.h>
#include <string.h>
int main()
{
int a, b;
scanf("%d %d", &a, &b);
int answer = a * b;
char str_answer[10];
sprintf(str_answer, "%d", answer);
size_t len1 = strlen(str_answer); // 读取乘法结果的长度记为len1
char A[4];
char B[4];
// 读取两个输入a,b的长度
sprintf(A, "%d", a);
sprintf(B, "%d", b);
size_t lena = strlen(A);
size_t lenb = strlen(B);
// 打印两个乘数
for (int i = 0; i < (len1 - lena); i++)
{
printf(" ");
}
printf("%d\n", a);
for (int i = 0; i < (len1 - lenb); i++)
{
printf(" ");
}
printf("%d\n", b);
int n = 0; // 计算末尾空格
for (int i = lenb; i > 0; i--)
{
int digit = B[i - 1] - '0'; // 提取一个数字
int j = digit * a; // 计算一次乘积
int c = 0;
// 计算j位数
if (j > 1000)
{
c = 4;
}
else if (j > 100)
{
c = 3;
}
else if (j > 10)
{
c = 2;
}
else
{
c = 1;
}
// 打印每次乘积的空格
for (int k = 0; k < len1 - (n + c); k++)
{
printf(" ");
}
printf("%d\n", j);
n++;
}
printf("%d", answer);
}