本帖最后由 董月峰 于 2014-3-24 14:47 编辑
/*
9、 编程实现将任意的十进制整数转换成任意R进制数(R在2-16之间)。(C语言)
*/
#include<stdio.h>
#include<string.h>
void trans(int num,int n)
{
if(num==0)
{
printf("0的其它进制也是0");
}
//字符数组16进制版,2和8进制都可以用
char chs[] = {'0','1','2','3'
,'4','5','6','7'
,'8','9','A','B'
,'C','D','E','F'};
char *arr;
//定义base是与num&的数[2进制就是1,8进制就是7,16进制就是15]
int base = n - 1;
//offset就是num在后面右移的数字
int offset;
if(n == 2)
offset = 1;
else if(n == 8)
offset = 3;
else
offset = 4;
//初始化一个len为0
int len=0;
//为字符串赋值,就是要转换成的进制数倒过来的情况
while(num != 0)
{
int temp = num & base;
arr[++len] = chs[temp];
num = num >> offset;
}
//此处报错format specifies type ‘char *’but the argument has type ‘int’
printf("转换完为:%s\n",strrev(strdup(arr)));
}
int main()
{
int num,n;
printf("请输入一个十进制数字\n");
scanf("%d",&num);
printf("请如实想转换成哪种进制的数【填2,8,16】:\n");
scanf("%d",&n);
trans(num,n);
return 0;
} |
|