#include<stdio.h>
#include<math.h>
int convert(char g){
switch(g){
case 'a':return 10;break;
case 'A':return 10;break;
case 'b':return 11;break;
case 'B':return 11;break;
case 'c':return 12;break;
case 'C':return 12;break;
case 'd':return 13;break;
case 'D':return 13;break;
case 'e':return 14;break;
case 'E':return 14;break;
case 'f':return 15;break;
case 'F':return 15;break;
}
}
int main(void)
{
int i,j,temp=0,n=0,flag=1;
char a[800],c;
c=getchar();
for(i=0;c!='#';i++){
if((c>='0'&&c<='9')||(c>='a'&&c<='f')||(c>='A'&&c<='F')){
a[n]=c; //滤去其他字符
temp=1;
n++;
}
if(c=='-'&&temp==0){
flag=-1; //代表负数
}
c=getchar();
}
int sum=0;
for(i=n-1,j=0;i>=0;i--,j++){ //十六进制转换为十进制
if(a[j]>='0'&&a[j]<='9'){
sum+=(a[j]-48)*pow(16,i);
} else{
sum+=convert(a[j])*pow(16,i);
}
}
if(flag==-1){
printf("%d",-sum);
} else{
printf("%d",sum);
}
return 0;
}
习题7-8 字符串转换成十进制整数
最新推荐文章于 2024-07-18 21:33:10 发布