输入一串数字,如:5676561321;要求输出带逗号分隔的:5,676,561,321
方法一:
#include <iostream>
using namespace std;
int main()
{
int i=0,array[50]={0},n,j;
cin>>n;
while(n>0)
{
array[i++]=n%1000;
n=n/1000;
}
for(j=i-1;j>0;j--)
cout<<array[j]<<",";
cout<<array[0];
return 0;
}
方法一最大的问题是超出int表示范围时会出错,例如我们输入
2147483647(2的31次方减1)
输出结果是2,147,483,647.当输入2147483648
结果是0.
注:
C语言中int分为无符号和有符号两种,无符号就是只表示非负整数,一般现在32位机器中,int使用32位二进制表示,最大就是32个1,即2的32次方减1,是40多亿。 对于有符号整数(Java中不存在有无符号一说,所以都看作是有符号的),起始为1表示负数,所以最大的数只能是以0开始,后边31个1,即2的31次方减1 。 2的30次方是1G,大约1000*1M,也就是10多亿,再乘以2就是20多亿了。
方法二:利用字符串
#include <iostream>
#include <string>
using namespace std;
int main()
{
int i,j,k,length,count=0;
string s;
cin>>s;
length=s.size();
if(length%3==0)
{
for(i=0;i<length-1;i++)
{
cout<<s[i];
if((i+1)%3==0)
cout<<",";
}
cout<<s[length-1];
}
else if((length%3)==1)
{
cout<<s[0]<<",";
for(j=1;j<length-1;j++)
{
cout<<s[j];
if(j%3==0)
cout<<",";
}
cout<<s[j];
}
else if((length%3)==2)
{
cout<<s[0]<<s[1]<<",";
for(k=2;k<length-1;k++)
{
cout<<s[k];
count++;
if(count%3==0)
cout<<",";
}
cout<<s[k];
}
system("pause");
}