C++实现各进制数之间的转换
程序员文章站
2022-05-18 10:47:08
...
学习计算机就不得不谈及简单的进制转换,毕竟都逃不过的哈哈哈
闲话不多说,先上代码
#include<cstdio>
int main(){
int y= 0,product = 1;
int x,x1;
int p;
printf("请输入需要被转化的进制数(as 2、8、10...):");
scanf("%d",&p);
printf("\n");
printf("请输入一个%d进制数:",p);
scanf("%d",&x);
x1=x;
while(x!=0){
y = y+(x%10)*product; //x%10是为了每次获取x的个位数
x = x/10; //去掉x的各位
product = product*p; //produce在循环中不断乘p,得到1,p,p^2,p^3...
}
printf("\n");
printf("中间转化为十进制数值为:%d\n",y);
int z[40]; //数组z中存放pp进制中的每一位
int num = 0;
int count=0;
int pp;
printf("\n");
printf("请输入需要转化成的进制数(as 2、8、10...):");
scanf("%d",&pp);
do{
z[num] = y%pp; //除基取余
// printf("%d\n",z[num]);
// printf("%d\n",num);
num++;
y = y/pp;
count++;
// printf("%d\n",count);
// printf("\n");
}while(y!=0);
printf("\n");
printf("%d进制数%d转换%d进制数结果:",p,x1,pp);
for(int i=count-1;i>=0;i--){
printf("%d",z[i]);
}
}
/*强调:
int z[]={1,2,3,4,5,6,7,8,9};
void test(int z[]){...}
当将数组作为实参传递到另一个函数中时, 另一个函数的形参相当于一个指针变量,
因为将数组的名作为实参时, 就是将数字的首地址作为实参, 所以在test函数中输
出的sizeof(z)其实得到的是一个整型数组的长度(所占的字节数),?所以结果是8,
再用其除以int所占的字节数(4), 结果就是2 .
*/
/*
int i=5;
int Array[i]; 错误 因为在编译阶段,编译器并不知道 i 的值是多少
编译阶段,编译器起的作用是查语法错误,和预分配空间,它并不执行程序,因此,没有执行那个赋值语句
*/
代码可以在devc++集成环境下运行,结果自几个运行,代码中注释可有意阅读
简单讲一下原理:
1.将P进制数x转换成十进制数y
2.将十进制数y转换成PP进制数z(这里采用的是“除基取余法”)
上一篇: 详解Vue.js 技术
推荐阅读