9

「ObjectiveCでのプログラミング」(Kochan)から:

プログラム5.8は、ユーザーに数字の入力を求め、次にその数字の右端から左端までの数字の表示に進みます。

// Program to reverse the digits of a number
#import <Foundation/Foundation.h>

int main (int argc, char *argv[])

{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int number, right_digit;

NSLog (@"Enter your number.");
scanf ("%i", &number);

while ( number != 0 ) {
right_digit = number % 10;
NSLog (@"%i", right_digit);
number /= 10;
}

[pool drain];
return 0;
}

私の質問は、ユーザーが1桁の数字-1から9を入力するとどうなるかということです。そのような事件についての資料は見つかりませんでした。コンパイル後、プログラムはその1桁を返すだけです。何故ですか?私はこのタスクのコードを考え出し、文字通り2時間かけて、この「数字が1桁の場合」の問題に対するループと意思決定を取り入れようとしていました。そして、解決策はとても無知でした!

4

1 に答える 1

19

モジュロ演算子は、除算後の余りを返します。8 % 10 の場合、8 / 10 は 0 で余りが 8 であるため、結果は 8 になります。38 % 10 の場合、38 / 10 は 3 で余りが 8 であっても同じ結果になります。

編集: Modulo は、通常、小学校の最初の部門として学んだものです。ほとんどの子供がモジュロに問題がないのは面白いですが、8 / 10 が 0.8 であることを知ったとき、モジュロを理解するのに問題があります。

于 2012-09-06T06:11:50.027 に答える