您的位置:首页 > 编程语言 > C语言/C++

【华为2015暑期实习生上机题】仿照Excel的列编号

2015-05-04 11:40 369 查看
这是本人上个月做的,武汉地区的上机题中的第三个,三个题目都是字符串的,共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 ;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++