标题:貌似指针方面用的有点问题!求帮助
只看楼主
tompobing
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:260
专家分:809
注 册:2012-12-9
结帖率:78.13%
已结贴  问题点数:30 回复次数:1 
貌似指针方面用的有点问题!求帮助
Excel是最常用的办公软件。每个单元格都有唯一的地址表示。比如:第12行第4列表示为:“D12”,第5行第255列表示为“IU5”。
   
    事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址。 第12行第4列表示为:“R12C4”,第5行第255列表示为“R5C255”。

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

【输入、输出格式要求】

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

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

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

    例如:用户输入:
2
R12C4
R5C255

    则程序应该输出:
D12
IU5










#include <stdio.h>
#include <string.h>
#define N 100
char a[N][N];
char zimu[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
int lie(char (*p)[N])
{
    char buf[30];
    int len,i;
    int num;
    sscanf(*p,"%[^C]",buf);
    len=strlen(buf);
    for(i=0;p[i]!='\0';i++,len++)
        *p[i]=*p[len+1];
    sscanf(*p,"%d",&num);
    return num;
}
int hang(char (*p)[N])
{
    char bu[30];
    int num1;
    sscanf(*p,"%[^C]",bu);
    sscanf(bu+1,"%d",&num1);
    return num1;
}
int main()
{
    int n,i;
    int t,h;
    int s[20],j;
    char jie[20];
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%s",*(a+i));
    for(i=0;i<n;i++)
    {
        j=0;
        h=hang(a+i);
        t=lie(a+i);
        while(t>=26)
        {
           s[j]=t%26;
           t/=26;
           j++;
        }
    for(i=0;j>0;i++,j--)
        jie[i]=zimu[s[j]];
    printf("%s%d\n",jie,h);
    }
    return 0;
}
搜索更多相关主题的帖子: 办公软件 编写程序 Excel 用户 
2013-07-06 23:43
YJ_Hao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:215
专家分:609
注 册:2013-3-22
得分:30 
#include <stdio.h>
#include <string.h>
#define N 100
char a[N][N];
char zimu[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
int lie(char (*p)[N])
{
    char buf[30];
    int num;
    sscanf(*p,"%[^C]%*c%d%[^'\0']",buf,&num);
    return num;
}
int hang(char (*p)[N])
{
    char bu[30];
    int num1;
    sscanf(*p,"%[^C]",bu);
    sscanf(bu+1,"%d",&num1);
    return num1;
}
int main()
{
    int n,i;
    int t,h;
    int s[20],j,k;
    char jie[20];
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%s",*(a+i));
    for(i=0;i<n;i++)
    {
        j=0;
        h=hang(a+i);
        t=lie(a+i);
        while(t)
        {
           s[j]=(t-1)%26;
           t=(t-1)/26;
           j++;
        }
        j--;
    for(k=0;j>=0;k++,j--)
        jie[k]=zimu[s[j]];
    jie[k]='\0';
    printf("%s%d\n",jie,h);
    }
    return 0;
}

根据LZ的修改的,自己对照下吧!
2013-07-07 08:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-416807-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.101602 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved