求解,数据没有特判0的点嘛?~
查看原帖
求解,数据没有特判0的点嘛?~
579182
DarPluto_9楼主2022/6/15 15:09

2022.6.15 AC代码

#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
//进制转换
char ba[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J' };

int main()
{
	int n, base;
	cin >> n >> base;  //待转换的数字 和 进制
	cout << n << "=";   //转换前
	vector <int> res;
	while (n)
	{
		int sh = n / base;  //商
		int yu = n % base; //余数
		if (yu < 0)
			sh += 1, yu -= base;
		res.push_back(yu);
		n = sh;
	}
	reverse(res.begin(), res.end());
	//for (int i=0;i<res.size();i++)   //法1
	//	printf("%c", ba[res[i]]);
	for (auto x : res)    //范围for
		printf("%c", ba[x]);
	printf("(base%d)", base);
	return 0;
}

合理的代码应该是

#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
//进制转换
char ba[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J' };

int main()
{
	int n, base;
	cin >> n >> base;  //待转换的数字 和 进制
	cout << n << "=";   //转换前
	vector <int> res;
	while (n)
	{
		int sh = n / base;  //商
		int yu = n % base; //余数
		if (yu < 0)
			sh += 1, yu -= base;
		res.push_back(yu);
		n = sh;
	}
	if (res.empty())
		cout << 0;
	else {
		reverse(res.begin(), res.end());
		for (auto x : res)    //范围for
			printf("%c", ba[x]);
	}
	printf("(base%d)", base);
	return 0;
}
2022/6/15 15:09
加载中...