问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
正确率75%,不知道哪里出错了。。。
参考代码如下:
#include<stdio.h>
#include<string.h>
#include<math.h>
int main(){
char a[8];
int i=0,temp=0,sum=0;
gets(a);
int len = strlen(a);
for(i=0;a[i]!='\0';i++){
switch(a[i]){
case 'A':temp=10;break;
case 'B':temp=11;break;
case 'C':temp=12;break;
case 'D':temp=13;break;
case 'E':temp=14;break;
case 'F':temp=15;break;
default: temp=a[i]-'0';break;
}
sum += (temp*pow(16,len-1-i));
}
printf("%d",sum);
return 0;
}