将R1C1格式转换为A1格式

在excel电子表格中,我们将每个单元格的行和列表示为R1C1格式或A1格式。

R1C1格式表示行号和列号。 例如,R23C55表示第23行和第55列。

在A1格式中,每列都有一个代码,基于字母表permutatons。 考虑前26列,每列都从A到Z命名。下一列(即第27列)将是AA,AB,AC等等。 例如,BC23表示列BC,其是第55列,行23表示第23行。

我需要将R1C1格式的输入转换为A1格式的输出。 例如,R23C55将是BC23,其中BC是55的相应输出。

我已经制作了一个代码来将给定的列号转换为A1格式。

#include  #include  int main() { int column,temp,i=0; char col[5]; scanf("%d",&column); temp=column; while(temp!=0) { if(temp%26==0) { col[i]='Z'; i++; } else { col[i]=(temp%26)-1+'A'; i++; } temp=(temp-1)/26; } col[i]='\0'; strrev(col); puts(col); return 0; } 

我可以将输入数字55转换为其输出BC。 但我无法继续使用将R23C55转换为BC23的代码。 如何获取输入R23C55,提取数字23和55,并输出BC23表格?

 #include void g(int t){if(t){g((t-1)/26);putchar(65+(t-1)%26);}} int main(){ int n,x,y; char s[64]; fgets(s,64,stdin); if(sscanf(s,"R%dC%d",&x,&y)==2){ g(y); printf("%d\n",x); } return 0; } 

这个程序正是你想要的。 从代码中可以清楚地看出逻辑。

查看此链接以了解sscanf() sscanf

这里供您使用scanf(“R%dC%d”,..)也可以使用。 但我已经使用sscanf()为您提供了一种方法,如果需要进一步处理,将会有所帮助。

说输入格式是

 4 R23C45 R24C55 R2C4 R12C45 

那么你可以这样对待他们 –

 fgets(s,64,stdin); sscanf(s,"%d",&n); for(i=0;i 

我想你可以简单地用scanf解析RxCy字符串:

 int main() { int column, row, cr,temp,i=0; char col[5]; cr = scanf("R%dC%d",&row, &column); /* if cr == 2, row and column containing the coordinates */ ...