C程序-2019年第十届蓝桥杯B组-试题 B: 年号字串

【问题描述】 小明用字母 A 对应数字 1,B 对应 2,以此类推,用 Z 对应 26。对于 27 以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27,AB 对 应 28,AZ 对应 52,LQ 对应 329。 请问 2019 对应的字符串是什么?

思路:这是蓝桥练习系统的原题(Excel地址),做过了,蛮简单的

有26个字母,即当做26进制计算,但又不完全是26进制,因为当被26整除时并不需要进位,而是用Z表示;因此用递归算法时,单独处理被26整除的情况。

C程序-2019年第十届蓝桥杯B组-试题 B: 年号字串_第1张图片

#include 

int excel(int num)//递归法处理进制转换 
{
	if(num == 0 ) return 0;//除至末尾,结束递归
	if(num % 26 == 0)
	{
			excel((num-1)/26);//被26整除,不需要进位,因此用(num-1)递归
			printf("Z");//被26整除,单独处理
	}
	else
	{
		excel(num/26);//进制换算的正常处理算法
		printf("%c",num%26 + 'A' - 1);//余数即的当前位数值,余数+‘A’-1即得当前数用字母表示	
	}

	return 0;
}

int main( ) 
{
	int num;
	scanf("%d",&num);
	excel(num);
	return 0;
}

 

你可能感兴趣的:(C/C++程序,蓝桥)