输入:输入一个十六进制的数值字符串。 输出:输出该数值的十进制字符串。
#include <iostream>
#include<cmath>
#include<cstring>
using namespace std;
int main()
{
char a[100];
int sum=0,len=0;
while (gets(a))
{
len=strlen(a);
for (int i=len-1; i>=0; i--)
{
if (a[i]>='A' && a[i]<='F')
{
sum=(a[i]-55)*pow(16,len-i-1)+sum;
}
else if (a[i]>='0' && a[i]<='9')
{
sum=(a[i]-48)*pow(16,len-i-1)+sum;
}
}
cout<<sum<<endl;
sum=0;
}
return 0;
}
刚开始写的代码一直不通过,发现是不满足连续输入的问题,后面用了一个while循环,一下就好了。这里有一个很重要的问题就是输入的是字符串,在利用进制转换的时候需要将每一个字符都转换成十进制的数,这一点需要注意一下。