A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

编程实现将任意的十进制整数转换成任意R进制数(R在2-16之间)

4 个回复

正序浏览
本帖最后由 一步一脚印=-= 于 2016-1-30 23:09 编辑
  1. #include <stdio.h>
  2. void trans(i,R){
  3.         int a[30];
  4.         int j=0,rem;
  5.         //取余数放到数组a中
  6.         do{
  7.                 rem=i%R;i=i/R;
  8.                 a[j]=rem;
  9.                 j++;
  10.         } while(i!=0);
  11.         //倒序输出数组a,并且将大于9的余数变形
  12.         while (j-->0){
  13.                 if(a[j]>9){
  14.                         switch(a[j]){
  15.                                 case 10:{
  16.                                         printf("A");
  17.                                         continue;
  18.                                 }
  19.                                 case 11:{
  20.                                         printf("B");
  21.                                         continue;
  22.                                 }
  23.                                 case 12:{
  24.                                         printf("C");
  25.                                         continue;
  26.                                 }
  27.                                 case 13:{
  28.                                         printf("D");
  29.                                         continue;
  30.                                 }
  31.                                 case 14:{
  32.                                         printf("E");
  33.                                         continue;
  34.                                 }
  35.                                 case 15:{
  36.                                         printf("F");
  37.                                         continue;
  38.                                 }               
  39.                         }
  40.                 }
  41.         printf("%d",a[j]);        
  42.         }
  43. }
  44. int main(int argc, char *argv[]) {
  45.         int i,R;
  46.         printf("请输入一个整数:\n");
  47.         scanf("%d",&i);
  48.         printf("请输入你想转换成的进制数2--16\n");
  49.         scanf("%d",&R);
  50.         trans(i,R);
  51.         return 0;
  52. }
复制代码
基本条件都满足要求了

回复 使用道具 举报
一步步往上爬 发表于 2016-1-4 14:19
你这里的是转换成二进制 八进制 和十六进制了  要求是转换成任意进制的   还有注释的太少  有的没看懂 ...

换成任意进制的      实在没有看懂   
回复 使用道具 举报
Chen_Mx 发表于 2016-1-3 17:26
二进制段 拷贝别人的。嘿嘿 也就是trans 函数

你这里的是转换成二进制 八进制 和十六进制了  要求是转换成任意进制的   还有注释的太少  有的没看懂
回复 使用道具 举报
  1. #include <stdio.h>


  2. void trans(int x)
  3. {
  4.     int a[30];//我算过了,1亿好像才29位的二进制,一般不用算
  5.     //这么大的数了吧~~
  6.     int i=0,rem;
  7.     do{
  8.         rem=x%2;x=x/2;
  9.         a[i]=rem;
  10.         i++;
  11.     }while(x!=0);//这个算法看你的代码知道你懂!:)
  12.     while(i>0)
  13.         printf("%d",a[--i]);
  14.     printf("\n");//这就是我的精华了,倒输出正确顺序的数~
  15. }
  16. int main(int argc, const char * argv[]) {
  17.     //初始化
  18.     int a=0,b=0;
  19.     //提示输入想转换的数字(2-16)
  20.     printf("输入想转换的十进制数字:\n");
  21.     scanf("%d",&a);
  22.     printf("输入想转换的进制(如:八进制输入『8』)\n");
  23.     scanf("%d",&b);
  24.     if (8==b) {
  25.         printf("%d的八进制是%o\n",a,a);
  26.     }else if(16==b){
  27.         printf("%d的八进制是%x\n",a,a);
  28.     }else if(2==b){
  29.         trans(a);
  30.     }else {
  31.         printf("输入有误\n");
  32.     }
  33.     return 0;
  34. }
复制代码
二进制段 拷贝别人的。嘿嘿 也就是trans 函数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马