大きな整数を文字列で表す
1796 ワード
5676561321などの一連の数字を入力します.カンマで区切られた出力が必要:5676561321
方法1:
メソッド1の最大の問題はint表現範囲を超えた場合にエラーが発生することです.例えば、入力
2147483647(2の31乗マイナス1)出力結果は2147483647.入力時
2147483648
結果は0.
注意:
方法2:文字列の利用
方法1:
#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;
}
メソッド1の最大の問題はint表現範囲を超えた場合にエラーが発生することです.例えば、入力
2147483647(2の31乗マイナス1)出力結果は2147483647.入力時
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 。
方法2:文字列の利用
#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");
}