sta*_*rob 2 objective-c do-while
我正在阅读的书中的一个练习的示例显示以下代码:
#import <Foundation/Foundation.h>
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;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是这个,while语句显示(输入/ = 10),如果我理解这正确基本上意味着(输入=输入/ 10).现在,如果这是真的,为什么循环不能连续运行?我的意思是,即使你将0除以10,那么仍然会提取一个数字.如果用户要输入"50607",它将首先切断"7",然后切断"0",依此类推,但是为什么它在删除"5"后退出循环."5"之后的响应是否与程序中5和6之间的"0"相同?
你似乎对/和之间的区别感到困惑%.该循环正在划分input和使用商,而不是余数.对于您的示例50607,循环进行5次迭代:
input = 50607input = 5060input = 506input = 50input = 5在最后一次迭代之后,input变为0并且循环结束.
| 归档时间: |
|
| 查看次数: |
4707 次 |
| 最近记录: |