2012-09-06 49 views
8

從「編程的目標C」(科昌):模運算符在目標C

方案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到9時會發生什麼?我找不到任何關於此類案件的材料。 編譯完成後,程序繼續返回單個數字。這是爲什麼? 我試圖想出這個任務的代碼,並花費了2個小時,試圖將循環和決策制定爲這個「如果數字是單個數字」的問題。解決方案太無知了!

回答

15

模運算符爲您提供除法後的餘數。如果喲有8%10,結果爲8,因爲8/10爲0,餘數爲8.如果您有38%10,38/10是3且餘數爲8,則得到相同結果。

編輯: Modulo是你通常學會的第一所師範學校。有趣的是,大多數孩子沒有模數問題,但是當他們得知8/10是0.8時,他們在理解模數方面存在問題。

+0

號碼本身成爲提醒,明白了! –

+1

@Mr_Vlasov如果這回答了您的問題,您可能想要接受它(通過點擊旁邊的複選標記輪廓),讓其他人知道您不再尋找改進的答案,並獲得全新的徽章堆棧溢出。 – dasblinkenlight

+0

加1小學 – BootMaker