竖式计算器

xcccc233 2020-05-23 12:29:44
用c语言完成,我只会c++
...全文
642 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xcccc233 2020-05-27
  • 打赏
  • 举报
回复
引用 8 楼 弦之弈 的回复:
[quote=引用 7 楼 弦之弈 的回复:]
竖式那一段,我用C写了一部分,剩下把C++转化为C基本都能搞定。


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,就是正确的竖式
}
第五行笔误[/quote]

引用 8 楼 弦之弈 的回复:
[quote=引用 7 楼 弦之弈 的回复:]
竖式那一段,我用C写了一部分,剩下把C++转化为C基本都能搞定。


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,就是正确的竖式
}
第五行笔误[/quote]

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");
}

我自己写的,还有点问题
xcccc233 2020-05-27
  • 打赏
  • 举报
回复
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"); } 我自己写了个这样的,但还是有一点问题
弦之弈 2020-05-25
  • 打赏
  • 举报
回复
引用 7 楼 弦之弈 的回复:
竖式那一段,我用C写了一部分,剩下把C++转化为C基本都能搞定。

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,就是正确的竖式 
}
第五行笔误
弦之弈 2020-05-25
  • 打赏
  • 举报
回复
竖式那一段,我用C写了一部分,剩下把C++转化为C基本都能搞定。

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,就是正确的竖式 
}
chxchxkkk 2020-05-23
  • 打赏
  • 举报
回复
你用c++写出来,帮你“翻译”成c
xcccc233 2020-05-23
  • 打赏
  • 举报
回复
引用 1 楼 Simple-Soft 的回复:
会C++基本就会C了,C只是C++的子集啊
不会格式化字符串,还有一些内置函数,感觉好艰难
Simple-Soft 2020-05-23
  • 打赏
  • 举报
回复
会C++基本就会C了,C只是C++的子集啊
xcccc233 2020-05-23
  • 打赏
  • 举报
回复
引用 3 楼 chxchxkkk 的回复:
你用c++写出来,帮你“翻译”成c
感觉c++写不出来这种复杂的输出
Simple-Soft 2020-05-23
  • 打赏
  • 举报
回复
接受输入可以用scanf,竖式确实挺麻烦的,比如15*13,最后应该怎么输出?

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧