题目:
编写程序,输入一个以回车符结束的字符串(少于80个字符),过滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
**输入提示信息:"请输入十六进制字符串:"
**输出格式要求:"十六进制串%s的值=十进制%.0f"
程序运行示例如下:
请输入十六进制字符串:P12aZ
十六进制串12a的值=十进制298
#include<stdio.h>
#include<math.h>
int main()
{
char s[80];
char b[80];
printf("请输入十六进制字符串:");
scanf("%s",s);
int j=0;
for(int i=0;s[i]!='\0';i++)//将s过滤保存到b
{
if(s[i]>='g'&&s[i]<='z'||s[i]>='G'&&s[i]<='Z')
{
continue;
}
b[j]=s[i];
j++;
}
b[j]='\0';
printf("%s",b);
int sum=0;
for(int i=0;i<j;i++)//计算每一位数相加得sum
{
if(b[i]>='a'&&b[i]<='f')
{
sum=sum*16+b[i]-'a'+10;
}
else if(b[i]>='A'&&b[i]<='F')
{
sum=sum*16+b[i]-'A'+10;
}
else if(b[i]>='0'&&b[i]<='9')
{
sum=sum*16+b[i]-'0';
}
}
printf("十六进制串%s的值=十进制%d",b,sum);
return 0;
}