【问题描述】
小明用字母 A 对应数字 1, B 对应 2,以此类推,用 Z 对应 26。对于 27以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27, AB 对应 28, AZ 对应 52, LQ 对应 329。请问 2019 对应的字符串是什么?
样例输入:2019
样例输出:BYQ
程序思路:
这个题我们看作是一个26进制的转换,这里用1来代表字符A,用26来代表字符Z,我们使用余数短除法除以26进行计算,把计算的结果从最下面的余数开始,按顺序读到最上面,就是们最后对应的字符串了。
样例代码:
#include<stdio.h>
int main(){
// 定义用于存储计算结果的arr数组
char arr[100] = {0};
// 定义无符号整形变量的年号
size_t year = 2019;
//输入一个年号
scanf("%d",&year);
// 定义用于记录循环次数和结果个数的变量j
int j = -1;
// year大于26时进行循环计算
while(year) {
//判断year是否为26的倍数
if(year % 26 != 0){
// 将年份对26取余 计算结果存入arr数组 例如 'A' + (17 - 1) = Q 第17个字母为Q
arr[++j] = 'A' + (year % 26 - 1);
year = year / 26;
}else {
arr[++j] = 'A' + 26 - 1;
year = year / 26 - 1;
}
}
//逆序输出arr
while(j>=0) {
printf("%c",arr[j--]);
}
return 0;
}