2012-09-06 10 views
8

Desde la "Programación en C Objetivo" (Kochan):operador módulo en C Objetivo

Programa 5.8 pide al usuario que introduzca un número y luego procede a mostrar los dígitos de ese número desde la derecha a la izquierda dígitos .

// 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; 
} 

Mi pregunta es: ¿qué ocurre cuando el usuario escribe en números de un solo dígito- 1 a 9? No pude encontrar ningún material sobre tal caso. Después de la compilación, el programa simplemente continúa con la devolución de ese único dígito. ¿Porqué es eso? Estaba tratando de encontrar un código para esta tarea y me paso literalmente 2 horas, tratando de incorporar bucles y tomar decisiones para este problema "si el número es de un solo dígito". ¡Y la solución era tan ignorante!

Respuesta

15

El operador de módulo le proporciona el resto después de una división. Si tienes 8% 10 el resultado es 8 porque 8/10 es 0 con un resto de 8. Obtienes el mismo resultado si tienes 38% 10, 38/10 es 3 con un resto de 8.

edit : Módulo es lo que normalmente aprendiste como la primera división en elemantary school. Es curioso que la mayoría de los niños no tengan ningún problema con el módulo, pero cuando se enteraron de que 8/10 es 0.8, tienen problemas para entender el módulo.

+0

número se convierte en un recordatorio, lo tengo! –

+1

@Mr_Vlasov Si esto responde su pregunta, puede querer aceptarlo (haciendo clic en el contorno de la marca de verificación junto a él) para que otros sepan que ya no está buscando una respuesta mejorada y para obtener una insignia nueva en Desbordamiento de pila. – dasblinkenlight

+0

más 1 para la escuela primaria – BootMaker