C语言实现任意进制数之间的转换

超、凢脫俗 2022-06-01 10:18 287阅读 0赞

使用C语言编程实现任意进制数(2-16进制)转换为其他任意进制数(2-16进制),实验平台:vs2015。

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. int TenNum(char a[],int B); //将输入的数字转换成10进制数
  5. void Numchange(int m, int B); //将转换好了的10进制数转换为所需进制数
  6. int TenNum(char a[], int B)
  7. {
  8. int len, i, num;
  9. int sum = 0;
  10. len = strlen(a); //求得字符串长度
  11. for (i = 0; i < len; i++)
  12. {
  13. if (a[i] >= '0' && a[i] <= '9')
  14. num = a[i] - '0';
  15. else if (a[i] >= 'A' && a[i] <= 'F')
  16. num = a[i] - 'A' + 10;
  17. sum = sum * B + num;
  18. }
  19. return sum;
  20. }
  21. void Numchange(int m, int B)
  22. {
  23. int n;
  24. if (m)
  25. {
  26. Numchange(m / B, B);
  27. n = m % B;
  28. if (n < 10)
  29. printf("%d", n); //小于10直接输出
  30. else
  31. printf("%c", n + 55); //大于10转换成字符输出
  32. }
  33. }
  34. int main()
  35. {
  36. int B, b;
  37. char a[20];
  38. printf("请输入待转换数的进制(2-16):");
  39. do {
  40. scanf_s("%d", &B);
  41. } while (B < 2 && B > 16);
  42. printf("请输入待转换数:");
  43. getchar();
  44. gets_s(a); //将输入的n进制数存放在数组a中
  45. int m = TenNum(a, B); //将输入的数字转换成十进制数
  46. printf("请输入需要转成几进制数(2-16):");
  47. do {
  48. scanf_s("%d", &b);
  49. } while (B < 2 && B > 16);
  50. printf("%d进制数%s转换为%d进制数的结果为:",B,a,b);
  51. Numchange(m, b); //将十进制数转换为所需进制数
  52. printf("\n");
  53. system("pause");
  54. return 0;
  55. }

发表评论

表情:
评论列表 (有 0 条评论,287人围观)

还没有评论,来说两句吧...

相关阅读

    相关 任意之间转换 C语言

    [目录][Link 1] 进制转换 通常来说,常见的进制转换都是二进制,八进制,十进制,十六进制之间进行转换。不同的进制之间各有各的转换方法。但是,当我们写代码来实