题干解读:输入一个整数N,将其先转为字符串,再从末尾到头部每3位加上一个分割符
思路:先用to_string将输入的整数转化为字符串.
由于是每3位数字前加入一个分割符','故使用一个变量j来标记原字符串中以及遍历过的字符的个数。
当j能够整除3时,就代表遍历了3个数,此时就该使用insert函数插入',',插入的位置应该是len(字符串在插入符号前的实际长度)-j(遍历原字符串的元素的个数)-n(字符串以及加入的符号的个数),即在原字符串中应该插入分隔符的位置。
注意:到每插入一个 后字符串的总长度变化,应用一个变量l记录初始长度,
最后为了避免在数字开头加入分隔符,循环的终止条件应为j<l-1即已经遍历的元素个数应该小于总元素个数-1.
#include <iostream>
#include <string>
using namespace std;
int main() {
int N;
cin >> N;
string s = to_string(N);
int j = 0;
int l=s.length();//初始时的字符串长度.
int len = s.length();//len为字符串s的实际长度.
int n=0;//n为插入的,的个数
do {
n = j/3;//n为当前插入的,的个数
j++;
if (j % 3 == 0) {
s.insert(len-j-n, ",");
len++;
}
} while (j<l-1);
cout << s;
}

京公网安备 11010502036488号