两种思路:
1、用数字的操作取到每一位,cnt记录从左往右数是第几位
2、用字符的操作,从右数每三位输出一个‘,’
Note:
第二种方法用到了to_string(),可将数值变成string
code1:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a, b;
int cnt = 0;//计数(3)
cin >> a >> b;
int sum = a + b;
int digit = 0;//位数
int division = sum;//计算位数所用的被除数
while (division)
{
digit++;
division /= 10;
}
//cout << digit << endl;
if (sum < 0)
{
cout << "-";
sum *= -1;
}
if (sum == 0) cout << 0;
int total = digit;//记录总位数
while (digit--)
{
if ((total-cnt) % 3 == 0 && cnt != 0) cout << ",";
int divisor = pow(10, digit);
int dig = sum / divisor;//当前要输出的最高位
cout << dig;
sum -= dig * divisor;//去掉最高位
cnt++;
}
//cout << a + b << endl;
return 0;
}
code2:
#include<iostream>
#include<string>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
int c = a + b;
string s = to_string(c);
for (int i = 0; i < s.size(); i++)
{
cout << s[i];
if (s[i] == '-') continue;
if ((s.size() - i - 1) % 3 == 0 && i != s.size() - 1) {//s.size()-i-1即从右往左数的位数
cout << ',';
}
}
return 0;
}