Excel地址转换

Excel地址转换

时间: 1ms        内存:128M

描述:

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

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

输入:

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

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

输出:

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

示例输入:

3
R1C1
R65535C256
R100C100

3
R100C99
R1C255
R255C27

示例输出:

A1
IV65535
CV100

CU100
IU1
AA255

提示:

参考答案(内存最优[920]):

#include<stdio.h>
#include<string.h>

int main()
{
    int i,j,n,p,q;
    char a[20];
    char b[20];

    while(scanf("%d",&n)!=EOF)
    {
        while(n--)
        {
            scanf("%s",a);
            for(i=0;; i++)
                if(a[i]=='C')
                    break;
            sscanf(a+1,"%d",&p);
            sscanf(a+i+1,"%d",&q);
            j=0;
            while(q)
            {
                if(q%26==0)
                {
                    b[j++]='Z';
                    q=q/26-1;
                }
                else
                {
                    b[j++]=q%26+'A'-1;
                    q=q/26;
                }
            }
            for(i=j-1; i>=0; i--)
                printf("%c",b[i]);
            printf("%d\n",p);
        }
        printf("\n");
    }
    return 0;
}

参考答案(时间最优[0]):

#include<stdio.h>
#include<string.h>

int main()
{
    int i,j,n,p,q;
    char a[20];
    char b[20];

    while(scanf("%d",&n)!=EOF)
    {
        while(n--)
        {
            scanf("%s",a);
            for(i=0;; i++)
                if(a[i]=='C')
                    break;
            sscanf(a+1,"%d",&p);
            sscanf(a+i+1,"%d",&q);
            j=0;
            while(q)
            {
                if(q%26==0)
                {
                    b[j++]='Z';
                    q=q/26-1;
                }
                else
                {
                    b[j++]=q%26+'A'-1;
                    q=q/26;
                }
            }
            for(i=j-1; i>=0; i--)
                printf("%c",b[i]);
            printf("%d\n",p);
        }
        printf("\n");
    }
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注