I’m writing a program that list the digits of integer input.
example:
Please enter an integer number: 5021
The digits are:
5
0
2
1
The program works fine except when it comes to numbers ending in 0 since I have reversed the number first using a while loop (while num>0)in order to print the numbers in the order shown above. I hope someone can point me in the right direction as I really can’t seem to think of another way just now 🙂
sorry couldn’t figure out how to add code without doing 4 spaces in front of each line (is there another(easier) way to add code?).
int main() {
int userInt; /* integer input by user */
int revInt; /* reversed integer */
printf("Please enter an integer number: ");
scanf("%d", &userInt);
/* reverse int */
revInt = reverseInteger(userInt);
/* print digits */
printDigits(revInt);
return 0;
}
int reverseInteger(int num) {
long sum = 0;
int remainder;
while(num) {
remainder = num%10; /* get last digit of number */
sum = sum*10 + remainder; /* move digits by one place in sum and add remainder of number */
num = num/10; /* remove last digit of number */
}
return sum;
}
void printDigits(int num) {
int remainder;
printf("The digits are:\n");
while(num) {
remainder = num%10; /* get last digit of number */
printf("%d \n", remainder); /* print last digit */
num = num/10; /* remove last digit of number */
}
}
The maximum number of digits in an
intis small so you could safely use recursion in this case:Output