字符串之Excel地址转换
2014-02-04 18:14
176 查看
ProblemI:Excel地址转换
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行数据,每行是转换后的常规地址表示法。SampleInput
3
R1C1
R65535C256
R100C100
3
R100C99
R1C255
R255C27
SampleOutput
A1
IV65535
CV100
CU100
IU1
AA255
#include<iostream>
#include<stdio.h>
#include<cstring>
usingnamespacestd;
intmain()
{
intn,i,j,m,x,y,g,h,b,z;
charstr[100];
chara[100];
while(cin>>b)
{
for(z=1;z<=b;z++)
{
{
cin>>str;
n=strlen(str);
for(i=0;i<=n-1;i++)
{
if(str[i]=='C')
j=i+1;
}
x=0;
for(i=j;i<=n-1;i++)
{
m=str[i]-48;
x=10*x+m;
}
y=x%26;
g=x/26;
if(y==0)
{
y=26;
g=g-1;
}
a[0]=g+64;
a[1]=y+64;
{
h=2;
for(i=1;i<=j-2;i++)
{
a[h++]=str[i];
}
}
{
if(g<1)
{
for(i=1;i<=j-1;i++)
cout<<a[i];
cout<<endl;
}
elseif(g>=1)
{
for(i=0;i<=j-1;i++)
cout<<a[i];
cout<<endl;
}
}
}
}
cout<<endl;
}
return0;
}
将RC地址格式转换为常规地址格式,需要先了解他们之间的规律,可以看到,R后面的数字转换为代表列的字母,C后面的数字不变,直接放在R转换的代表列的字母后面,用来表示行;所以,可以对RC格式的字符串进行字符检查,记录C的下标,将C后面的数字转换为字母放在字符串的前面,将R后的数字字符直接放在字符串的后面;为了方便计算,将按照实际情况,列最高只有两个字母;
首先,将字符串全部检查一遍(for(i=0;i<=n-1;i++)),找到C的下标(if(str[i]=='C')),并将下一个字符,即数字的下标记录下来(j=i+1;);
C后面的数字代表列,应该转换为字母,借助ASCII表,先将数字字符转换为数字(for(i=j;i<=n-1;i++){m=str[i]-48;x=10*x+m;}),再将数字转换为字母字符(y=x%26;g=x/26;a[0]=g+64;a[1]=y+64;);特殊情况就是,有时数字字符转换的数字再转换成字母时会被整除,整除时(if(y==0)),第一个字母多进了一位,应该减去(g=g-1;),第二个字母为Z,直接赋值就行(y=26;);
将前面代表行的数字字符直接放在字符串后面(for(i=1;i<=j-2;i++){a[h++]=str[i];}),字符串下标从2开始(h=2;);
如果代表列的字母只有一个(if(g<1)),那么,字符串就从第二个字符开始输出(for(i=1;i<=j-1;i++)),否则(elseif(g>=1)),完全输出(for(i=0;i<=j-1;
i++));
别忘了换行(cout<<endl;)!
相关文章推荐
- java字符串应用之IP地址转换成整数
- Excel地址转换
- java字符串应用之IP地址转换成整数
- Excel地址转换
- 分享一个小工具:Excel表快速转换成JSON字符串
- 正则表达式匹配EXCEL地址字符串
- leetcode excel表格列标题数字与字符串的转换
- linux下将整型IPv4地址转换成点分十进制字符串的方法
- Go IP 地址字符串整数/string int 相互转换
- C# 获取本机IP地址以及转换字符串
- 分享一个小工具:Excel表高速转换成JSON字符串
- 正则表达式匹配EXCEL地址字符串
- python将字符串格式日期转换为excel的日期格式
- Excel地址转换
- 如何将excel格式的中国三级地址文件转换成android需要的json格式的文件(一)
- 【蓝桥杯】【Excel地址转换】
- 〖Linux〗Qt+gsoap开发客户端程序,服务端地址设定的字符串转换处理
- java字符串应用之IP地址转换成整数
- Excel的一列是另一列的一部分加上一串字符串(Email地址变域账号)