蓝桥杯2014年以前JAVA历年真题及答案整理——Excel地址转换
2014-03-21 15:32
549 查看
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
import java.util.Scanner;
import java.util.Stack;
public class Main {
/**
* @param auth y j g
* 注:本程序只适合于答案所示的结果
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
while(n>0){
String string = sc.nextLine();
//根据正则表达式选择出行列
String strings [] = string.split("C");
strings[0] = strings[0].substring(1,strings[0].length());
//定义行数和列数
int lineNum = Integer.parseInt(strings[0]);
int rowNum = Integer.parseInt(strings[1]);
Stack <Character> stack = new Stack<Character>();
while (rowNum > 0 ){
if(rowNum % 26 == 0 ){
stack.push('Z');
rowNum = rowNum / 26 - 1;
}else{
stack.push((char) ('A' - 1 + rowNum % 26));
rowNum /= 26;
}
}
while (! stack.empty()){
System.out.print(stack.pop());
}
System.out.println(lineNum);
n -- ;
}
}
}
事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址。
第12行第4列表示为:“R12C4”,第5行第255列表示为“R5C255”。
你的任务是:编写程序,实现从RC地址格式到常规地址格式的转换。
【输入、输出格式要求】
用户先输入一个整数n(n<100),表示接下来有n行输入数据。
接着输入的n行数据是RC格式的Excel单元格地址表示法。
程序则输出n行数据,每行是转换后的常规地址表示法。
例如:用户输入:
2
R12C4
R5C255
则程序应该输出:
D12
IU5
import java.util.Scanner;
import java.util.Stack;
public class Main {
/**
* @param auth y j g
* 注:本程序只适合于答案所示的结果
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
while(n>0){
String string = sc.nextLine();
//根据正则表达式选择出行列
String strings [] = string.split("C");
strings[0] = strings[0].substring(1,strings[0].length());
//定义行数和列数
int lineNum = Integer.parseInt(strings[0]);
int rowNum = Integer.parseInt(strings[1]);
Stack <Character> stack = new Stack<Character>();
while (rowNum > 0 ){
if(rowNum % 26 == 0 ){
stack.push('Z');
rowNum = rowNum / 26 - 1;
}else{
stack.push((char) ('A' - 1 + rowNum % 26));
rowNum /= 26;
}
}
while (! stack.empty()){
System.out.print(stack.pop());
}
System.out.println(lineNum);
n -- ;
}
}
}
相关文章推荐
- 蓝桥杯2014年以前JAVA历年真题及答案整理——十六进制转十进制
- 蓝桥杯2014年以前JAVA历年真题及答案整理——十进制转十六进制
- 蓝桥杯2014年以前JAVA历年真题及答案整理——求和公式
- 蓝桥杯2014年以前JAVA历年真题及答案整理——特殊回文数
- 蓝桥杯2014年以前JAVA历年真题及答案整理——实数输出
- 蓝桥杯2014年以前JAVA历年真题及答案整理——回文数
- 蓝桥杯2014年以前JAVA历年真题及答案整理——Fibonacci数列
- 蓝桥杯2014年以前JAVA历年真题及答案整理——特殊的数字
- 蓝桥杯2014年以前JAVA历年真题及答案整理——字符排序
- 蓝桥杯2014年以前JAVA历年真题及答案整理——杨辉三角形
- 蓝桥杯2014年以前JAVA历年真题及答案整理——串的简单处理
- 蓝桥杯2014年以前JAVA历年真题及答案整理——查找整数
- 蓝桥杯2014年以前JAVA历年真题及答案整理——数列特征
- 蓝桥杯2014年以前JAVA历年真题及答案整理——猜算式
- 蓝桥杯2014年以前JAVA历年真题及答案整理——区间k大数查询
- 蓝桥杯2014年以前JAVA历年真题及答案整理——字母图形
- 蓝桥杯2014年以前JAVA历年真题及答案整理——01字串
- 蓝桥杯2014年以前JAVA历年真题及答案整理——数列排序
- 蓝桥杯2014年以前JAVA历年真题及答案整理——闰年判断
- 蓝桥杯2014年以前JAVA历年真题及答案整理——A+B问题