33,311
社区成员
发帖
与我相关
我的任务
分享
void add(int a, int b)
{
printf("%10d\n+%9d\n---------------------\n%10d\n\n", a, b, a + b);
}
void sub(int a, int b)
{
printf("%10d\n-%9d\n---------------------\n%10d\n\n", a, b, a - b);
}
void mul(int a, int b)
{
int res = a * b;
printf("%10d\n*%9d\n---------------------\n", a, b);
int count = 1;
for (;b != 0;)
{
int c;
c = b % 10;
b = b / 10;
int i = a * c, j = 0;
for (;i != 0;j++)
{
i = i / 10;
}
i = 9 - i;
i = i - count;
for (;i != 0;i--)
{
printf(" ");
}
printf("%d\n\n", a * c);
count++;
}
if (count != 2)
{
printf("---------------------\n%10d\n\n", res);
}
else
printf("\n");
}
int count_place(int x) // 计算数字的位数
{
int tmp = x;
int i = 0;
while(tmp!=0 && )
{
tmp = tmp/10;
i++;
}
return i;
}
void add_vertical(int a, int b) // 加法竖式
{
int i;
int place_one = count_place(a);
int place_two = count_place(b);
int sum;
sum = a + b;
int place_three = count_place(sum);
if(place_one == place_two)
{
printf("\t%d\n",a);
printf("\t%d\n",b);
}
if(place_one > place_two)
{
int diff = place_one - place_two;
printf("\t %d\n",a);
printf("+\t ");
for(i=0;i<diff;i++)
{
printf(" ");
}
printf("%d\n",b);
}
printf("-----------------------");
// 同样的方法,按照位数的差定位并输出sum,就是正确的竖式
}