using namespace std;
int main()
{
int a, b;
int k;
int n[10] = {-1};
int i = 1;
int flag = 0;
int flag1 = 0;
cin >> a >> b;
int c = a + b;
k = c;
if (c == 0)
cout << c;
if (c < 0)
{
flag1 = -1;
c = -c;
k = -k;
}
while (k>=1)
{
k = c/10;
c = c%10;
n[i++] = c;
c = k;
flag++;
}
if (flag1 == -1)
cout << "-";
for (int i = flag; i >=1; i--)
{
if (flag <= 3)
cout << n[i];
else{
if (i % 3 == 0)
cout << ",";
cout << n[i];
}
}
}
反思:这道题不难,还是花了一些功夫。原因在于读题不清楚,想成了100,200,234这种,第二是因为逗号有些数据在开头就打出来逗号(判断有问题)
最后贴上柳诺大神的代码
#include <iostream>
#include<string>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
string s = to_string(a + b);
int len = s.length();
for (int i = 0; i < len; i++) {
cout << s[i];
if (s[i] == '-') continue;
if ((i + 1) % 3 == len % 3 && i != len - 1) cout << ",";
}
return 0;
}
比较我能学习到
1:c++11函数
std::string to_string( int value ); (1) (C ++11起)
std::string to_string( long value ); (2) (C ++11起)
std::string to_string( long long value ); (3) (C ++11起)
std::string to_string( unsigned value ); (4) (C ++11起)
std::string to_string( unsigned long value ); (5) (C ++11起)
std::string to_string( unsigned long long value ); (6) (C ++11起)
std::string to_string( float value ); (7) (C ++11起)
std::string to_string( double value ); (8) (C ++11起)
std::string to_string( long double value ); (9) (C ++11起)
std::to_string
是C++标准(2011年)的最新版本中引入的功能。旧的编译器可能不支持它。
1) 有符号十进制整数转换为字符串内容相同的std::sprintf(buf, “%d”, value)会产生足够大的buf
.
2) 有符号十进制整数转换为字符串内容相同的std::sprintf(buf, “%ld”, value)会产生足够大的buf
.
3) 有符号十进制整数转换为字符串内容相同的std::sprintf(buf, “%lld”, value)会产生足够大的buf
.
4)std::sprintf(buf, "%u", value)
会产生足够大的buf
了同样内容的一个字符串转换成一个无符号十进制整数.
5)std::sprintf(buf, "%lu", value)
会产生足够大的buf
了同样内容的一个字符串转换成一个无符号十进制整数.
6)std::sprintf(buf, "%llu", value)
会产生足够大的buf
了同样内容的一个字符串转换成一个无符号十进制整数.
6)std::sprintf(buf, "%llu", value)
会产生足够大的buf
了同样内容的一个字符串转换成一个无符号十进制整数.
@ 7,8 @std::sprintf(buf, "%f", value)
会产生足够大的buf
了同样内容的一个字符串转换成一个浮点值.
9) std::sprintf(buf, "%Lf", value)
会产生足够大的buf
了同样内容的一个字符串转换成一个浮点值.
参数
value - 一个数值转换
返回值
一个字符串保持转换后的值