实验7-3-6 字符串转换成十进制整数
题目描述
输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。
输入
输入在一行中给出一个以#结束的非空字符串。
输出
在一行中输出转换后的十进制数。题目保证输出在长整型范围内
#include <stdio.h>
int main(){ char s[100],c; int n=0,i=0,flag=1; do{ scanf("%c",&c); if((c>='a' && c<='f') || (c>='A' && c<='F') || (c>='0' && c<='9')){ s[i++]=c; n++; }else if(c=='-' && n==0){ flag=0; } }while(c!='#'); int j=1,sum=0;; for(i=n-1;i>=0;i--){ if(s[i]>='a' && s[i]<='f') sum+=j*(s[i]-'a'+10); else if(s[i]>='A' && s[i]<='F') sum+=j*(s[i]-'A'+10);else if(s[i]>='0' && s[i]<='9') sum+=j*(s[i]-'0'); j*=16; } if(sum==0) printf("0\n"); else if(flag==0) printf("-%d",sum); else printf("%d",sum); return 0;
}