ccccc只有一个名字 2022-10-23 22:01 采纳率: 87.5%
浏览 170
已结题

c语言/输入字符串提取十六进制数转化成十进制

. (程序题) 【问题描述】4.18 十六进制转十进制数。输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),输出该字符串并将其转换为十进制数后输出。
【输入形式】一个字符串,小于80个字符串
【输出形式】输出为两行
第一行为整理后的新串
第二行为一个十进制数字
【输入输出样例】
 

img

【样例说明】
提示符后冒号为英文字符,无空格
“=”等号两边无空格,输出结束无换行符。
/十六进制转十进制数。
输入一个以回车结束的字符串(少于80个字符),
滤去所有的非十六进制字符后,
组成一个新字符串(十六进制形式),
输出该字符串并将其转换为十进制数后输出。
/
#include<stdio.h>
#include<string.h>
#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<strlen(a);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<strlen(b);j++)
printf("%c",b[j]);//输出十六进制数
for(j=0;j<strlen(b);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;
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月31日
    • 创建了问题 10月23日