在 Excel 中,列的名称使用英文字母的组合。前 26 列用一个字母,依次为 A 到 Z,接下来 26*26 列使用两个字母的组合,依次为 AA 到 ZZ。
请问第 2023 列的名称是什么?
思路:既然求2023列,那我们就可以先计算26和26*26列总共用的列数,可以得到702。
所以2023列肯定不是一个字母和两个字母的列数。由26*26*26得出2023列是位于三个字母中的。
从三个字母开始计算,可以知道从1321列开始为三个字母,剩下用暴力枚举就可以得到正确结果了。如果要算一个字母或两个字母的,加个if语句就可以了。
#include <stdio.h>
int main()
{//BYU
int k=0,m,n,i;
char a[27 ]={' ','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','W','R','S','T','U','V','W','X','Y','Z'};
for(i=1;i<=26;i++)
{
if(k==1321)
{
printf("%c%c%c",a[i],a[n],a[m]);
return 0;
}
for(n=1;n<=26;n++)
{
if(k==1321)
{
printf("%c%c%c",a[i],a[n],a[m]);
return 0;
}
for(m=1;m<=26;m++)
{
k++;
if(k==1321)
{
printf("%c%c%c",a[i],a[n],a[m]);
return 0;
}
}}}
}
#include <stdio.h>
int main()
{//BYU
int k=0,m,n,i;
char a[27 ]={' ','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','W','R','S','T','U','V','W','X','Y','Z'};
for(i=1;i<=26;i++)
{
if(k==1321)
{
printf("%c%c%c",a[i],a[n],a[m]);
return 0;
}
for(n=1;n<=26;n++)
{
if(k==1321)
{
printf("%c%c%c",a[i],a[n],a[m]);
return 0;
}
for(m=1;m<=26;m++)
{
k++;
if(k==1321)
{
printf("%c%c%c",a[i],a[n],a[m]);
return 0;
}
}}}
}