前言
题目来自:https://wenku.baidu.com/view/943af216ba68a98271fe910ef12d2af90242a8b2.html
自己试着写的也不知道其他测试用例是不是都能过...欢迎讨论。
(PS:这里我没控制范围什么的...主要想做一下算法部分)
第一题:进制转换
题面:给出一个十进制非负整数n,请将该数转换为r进制数并输出。 0≤n≤1000000000,2≤r≤16。超出十进制的,字母大写输出。输入共一行,输出共一行。
输入样例:126 16
输出样例:7E
解:
#include"stdio.h"
int trans1(int num,int r){
if (num>=r)
return num%r+trans1(num/r,r)*10;
else
return num;
}
char check(int num){
if (num==10)
return 'A';
else if (num==11)
return 'B';
else if (num==12)
return 'C';
else if (num==13)
return 'D';
else if (num==14)
return 'E';
else if (num==15)
return 'F';
else
return num;
}
void trans2(int num,int r){
if (num>=r){
trans2(num/r,r);
if (check(num%r)<10)
printf("%d",check(num%r));
else
printf("%c",check(num%r));
}
else
if (check(num)<10)
printf("%d",check(num));
else
printf("%c",check(num));
}
void main(){
int num;
int r;
int out;
scanf("%d %d",&num,&r);
if(r<10){
out=trans1(num,r);
printf("%d",out);
}
else
trans2(num,r);
system("pause");
}
结果: