输入一个十进制整数,依次转换成2到16进制数

求大神帮帮忙做一下 我刚刚学C语言 程序代码 弄了好久都没弄出来 大神帮忙编一个程序代码 ,谢谢了

8个回答

#include <iostream>
using namespace std;
char metachar[] = "0123456789abcdef";

void tobasen(int x, int n)
{
    if (x > 0)
    {
        tobasen(x / n, n);
        cout << metachar[x % n];
    }
}

int main()
{
    int x = 100;
    for (int i = 2; i <= 16; i++)
    {
        cout << i << "进制";
        tobasen(x, i);
        cout << endl;
    }
} 

2进制1100100
3进制10201
4进制1210
5进制400
6进制244
7进制202
8进制144
9进制121
10进制100
11进制91
12进制84
13进制79
14进制72
15进制6a
16进制64

http://codepad.org/9b1Rhbl1
在线编译验证。

另外,你可以将int x = 100;修改为
int x = 0;
cout << "please enter a number in base 10" << endl;
cin >> x;
实现用户输入(在线编程环境没法输入,所以直接指定了100,好让你看到结果)

stringNewName
木艮氵 回复git_xy: 嗯嗯
接近 5 年之前 回复

请参考以下代码,转二进制的,如果要转八或十六进制,直接修改一下代码即可

 #include <stdio.h> 

int binaryNum[16];  //存放转换后得到的二进制码 
int count=0;  //计数十进制整数被2除的次数 
int oneCount=0;  //得到的二进制码中1的个数 

void main(){ 
  int num; 
  printf("输入一个十进制的整数:"); 
  scanf("%d",&num);  

  while( (num/2) != 1 ){  //判断条件为:除以2之后的商不等于1 
    binaryNum[count] = num%2;  //取余后的数字存入数组 
    num /= 2;  //num = num/2; 进行下一轮的判断 
    count++;  //此变量用来指定数组下标 
  } 
  binaryNum[count+1] = 1;  //最后一次除法做完以后,剩下的商一定是1,所以在最后手动添加一个1 

  printf("二进制数值为:"); 

}

搞清原理,慢慢的写,然后debug,就么问题,自己动动手

搞清原理,慢慢的写,然后debug,就么问题,自己动动手


void print_2(int val2)
{
    unsigned char *p = (unsigned char*)&val2 + 3; //从低位到高位,低端字节计算机
    for(int k = 0; k <= 3; k++)
    {
        int val2 = *(p-k);
        for (int i = 7; i >= 0; i--)
        {
            if(val2 & (1 << i))
                printf("1");
            else
                printf("0");
        }
        printf(" ");
    }
}

int main()
{
    int a;
    scanf("%d", &a);
    printf("十六进制为 : %x \n", a);
    printf("二进制为 :");
    print_2(a);
}
 int Change(char NumStr[],int num,int system);
int main()
{ 
    int num,BitNum;
    char NumStr[32];
    scanf("%d",&num);
    for(int i=2;i<17;i++)
    {
        BitNum=Change(NumStr,num,i);
        for(;BitNum!=-1;BitNum--)
            printf("%c",NumStr[BitNum]);
        printf("\n");
    }
    return 0;
}
int Change(char NumStr[],int num,int system)
{
    int i=0;
    while(num != 0)
    {
        NumStr[i] = num%system;
        if(NumStr[i]<10)
            NumStr[i]+='0';
        else
        {
            NumStr[i]+='A';
            NumStr[i]-=10;
        }
        num/=system;
        i++;
    }
    return i-1;

}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问