输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新的字符串

【问题描述】输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新的字符串(十六进制形式),然后将其转换为十进制数后输出。
【输入形式】
【输出形式】
【样例输入】+A
【样例输出】Hex=10
【样例说明】
【评分标准】
完全没头绪,希望大神能够给出C语言代码,。

#include <stdio.h>
void main(){
char s[80];
int i,x;
gets(s);
x=0;
i=0;
while(s[i]){
if (s[i]<='9' && s[i]>='0') x=x*16 + s[i] - '0';
else if (s[i]<='F' && s[i]>='A') x=x*16 + 10 + s[i] - 'A';
else if (s[i]<='f' && s[i]>='a') x=x*16 + 10 + s[i] - 'a';
i++;
}
printf("%d\n",x);
}

程序调试通过,但是输入的数据不要太大哦,例如输入AAAAAA,这样系统内部的int类型装不下,需要自定义大数据类型来表示。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-09
#include<stdio.h>
void main()
{
    char str[81];
    int sum=0,i=0;
    gets(str);
    while(str[i])
    {
        if(str[i]>='a' && str[i]<='f')
            str[i]-=32;
        if(str[i]>='0' && str[i]<='9')
            sum=sum*16+str[i]-'0';

        if (str[i]>='A' && str[i]<='F')
            sum=sum*16+str[i]-'A'+10;
        i++;
    }
    printf("hex=%d\n",sum);
}

本回答被提问者和网友采纳
相似回答