关于16进制化为十进制问题,
#include <stdio.h>#define li 1
#define wai 0
main()
{int c,i=0;char s[1000];
unsigned double x;
while((c=getchar())!='\n')
{s[i]=c;i++;}
i--;
x=hoti(s);
printf("%u\n",x);
}
int hoti(char s[])
{int i,a,b,c=0;
i=0;
if(s[i]=='0')
{i++;
if(s[i]=='x'||s[i]=='X')
i++;
}
a=li;
for(;a==li;i++)
{if(s[i]>='0'&&s[i]<='9') {b=s[i]-'0';i++;}
else if(s[i]>='a'&&s[i]<='f') {b=s[i]-'a'+10;i++;}
else if(s[i]>='A'&&s[i]<='F') {b=s[i]-'A'+10;i++;}
else a=wai;
if(a==li) c=16*c+b;
}
return c;
}
程序如上述,为什么总是输出01?不明白啊~
郁闷,花了好久写完的……都没反应