进制转换 【PAT B1022】D进制的A+B

文章介绍了如何使用C++编程语言实现进制转换,包括从其他进制转十进制和十进制转二进制,以及解决PATB1022问题,即计算两个非负10进制数在特定D进制下的和。
摘要由CSDN通过智能技术生成

目录

进制转换  

代码:

应用: 

【PAT B1022】D进制的A+B 

代码:

运行结果:

​编辑


进制转换  

其他进制数转十进制 、  十进制转其他进制数

代码:

#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;
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

captain_dong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值