题目数据范围是1到16384, 而最大的二位是ZZ即702,最大的三位是ZZZ即18278,那么n对应的字母最多只有3位。
用一个三位的字符串来接收即可。那么怎么把数值转成字符类型,先得定义字符类型,然后用该数字减1再加上’A'即为该字符的ASCII码,用字符类型表示出来就是大写字母了。
刚开始循环用的是while(n>0)和 res[i] = n % 26 -1 + 'A',报错了,问题在于676和17576这两个数一个是26的平方,一个是26的立方,取余为0啊,0-1+‘A'打出来是@,
看别人才知道用while(n-->0)和res[i] = n % 26 + 'A'
char* ExcelTitle(int n ) {
    char *res = malloc(sizeof(char) * 3);
    int i = 2;
    while(n-->0){
        res[i] = n % 26 + 'A';
        i--;
        n = n / 26;
    }
    return &res[i+1];
}