目录
进制转换
其他进制数转十进制 、 十进制转其他进制数
代码:
#include<iostream>
using namespace std;
//其他进制数转十进制
int shijinzhi(int number,int p){
int y=0,product=1;
while(number!=0){
y=y+(number%10)*product;// number%10是为了每次获取个位数
number=number/10; //去掉个位数
product=product*p;
}
return y;
}
// 十进制转其他进制数 使用动态内存分配来创建一个数组,
// 并在函数中进行填充,然后将指向数组的指针返回给调用者
int* qitajinzhi(int number, int q, int& size) {
int z[40], cnt = 0;
do {
z[cnt++] = number % q; // 除基取余 用数组z[]储存 余数
number = number / q; // 更新number为商
} while (number != 0);
int* result = new int[cnt];
for (int i = 0; i < cnt; i++) {
result[i] = z[cnt - i - 1];
}
size = cnt;
return result;
}
int main() {
int a = 101, b = 11;
cout << "二进制数:101 的十进制数为:" << shijinzhi(a, 2) << endl;
int size; //引用参数 size,用于返回数组的大小
int* binaryArray = qitajinzhi(b, 2, size);
cout << "十进制数:11 的二进制数为:";
for (int i = 0; i < size; i++) {
cout << binaryArray[i];
}
delete[] binaryArray;
return 0;
}
运行结果:
应用:
【PAT B1022】D进制的A+B
输入两个非负10进制整数A和B(<=2^30-1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:
123 456 8
输出样例:
1103
代码:
#include<iostream>
using namespace std;
int main(){
int a,b,d;
scanf("%d%d%d",&a,&b,&d);
int sum=0;
sum=a+b;
int ans[31],cnt=0;
do{
ans[cnt++]=sum%d;
sum=sum/d;
}while(sum!=0);
for(int i=cnt-1;i>=0;i--){
printf("%d",ans[i]);
}
return 0;
}