整数的n进制字符串表示.c 690 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include <stdio.h>
  2. #include <string.h>
  3. void itob(int n, char *s, int b) {
  4. int i = 0;
  5. int sign = n;
  6. if (sign < 0) {
  7. n = -n;
  8. }
  9. do {
  10. int digit = n % b;
  11. s[i++] = (digit < 10) ? digit + '0' : digit - 10 + 'a';
  12. n /= b;
  13. } while (n > 0);
  14. if (sign < 0) {
  15. s[i++] = '-';
  16. }
  17. s[i] = '\0';
  18. int start = 0;
  19. int end = strlen(s) - 1;
  20. while (start < end) {
  21. char temp = s[start];
  22. s[start] = s[end];
  23. s[end] = temp;
  24. start++;
  25. end--;
  26. }
  27. }
  28. int main() {
  29. int n, b;
  30. char s[100];
  31. scanf("%d %d", &n, &b);
  32. itob(n, s, b);
  33. printf("%s\n", s);
  34. return 0;
  35. }