fork download
  1. #include <stdio.h>
  2.  
  3. unsigned reverse(
  4. unsigned input,
  5. unsigned const base,
  6. unsigned * const zeros) {
  7. unsigned output = 0;
  8. unsigned still_zero = 0;
  9. for (; input != 0; input/=base) {
  10. output *= base;
  11. output += input % base;
  12. if (output == 0) {
  13. ++still_zero;
  14. }
  15. }
  16. if (zeros != NULL) {
  17. *zeros = still_zero;
  18. }
  19. return output;
  20. }
  21.  
  22. void print_zeros(unsigned zeros) {
  23. for (; zeros != 0; --zeros) {
  24. printf("0");
  25. }
  26. }
  27.  
  28. int main(void) {
  29. unsigned value = 320;
  30. unsigned zeros;
  31. unsigned reversed;
  32.  
  33. reversed = reverse (value, 10, & zeros);
  34. printf("%u - ", value); print_zeros(zeros); printf("%u\n", reversed);
  35.  
  36. reversed = reverse (value, 8, & zeros);
  37. printf("%o - ", value); print_zeros(zeros); printf("%o\n", reversed);
  38.  
  39. reversed = reverse (value, 16, & zeros);
  40. printf("%x - ", value); print_zeros(zeros); printf("%x\n", reversed);
  41.  
  42. return 0;
  43. }
Success #stdin #stdout 0s 2156KB
stdin
Standard input is empty
stdout
320  -  023
500  -  005
140  -  041