Description


    Excel是最常用的办公软件。每个单元格都有唯一的地址表示。比如:第12行第4列表示为:“D12”,第5行第255列表示为“IU5”。
    
    事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址。 第12行第4列表示为:“R12C4”,第5行第255列表示为“R5C255”。

    你的任务是:编写程序,实现从RC地址格式到常规地址格式的转换。


Input


    用户先输入一个整数n(n<100),表示接下来有n行输入数据。

    接着输入的n行数据是RC格式的Excel单元格地址表示法。


Output


 程序输出n行数据,每行是转换后的常规地址表示法。


Sample Input

3

R1C1

R65535C256

R100C100 

3

R100C99

R1C255

R255C27


Sample Output

A1

IV65535

CV100

CU100


IU1


AA255


分析:根据原题要求,A~Z依次对应1~26。我们不妨先令各字母对应的数字减一,使得A~Z依次对应0~25以方便进制转换,而在输出时令各数字加一以使A~Z对应1~26.


AC代码:


#include<stdio.h>
#include<string.h>
#include<stdbool.h>
void fun(int a);
int main()
{
//声明变量
int num,a;
int n,i;
while(~scanf("%d",&n))
{
bool ed=false;
for(i=0;i<n;++i)
//数据处理
{
scanf(" %*c%d%*c%d",&num,&a); //格式化输入输出中,‘ ’、‘*’字符的使用

fun(a-1); //转换并输出后半段数据
printf("%d\n",num);
}
//格式控制:
if(!ed) //!ed相当于ed==false

{
puts("");//puts("");相当于putchar('\n');
ed=true;
}
}
return 0;
}
void fun(int a) //a:待转换的数据
{
if(a<0) //此处 a 不能等于 0
return;
fun(a/26-1); //递归求商
putchar(a%26+'A'); //利用递归的栈结构,逆序输出
}

细节补充-printf

例:printf("%06d",1000);会输出:001000


printf中限制输出的宽度可使用星号 。


即不显示指明输出最小宽度,而是以星号代替,具体宽度在printf的输出参数列表中给出。


例如:
printf("%0*d",6,1000);输出:001000



即不显示指明输出最小宽度,而是以星号代替,具体宽度在printf的输出参数列表中给出。
scanf中忽略某输入项可使用星号。


例:scanf("%*c%c%c",&a,&b,&c);
若输入: 123<回车>
则 a=2,b=3,c未知


scanf中可使用空格跳过空白符


例:scanf(" %c",&a);
若输入: <回车>
<空格>8<回车>
则 a=8