华为2013.6.3号机试题

来源:互联网 发布:更改windows桌面路径 编辑:程序博客网 时间:2024/04/20 19:39

之前投了华为的实习生,昨天让去参加“华为编程大赛”机试。就一个题,在网吧上机,时间30分钟,题目如下:

17进制转成10进制,输入是数字跟大写字母。例如输入G、11、FF,分别输出16、18、270

(好吧,好多大神都觉得这题太菜了,我快到时间才大体写出来的,回来一想,当时我考虑的也不周全;不过说实话,对于编程大赛,出这种题目是简单了一些。)

参考代码如下:

void main(){string str;cin>>str;int i=0;int num=0;//保存转换后数字int factor=1;bool sign=1;//用来标志输入字符串是否非法int len=str.size();for (i=0;i<len;i++){if (str[i]>='0' && str[i]<='9'){num=num*factor+(str[i]-'0');factor*=17;}else if (str[i]>='A' && str[i]<='G'){num=num*factor+(str[i]-'A'+10);factor*=17;}else{sign=0;break;}}if (sign)cout<<num<<endl;elsecout<<"Error Input!"<<endl;}


注:我这个破程序没考虑大数的情况,我记得当时题目说输入范围好像是0~0xFFFF,记不太清了,反正题目中给出了范围。