编写程序,将某一个输入的位数不确定的正整数按照标准的三位分节格式输出,例如,当用户输入82668634时,程序应该输出82,668,634。
编程,一个良好的思维极其重要。
首先分析输入:输入是一个多位数(int型)
输出分析:82,668,634为一个字符串
思考:如何处理这个多位数?怎么样处理才能使用里面的数字。这时候对于十进制的多位数往往是采用除以10取余数,一位一位的提取出来。
例如:123
123/10= 12*****3
12/10 = 1******2
1/10 = 0******1
这样就能把1,2,3以倒叙的方式提取出来,再使用cstring库中的strrev使字符串颠倒过来,这样就变成了1 2 3以单个元素的形式存储在内存单元里。
这里我们注意到,逗号“,”的添加方式是从最低位每逢三添加一个,这样,我们只需要利用一个计数器,提取一位,+1,当加三的时候,额外添加一个逗号“,”,最后翻转一下即可。
初步代码如下:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
cout << "请输入一个整数:" << endl;
int n;
cin >> n;
int count = 0;//计数器,初始化为0
char a[50];//用数组存储处理过后的数据
char *p = a;//使用指向数组a的指针
while(n != 0)
{
*p = n % 10 + '0';//注意这里 +‘0’ 是必须的,如果不加‘0’的话,指针的值不会转换成数值1,2,3??????
n = n / 10;//会自动下取整
count ++;//取出一位最高位的数后,计数器加一(也相当于现在p中数据的位数)
p++;//指针p后移一位,以便于写入下一位数
if(count % 3 == 0 && n!= 0)//注意这里必须添加这个条件,因为如果整数位数恰好是3的倍数的话,会导致逗号多添加 //一个,比如123,当count == 3时,这时候p中会使3,2,1,会在最末尾添加多余的逗 //号“,”,所以,必须添加这个条件。
{p = ',';
p++;//指针p后移一位,以便于写入下一位数
}
}
strrev(a);
cout << a <<endl;
return 0;
}