PAT A1001 A+B Format(20)

题意

  • 把两个数相加,三位一逗号格式(从最低位开始)。

注意

  1. 负号。
  2. 第一个逗号若在首位,则不输出。
  3. 溢出(测试用例无体现)

单词

  1. commas 逗号

代码

#include<iostream>
#include<string>
using namespace std;
void cal(int a, int b)
{
	int c = a + b;
	int k = 0;
	int cc = c;
	while (cc)
	{
		cc = cc / 10;
		k++;
	}

	string str;
	str = to_string(c);
	//cout << str;

	char st[100] = {0};
	if(k>3)
	{
		if (c > 0)
		{
			int i = 0;
			int d = 0;
			while (i <= k - 1)
			{
				if (((k - i) % 3 == 0) && i != 0)
				{
					st[i] = ',';
					cout << st[i];
					d++;
				}
				st[i + d] = str[i];
				cout << st[i + d];
				i++;

			}
		}
		else
		{
			st[0] = '-';
			cout << st[0];

			int i = 1;
			int d = 0;
			while (i <= k)
			{
				if (((k + 1 - i) % 3 == 0) && i != 1)
				{
					st[i] = ',';
					cout << st[i];
					d++;
				}
				st[i + d] = str[i];
				cout << st[i + d];
				i++;
			}
		}
		cout<<endl;
	}
	else
	{
		cout<<c<<endl;
	}

}
int main()
{
	int a, b;
	while(cin >> a >> b)
		cal(a, b);
		
	return 0;
}

上面这个写得太搓了,,,再来一个吧

#include<iostream>
#include<string>
using namespace std;

void cal(int a, int b)
{
	int c = a + b;
	int cc, k;
	for (cc = c, k = 0; cc; k++)
		cc /= 10;                  // 5/10 = 0 统计位数

	if (!c) k = 1;                 // 处理0
	string str = to_string(c);

	if (c < 0)                       // 20190225改
	{
		cout << "-";
		str = str.substr(1, str.size() - 1);
	}
	for (int i = 0; i < k; i++)
	{
		if (((k - i) % 3 == 0) && i != 0)
			cout << ',';
		cout << str[i];
	}
	cout << endl;
}

int main()
{
	int a, b;
	while (cin >> a >> b)
		cal(a, b);

	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值