
void transfer(int A[], int *c, int n, int b)
{
int i = 0
while(n>0)
{
A[i++] = n % b
n /= b
}
*c = i
}
int main()
{
int 行烂a[32],c,n,b
printf("输入整数和要转换为的进制:")
scanf("%d %d",&n,&b)
if( n<0 || 枣郑b>9 || b< 2)
{
printf("数档岩漏据非法。")
return 0
}
transfer(a,&c,n,b)
printf("结果为:")
while(--c >= 0)
{
printf("%d",a[c])
}
return 0
}
给你打个简单的,我已蔽御经测试了,
#include<stdio.h>
void 携衡main()
{
int a
printf("请输入一个十进制数\n")
scanf("%d",&a)
printf("该数的十六进制是:%x\n",a)
printf("该数辩并做的八进制是:%o\n",a)
}
C语言中实现10进制转换为任意进制的过程为:
定义数帆雀组int rs[32],保存转换后的数据,整数的转换结果最多32位(4字节*8位)
定义一个数组char map[]={'0','1','2','3',...,'9','A','B',...'F'},完成相应数值对应的转换后的字符
输入10进制数(整数)num
转入转换进制基数(2-16)ind
循环对num进行模ind运算,得磨手到余数存储到数组rs中
num缩小ind倍
当num为0时结束循环
反向输出数组rs中对应的各元素对应的map字符,得到转换结果
参考代码:
#include <stdio.h>int main()
{
char map[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','瞎轿嫌F'}
int i,c[32],num,ind
do {printf("input num: ")scanf("%d", &num )}while(num<0 )
do {printf("input ind: ")scanf("%d", &ind )} while( ind>16||ind<2)
i=0
do {
c[i++]=num%ind
num/=ind
} while(num!=0)
for(i--i>=0i--)
printf("%c",map[c[i]] )
printf("\n")
return 0
}
运行结果:
input num: 100
input ind: 2
1100100
input num: 100
input ind: 8
144
input num: 100
input ind: 16
64
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)