C语言之进制转化

欢迎进入我的C语言世界

题目

Problem Description

输入十进制数n(0<=n<=10000),请输出它对应的k(2<=k<=36)进制数。

10,11…分别用A, B … 代替。

Input

本题有多组输入数据,你必须处理到EOF为止.

每组数据占一行,有2个整数n,k

Output

输出n对应的k进制数,一个数一行。

Sample Input

3 2
4 3
15 16

Sample Output

11
11
F

答案

下面展示 实现代码

#include<iostream>
#include<string>
int K[10000];
using namespace std;
int main()
{
    
    
	int n,k;
	int i,j;
	while(scanf("%d%d",&n,&k) != EOF)
	{
    
    
		if(n == 0)//*****
		{
    
    
			cout << "0" <<endl;
		}
		else
		{
    
    
			for(i = 0; n > 0; i++)//进制转换 
			{
    
    
				K[i] = n % k;
				n = n / k;
			}	
			for(j = i-1; j >= 0; j--)//倒着输出	
			{
    
    
				if(K[j] >= 10)
					printf("%c", K[j] - 10 + 'A');
				else
					printf("%c", K[j] + '0');
			}
			cout << endl;	
		}
	}
	return 0;
}

本题感悟

本块内容可能来自课本或其他网站,若涉及侵权问题,请联系我进行删除,谢谢大家啦~

做完这题还蛮有收获的,进制转换,先取模,再换成相对应的进制,还蛮厉害的。
以上。

猜你喜欢

转载自blog.csdn.net/hongguoya/article/details/105580508