进制转化
欢迎进入我的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;
}
本题感悟
本块内容可能来自课本或其他网站,若涉及侵权问题,请联系我进行删除,谢谢大家啦~
做完这题还蛮有收获的,进制转换,先取模,再换成相对应的进制,还蛮厉害的。
以上。