/*英文字母支持大小写输入。错误输入会自动提示用户重新输入*/
#include
#include
#include
#include
int main()
{
char a[10],i=0;
long int sum=0,k1;
char k;
s:printf ("Please enter a sixteen band:");
while (1)
{
scanf ("%c",&k);
if (k>48&&k<=57) a[i++]=k-48;//判断用户的输入,错误输入会报错
else if (k==48) a[i++]=16;
else if (k>='a'&&k<='f') a[i++]=k-87;
else if (k>='A'&&k<='F') a[i++]=k-55;
else if (k=='\n') {a[i++]='\0';break;}
else {printf ("input error!\n");fflush (stdin);i=0;memset (a,'\0',10); goto s;}
}
k1=(int)strlen (a);//因为输入'0'时会自动转化为16(防止stlen函数停止读取),所以要把strlen结 果记录入k1
for (i=0;i
if (a[i]==16) a[i]=0;
sum+=a[i]*(int)pow (16,k1-i-1);//指数函数,在math.h头文件中
}
printf ("return:%ld",sum);
return 0;
}