2012-09-06 25 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