这是本人上个月做的,武汉地区的上机题中的第三个,三个题目都是字符串的,共450分,两个小时内完成。
仿照Excel的列编号,给出该列编号字符串,输出一个数字。
例如:a对应1,z对应26,aa对应27,az对应52 ……
#include <iostream>
#include <string>
using namespace std;
//字符串到数字的转换,相当于26进制
int stoi(char *s)
{
int n=0;//字符串长度
int i=0;//循环变量
int a,m;//中间变量
int val=0;//转换后的值
char *p=NULL;//指针变量
n=strlen(s);
p=s+n-1;//指向字符串最后一个字符
//从个位开始往前计算
for (i=1; i<=n; i++)
{
a=i;
m=1;
while(a>1)
{
m*=26;
a--;
}
m*=(*p-'a'+1);
val+=m;
}
return val;
}
int main()
{
char out[255] = {0};
cin>>out;
int b=stoi(out);
cout<<b<<endl;
getchar();
return 0 ;
}