. (程序题) 【问题描述】4.18 十六进制转十进制数。输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),输出该字符串并将其转换为十进制数后输出。
【输入形式】一个字符串,小于80个字符串
【输出形式】输出为两行
第一行为整理后的新串
第二行为一个十进制数字
【输入输出样例】
【样例说明】
提示符后冒号为英文字符,无空格
“=”等号两边无空格,输出结束无换行符。
/十六进制转十进制数。
输入一个以回车结束的字符串(少于80个字符),
滤去所有的非十六进制字符后,
组成一个新字符串(十六进制形式),
输出该字符串并将其转换为十进制数后输出。/
#include
#include
#define N 81
int main()
{
static char a[N],b[N];
int i,num=0;
double j=0;
printf("Enter a string:");
gets(a);//输入数组
printf("New string:");
for(i=0;i
if(a[i]<='9'&&a[i]>='0')
{b[j]=a[i];j++;}
//printf("%c",a[i]);
else if((a[i]>='A'&&a[i]<='F')||(a[i]>='a'&&a[i]<='f'))//
{b[j]=a[i];j++;}//提取十六进制数
//printf("%c",a[i]);
else;}
for(j=0;j
printf("%c",b[j]);//输出十六进制数
for(j=0;j
if(b[j]='a'||b[j]='A')b[j]=10;
else if(b[j]='b'||b[j]='B')b[j]=11;
else if(b[j]='c'||b[j]='C')b[j]=12;
else if(b[j]='d'||b[j]='D')b[j]=13;
else if(b[j]='e'||b[j]='E')b[j]=14;
else if(b[j]='f'||b[j]='F')b[j]=15;
else;
num+=b[i]*pow(16.0,i);}//进制转换
printf("number=%d",num);
return 0;
}