问题描述:
Excel单元格的地址表示很有趣,它使用字母来表示列号:A表示第1列,Z表示第26列,AB表示第28列,
本题目既是要求对输入的数字, 输出其对应的Excel地址表示方式。
示例1:
input:26 output:Z
示例2:
input:2054 output:BZZ
源代码:
#include <stdio.h>
#define CH 'A' // 宏定义:用CH表示大写字母A
char p[10];
int main() {
int m;
scanf("%d", &m); // 输入:列数
int i = 0;
while (m>0) {
p[i++] = (m - 1) % 26 + CH; // 计算最后那个字母
m -= (m - 1) % 26 + 1; // 把它的前一列数字去掉之后所剩下的
m /= 26; // 前一列数字计算完之后,剩下的肯定能被 26 整除
}
p[i] = '\0';
// 倒序输出字母
for (i = 9; i >= 0; i--) {
if (p[i] != '\0') printf("%c", p[i]);
}
return 0;
}