惠州网站建设公司曾,做网站需要学习什么知识,网站建设规定,网站开发网站源码题目#xff1a;
输入一个以#结束的字符串#xff0c;本题要求滤去所有的非十六进制字符#xff08;不分大小写#xff09;#xff0c;组成一个新的表示十六进制数字的字符串#xff0c;然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”#…题目
输入一个以#结束的字符串本题要求滤去所有的非十六进制字符不分大小写组成一个新的表示十六进制数字的字符串然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”则代表该数是负数。
输入格式
输入在一行中给出一个以#结束的非空字符串。
输出格式
在一行中输出转换后的十进制数。题目保证输出在长整型范围内。
输入样例
-P-xf4-1!#
输出样例
-3905
解
#includestdio.hint huan(char s[100]){//将十六进制转换为十进制的函数int i0,sum0,n;while(s[i]!#){if(s[i]A || s[i]a){n10;sumsum*16n;}else if(s[i]B || s[i]b){n11;sumsum*16n;}else if(s[i]C || s[i]c){n12;sumsum*16n;}else if(s[i]D || s[i]d){n13;sumsum*16n;}else if(s[i]E || s[i]e){n14;sumsum*16n;}else if(s[i]F || s[i]f){n15;sumsum*16n;}else if(s[i]0s[i]9){ns[i]-0;//注意这里,因为这里是字符,所以必须减掉0才是数字的值sumsum*16n;}i;}return sum;
}int zhangfu(char s[100]){int i0,flag1;while(s[i]!/0){if(s[i]As[i]F || s[i]as[i]f){break;//如果先检测到指定字符,直接返回flag1}if(s[i]-){//如果先检测到负号,则返回flag-1flag-1;}i;}return flag;
}
int main(){char s[100];gets(s);int flagzhangfu(s);int sumhuan(s);printf(%d,flag*sum);return 0;
}