解题思路:本题为常见的进制转化类型问题的升级版,做这题时可以先试着写写进制转化问题,例如十进制转十六进制。其本质解法-》》函数的递归调用。
关键字:递归调用,进制转化
注意事项:本题不同于简单的进制转化问题,但实际上只是在进制转化的过程中加上了一些别的判断
本题错误解法示范:
#include"iostream"
using namespace std;
char str[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
void func(int numb){
if(numb/27)
func(numb/26);
putchar(str[(numb-1)%26]);
}
int main(){
int numb;
while(cin>>numb){
func(numb);
putchar('\n');
}
return 0;
}
参考代码:#include"iostream"
using namespace std;
char str[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//函数的递归调用,以函数递归实现一个转化
void func(int numb){
if(numb/27){//正确解法中,需要在进制转化的过程中,例如对进制位为Z的进行一个特殊判断
int a=numb/26;
if(numb%26==0)
func(a-1);
else
func(a);
}
putchar(str[(numb-1)%26]);
}
int main(){
int numb; //定义变量
while(cin>>numb){ //输入变量
func(numb); //调用函数
putchar('\n'); //打印换行
}
return 0;
}