思路:判断是否为16进制只要逐一检测该字符串中的字符是否所处得范围为'0'~'9'或'a'~'f'或'A'~'F'。对一个字符串逆序,可直接从最后一个字符输出到第一个字符输出。
16进制转10进制实际上就是16进制的每一位乘以16累加求和的过程。。
//=====c语言实现上述函数
#include<stdio.h>
#include<string.h>
int IsHex(char *s)
{//判断该输入串是否为16进制
//为16进制返回1,否则返回0
while(*s)
{
if(*s>='0'&&*s<='9'||*s>='a'&&*s<='f'||*s>='A'&&*s<='F')
//16进制的范围0~9和a~f或A~F
s++;
else
return 0;
}
return 1;
}
void Reverse(char *s)
{//对字符串进行逆序输出
//从最后一个字符开始输出,直到第一个字符为止
int j=strlen(s)-1;
while(j>=0)
{
putchar(s[j]);
j--;
}
}
int HexToTen(char *s)
{//16进制转化为10进制
int sum=0,temp,j;
for(j=0;s[j]!='\0';j++)
{
if(s[j]>='0'&&s[j]<='9')
temp=s[j]-'0';//0~9
else if(s[j]>='a'&&s[j]<='f')
temp=10+s[j]-'a';//a~f
else
temp=10+s[j]-'A';//A~F
sum=sum*16+temp;
}
return sum;
}
int main()
{
char str[30];
int Ten;
printf("Enter a Hex number:");
scanf("%s",str);
if(IsHex(str))
{//是否为16进制,是则转换为10进制
printf("%s is a Hex number!\n",str);
Ten=HexToTen(str);
printf("Hex number %s to Ten is:%d\n",str,Ten);
}
else
printf("%s is not a Hex number!\n",str);
Reverse(str);//对字符串逆序输出
return 0;
}
温馨提示:答案为网友推荐,仅供参考