一千萬個為什麽

搜索

目標C“做 - 而”


我正在閱讀的書中的一個練習的示例顯示以下代碼:

#import 

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

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int input, reverse, numberOfDigits;

    reverse = 0;
    numberOfDigits = 0;

    NSLog (@"Please input a multi-digit number:");
    scanf ("%i", &input);

    if ( input < 0 ) {
        input = -input;
        NSLog (@"Minus");
    }

    do {
        reverse = reverse * 10 + input % 10;
        numberOfDigits++; 
    } while (input /= 10);

    do {
        switch ( reverse % 10 ) {
        case 0:
            NSLog (@"Zero");
            break;
        case 1:
            NSLog (@"One");
            break;
        case 2:
            NSLog (@"Two");
            break;
        case 3:
            NSLog (@"Three");
            break;
        case 4:
            NSLog (@"Four");
            break;
        case 5:
            NSLog (@"Five");
            break;
        case 6:
            NSLog (@"Six");
            break;
        case 7:
            NSLog (@"Seven");
            break;
        case 8:
            NSLog (@"Eight");
            break;
        case 9:
            NSLog (@"Nine");
            break;
        }
        numberOfDigits--;
    } while (reverse /= 10);

    while (numberOfDigits--) {
        NSLog (@"Zero");
    }


    [pool drain];   
    return 0;   
}   

我的問題是這個,while語句顯示(輸入/ = 10),如果我理解這正確基本上意味著(輸入=輸入/ 10)。現在,如果這是真的,為什麽循環不能連續運行?我的意思是,即使你將0除以10,那麽仍然會提取一個數字。如果用戶輸入“50607”,它將首先切斷“7”,然後切斷“0”,依此類推,但是為什麽在刪除“5”後它退出循環。 “5”之後的響應是否與程序中5和6之間的“0”相同?

最佳答案

您似乎對/之間的區別感到困惑。該循環正在劃分 input 並使用商而不是余數。對於 50607 的示例,循環進行5次叠代:

  1. input = 50607
  2. input = 5060
  3. input = 506
  4. input = 50
  5. input = 5

在最後一次叠代之後, input 變為 0 ,循環結束。

轉載註明原文: 目標C“做 - 而”

猜你喜歡