题意
- 把两个数相加,三位一逗号格式(从最低位开始)。
注意
- 负号。
- 第一个逗号若在首位,则不输出。
- 溢出(测试用例无体现)
单词
- 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;
}