蘑菇先生


私信TA

用户名:subject

访问量:7906

签 名:

欲带王冠,必承其重,刷题,努力学习中

等  级
排  名 370
经  验 2220
参赛次数 0
文章发表 33
年  龄 20
在职情况
学  校 安徽工商职业学院
专  业 软件技术

  自我简介:

本人菜鸟,很高兴认识大家,请多多指教,欢迎和我交朋友。。

解题思路:

    本题为常见的进制转化类型问题的升级版,做这题时可以先试着写写进制转化问题,例如十进制转十六进制。其本质解法-》》函数的递归调用。
    
关键字:递归调用,进制转化


注意事项:

   本题不同于简单的进制转化问题,但实际上只是在进制转化的过程中加上了一些别的判断
   
   本题错误解法示范:
   #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;
}


 

0.0分

0 人评分

C语言网提供「C语言、C++、算法竞赛」在线课程,全部由资深研发工程师或ACM金牌大佬亲授课,更科学、全面的课程体系,以在线视频+在线评测的学习模式学习,学练同步,拒绝理论派,真正学会编程!还有奖学金等增值福利等你!

  评论区