首页 > 其他 > 详细

入门篇(1)- 进制转换

时间:2020-07-15 00:52:35      阅读:48      评论:0      收藏:0      [点我收藏+]

p进制转q进制

思路:先把p进制数x转换为10进制数y,再利用辗转相除法把10进制数y转化为q进制数,用数组z存储q进制数的每一位。

#include<cstdio>
int main()  {
	//8进制数342转2进制
	char str[20] = "342 8 2";
	int x, p, q;
	sscanf(str, "%d %d %d", &x, &p, &q);
	//p进制转x10进制y
	int product = 1, y = 0;
	while(x) {
		y += (x%10)*product;
		product *= p;
		x /= 10;
	}
	printf("%d\n", y);
	//十进制数y转q进制数
	int z[40], num = 0;
	do {
		z[num++] = y%q;
		y /= q;
	} while(y);
	for(int i = num-1; i >= 0; i--) printf("%d", z[i]);
	return 0;
}

pat B1022 D进制的A+B

题目描述

? 输入两个非负10进制整数A和B(<=2^30-1)以及D(进制数),输出A+B的D(1<D<=10)进制数。

输入格式:

? 在一行一次给出三个整数A、B和D。

输出格式:

? A+B的D进制数。

样例输入:

? 123 456 8

样例输出:

? 1103

思路:

? 先计算A+B的值,再十进制直接转D进制(辗转相除法)。

代码:

#include<cstdio>
int main()  {
	int a, b, d;
	scanf("%d %d %d", &a, &b, &d);
	int sum = a + b;
	int z[40];
	int num = 0;
	//do while可以避免sum==0的冲突
	do {
		z[num++] = sum%d;
		sum /= d; 
	} while(num);
	for(int i = num-1; i >= 0; i--) printf("%d", z[i]);
	return 0;
}

入门篇(1)- 进制转换

原文:https://www.cnblogs.com/kindleheart/p/13302261.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!