给你一个整数 columnNumber
,返回它在 Excel 表中相对应的列名称。
例如:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例 1:
输入:columnNumber = 1
输出:"A"
示例 2:
输入:columnNumber = 28
输出:"AB"
示例 3:
输入:columnNumber = 701
输出:"ZY"
示例 4:
输入:columnNumber = 2147483647
输出:"FXSHRXW"
思路:定义两个全局变量数组,将输入的数对26进行整除和取余操作,从低到高存在数组1中,数组2反向装入数组1的内容。
#include <stdio.h>
char g_ret[8];
char g_ret1[8];
char * convertToTitle(int columnNumber){
int n=columnNumber;
int k,j=0,i=0;
while(n>0)//当输入值大于0时
{
k=n%26;//除26取余数
n=n/26;//除26取整
if(k==0)//当n能被26整除时
{
k=26; //k=26
n--; //n减1
}
g_ret[i++]='A'+k-1;//当k能被26整除时g_ret最高位为'Z',即'A'+26-1;当k不能被26整除时,g_ret等于'A'+某个小于25的值
}
g_ret[i]='\0';//最后一位为截至符
i=i-1;//从倒数第二位开始
while(i>=0)
{
g_ret1[j++]=g_ret[i];//将g_ret中最高位赋值给g_ret1中最低位
i--;
}
g_ret1[j]='\0';
//char *p = g_ret1;
//return p;
}
int main()
{
int columnNumber = 252;
convertToTitle(columnNumber);
printf("%s\n",g_ret1);//直接打印全局变量
return 0;
}