黑马程序员技术交流社区

标题: 将一个10进制整数转换为2-16中任意一个进制,并输出 [打印本页]

作者:  神马都是浮云    时间: 2015-8-8 16:23
标题: 将一个10进制整数转换为2-16中任意一个进制,并输出
  1. #include <stdio.h>

  2. // 将任意整数进制转换成2-16进制

  3. int main()
  4. {
  5.     // 输入一个进制数
  6.     printf("请输入2-16的这个整数");
  7.     int radix;
  8.     scanf("%d",&radix);
  9.    
  10.     // 输入一个整数
  11.     printf("请输入一个要转换的整数");
  12.     int num;
  13.     scanf("%d",&num);
  14.     int number = num;
  15.    
  16.     // 创建一个字符串存放结果
  17.     char array[30];
  18.    
  19.     // 初始化i
  20.     int i;
  21.     // 循环算法:当num不等于0的时候循环
  22.     for (i = 0; num!=0; i++, num = num/radix)
  23.     {
  24.         
  25.         // 得到num除以进制数的余数,并存到数组中
  26.         switch (num%radix)
  27.         {
  28.             case 15:
  29.                 array[i] = 'F';
  30.                 continue;
  31.             case 14:
  32.                 array[i] = 'E';
  33.                 continue;
  34.             case 13:
  35.                 array[i] = 'D';
  36.                 continue;
  37.             case 12:
  38.                 array[i] = 'C';
  39.                 continue;
  40.             case 11:
  41.                 array[i] = 'B';
  42.                 continue;
  43.             case 10:
  44.                 array[i] = 'A';
  45.                 continue;
  46.             default:
  47.                 array[i] = num%radix + '0';
  48.                 continue;
  49.         }
  50.       
  51.     }
  52.     // 反向输出字符串数组
  53.     printf("%d进制的%d为:",radix,number);
  54.     for (int j = i-1; j>=0; j--)
  55.     {
  56.         printf("%c",array[j]);
  57.         if (j==0)
  58.         {
  59.             printf("\n");
  60.         }
  61.     }
  62.         return 0;
  63. }
复制代码

作者: 李海贤    时间: 2015-8-8 21:18
牛逼!666
作者:  神马都是浮云    时间: 2015-8-9 15:48
李海贤 发表于 2015-8-8 21:18
牛逼!666

..........额
作者: 阿伦666    时间: 2015-8-9 16:29
牛逼啊!只能围观学习了啊!
作者: KongPro    时间: 2015-8-9 18:57
前面两个scanf输入的值不太懂,请问一下是为什么?
作者:  神马都是浮云    时间: 2015-8-10 09:54
阿伦666 发表于 2015-8-9 16:29
牛逼啊!只能围观学习了啊!

额 0.0 不牛逼不牛逼 这只是基础测试里面的东西。
作者:  神马都是浮云    时间: 2015-8-10 09:57
KongPro 发表于 2015-8-9 18:57
前面两个scanf输入的值不太懂,请问一下是为什么?

这个本身是要实现10进制数 转 2-16中任意进制的功能  第一个scanf就是从键盘上输入你要转成多少进制,第二个就是你想把哪个数转成该进制喽。
作者: KongPro    时间: 2015-8-11 21:39
 神马都是浮云 发表于 2015-8-10 09:57
这个本身是要实现10进制数 转 2-16中任意进制的功能  第一个scanf就是从键盘上输入你要转成多少进制,第 ...

哦哦 明白了
作者: nulifendou    时间: 2015-8-11 21:41
学习了!
作者: lzfree    时间: 2015-8-11 22:21
command+c了
作者: m小怪兽    时间: 2015-8-11 22:34
学习学习
作者: sl123    时间: 2015-8-11 22:36
确实是高手啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2