华为2013.6.3号机试题

之前投了华为的实习生,昨天让去参加“华为编程大赛”机试。就一个题,在网吧上机,时间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;
	else
		cout<<"Error Input!"<<endl;

}


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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值