蓝桥杯 地址转换 解题报告
2015-02-25 21:28
232 查看
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
【注意】
请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
如果要是不理解题目,可以真的打开excel看看,仔细观察就可以看出,实际上是一个26进制数转换,而且还只要转换列数就可以了,另外,在转换的时候有简易版和完整版,因为题目没有对数据范围进行规定,而且这又是蓝桥杯中的题目,所以可以肯定,两位之内应该是能水过的,事实上也正是如此,测试数据中没有出现多余2位的,但实际上完整版也不会太难。
#include<iostream>
#include<memory.h>
using namespace std;
int main()
{
int r,c,end,temp,right;
int cas;
int i,j;
char rc[20];
cin>>cas;
while(cas--)
{
memset(rc,'*',sizeof(rc));
cin>>rc;
for(i=0;rc[i]!='*';i++)
{
if(rc[i]=='R')
r=i;
else if(rc[i]=='C')
c=i;
}
end=i;
right=1;
temp=0;
for(i=c-1;i>r;i--)
{
temp+=(rc[i]-'0')*right;
right*=10;
}
r=temp;
right=1;
temp=0;
for(i=end-2;i>c;i--)
{
temp+=(rc[i]-'0')*right;
right*=10;
}
c=temp;
if(c>26)
{
temp=c/26;
cout<<(char)(temp+'A'-1);
}
temp=(c-1)%26;
cout<<(char)(temp+'A');
cout<<r<<endl;
}
return 0;
}
事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址。 第12行第4列表示为:“R12C4”,第5行第255列表示为“R5C255”。
你的任务是:编写程序,实现从RC地址格式到常规地址格式的转换。
【输入、输出格式要求】
用户先输入一个整数n(n<100),表示接下来有n行输入数据。
接着输入的n行数据是RC格式的Excel单元格地址表示法。
程序则输出n行数据,每行是转换后的常规地址表示法。
例如:用户输入:
2
R12C4
R5C255
则程序应该输出:
D12
IU5
【注意】
请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
如果要是不理解题目,可以真的打开excel看看,仔细观察就可以看出,实际上是一个26进制数转换,而且还只要转换列数就可以了,另外,在转换的时候有简易版和完整版,因为题目没有对数据范围进行规定,而且这又是蓝桥杯中的题目,所以可以肯定,两位之内应该是能水过的,事实上也正是如此,测试数据中没有出现多余2位的,但实际上完整版也不会太难。
#include<iostream>
#include<memory.h>
using namespace std;
int main()
{
int r,c,end,temp,right;
int cas;
int i,j;
char rc[20];
cin>>cas;
while(cas--)
{
memset(rc,'*',sizeof(rc));
cin>>rc;
for(i=0;rc[i]!='*';i++)
{
if(rc[i]=='R')
r=i;
else if(rc[i]=='C')
c=i;
}
end=i;
right=1;
temp=0;
for(i=c-1;i>r;i--)
{
temp+=(rc[i]-'0')*right;
right*=10;
}
r=temp;
right=1;
temp=0;
for(i=end-2;i>c;i--)
{
temp+=(rc[i]-'0')*right;
right*=10;
}
c=temp;
if(c>26)
{
temp=c/26;
cout<<(char)(temp+'A'-1);
}
temp=(c-1)%26;
cout<<(char)(temp+'A');
cout<<r<<endl;
}
return 0;
}
相关文章推荐
- 2013第四届“蓝桥杯”预选赛 解题报告
- 2014年第五届蓝桥杯预赛 C/C++本科B组 快速解题思路及报告(完整版,4.9修订)
- 蓝桥杯 历届试题 连号区间数 解题报告
- 第六届蓝桥杯2015本科B组c/++部分解题报告
- 第六届蓝桥杯试题--生命之树 解题报告
- 第四届蓝桥杯C++本科B组预赛解题报告
- 2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告
- 剑指offer解题报告(Java版)——二叉搜索树转换为双向链表 27
- 蓝桥杯 泊松分酒 数学分析 解题报告
- 第七届 蓝桥杯决赛 Java B组 打靶 解题报告(DFS,回溯,全排列)
- 蓝桥杯 2的次幂表示 解题报告(递归)
- 2014年蓝桥杯预赛 C/C++本科B组 解题报告 (本人写的)
- 2014蓝桥杯本科C/C++组预赛第9题<斐波那契>解题报告
- Leetcode 28.Implement strStr() 解题报告【C库函数strstr()模拟-字符串中子串首次出现的地址】
- 蓝桥杯:地址转换
- 第三届蓝桥杯C++本科B组决赛解题报告(更新中)
- 2015年第六届蓝桥杯省赛(C/C++ B组)解题报告
- 第二届蓝桥杯C++本科B组决赛解题报告
- 【C++解题报告】十进制转换二、八、十六进制
- 【蓝桥杯】【Excel地址转换】