0

重複の可能性:
整数をその数字に分割しますc ++

与えられた数4567

4C ++では5、、、、6およびに個別にアクセスするにはどうすればよいです7か?

4

4 に答える 4

2

1の位はn % 10、、10の位は(n / 10) % 10、などです。負の数に注意してください。ルールは少し異なります。

于 2012-08-21T02:26:03.873 に答える
1

すでにここにある回答を増やすだけです...あなたは長い除算をします。これにより、最下位桁が最初に表示されます。

n = abs(n);
while( n != 0 ) {
    int r = n % 10;
    n = n / 10;
    cout << r << endl;
}

出力:

7
6
5
4

明らかに、この方法では最下位桁が最初に表示されます。もちろん、それを配列に生成して、各数値にその累乗でアクセスできるようにすることもできます (要素 0 は 10^0、1 は 10^1 など)。

逆にするには、数値を文字列に変換します。このアプローチは、長い除算よりも効率がわずかに低下します。この質問で C++ が述べられていることは知っていますが、C 関数を使用しても問題はありませんitoa

char s[33];
itoa(abs(n), s, 10);
for( char *d = s; d != 0; d++ ) {
    int r = *d - '0';
    cout << r << endl;
}

出力:

4
5
6
7
于 2012-08-21T02:56:20.423 に答える
0

C++については完全にはわかりませんが、少なくともpythonは常に切り捨てられることを知っているので、最後の桁を取得するにはmod 10を使用してから、最後の桁を10で割ります。つまり、sudoコードで

 int num_to_test = 1234;
 for (int i = 0; i < num_to_test.length; i++ ) {
      print num_to_test % 10;
      num_to_test = num_to_test / 10;
 }
于 2012-08-21T02:29:39.773 に答える
0

少し計算して、行くにつれて数を減らします。このような:

int thousands = floor(num / 1000);
num = num - thousands * 1000;

int hundreds = floor(num / 100);
num = num - hundreds * 100;

さらに、それがどこに向かっているのか見ていただければ幸いです。

于 2012-08-21T02:30:08.303 に答える