1. 程式人生 > >藍橋 Excel地址轉換

藍橋 Excel地址轉換

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

C26 —> Z  26%26=0 能整除得到Z 

C27->AA27%26=1  得到A,27/26=1,得到A

C52-〉AZ52%26=0  得到Z ,(52-1)/26=1,1%26==1   得到A 

C53->BA53%26=1 得到A, 53/26=2   2%26==2得到B 

#include<iostream>  
#include<string.h>
#include<cstdio>
using namespace std;
int main()
{
	int n,i,j,k,x,y,t1,t2;
	char ch[100],str[100];
	cin>>n;
	getchar();
	while (n--)
	{
		gets(str);
		x=y=k=0;
		for (i=1; str[i]!='C';i++)
		{
			x = x*10+(str[i]-'0');
		}
		for (j=i+1; str[j]; j++)
		{
			y = y*10+(str[j]-'0');
		}
		while (y)
		{
			if (y%26==0)
			{
				ch[k++] = 'Z';
				y = (y-1)/26;
			}
			else
			{
				ch[k++] = y%26-1+'A';
				y = y/26;
			}
		}
		for (i=k-1; i>=0; i--)
		{
			cout<<ch[i];
		}
		cout<<x<<endl;
	}
	return 0;
}