4 正整数格式输出
作者: 冯向阳时间限制: 1S章节: 其它
问题描述 :
内容:对于任意一个输入的位数不确定的正整数,实现以下格式输出函数:
将该整数按照标准的三位分解格式输出。例如,当用户输入82668234时,程序应该输出82,668,234。并使用以下main函数测试该功能函数。
函数原型为:
char* format(int n);
形参n:需要格式化的正整数
返回值char *:返回格式化插入逗号的数字字符串
功能:将输入的正整数n按位处理,从最低位开始计数,每三位添加字符',',实现格式转换。在函数内部动态分配一个字符数组,将结果存储到该数组中,并返回该数组的指针
main函数如下:
int main(){
int number;
while(cin>>number){
char *s=format(number);
cout<<s<<endl;
delete[] s;
}
return 0;
}
#include <iostream>
#include <vector>
#include <string>
using namespace std;
void format(char *ptr, int digit)
{
string s;
while (digit > 0) // 从最低位开始取余并转换为字符
{
int remainder = digit % 10;
s += to_string(remainder);//to_string()函数将数字敞亮转化成字符串形式
digit /= 10;
}
int length = s.length();
for (int i = 3; i < length; i += 4) // 每三位插入一个逗号
{
s.insert(i, ",");
length++; // 插入逗号后字符串长度增加1
}
for (int i = length - 1; i >= 0; i--)
{
cout << s[i]; // 逆序输出字符串
}
}
int main()
{
int digit;
char tmp, *ptr;
while (cin >> digit)
{
ptr = &tmp;
format(ptr, digit);
cout << endl;
}
return 0;
}