试题 基础练习 十六进制转十进制
提交此题 评测记录
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
题解
pow(x,y)表示 x 的 y 次幂char *gets(char *str) 把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符
十六进制转为十进制:
C代码:
#include #include #include int main() { double n,sum=0; char arr[8]; int len,i=0; gets(arr); len=strlen(arr);//计算字符串 arr 的长度,直到空结束字符,但不包括空结束字符 while(len)// 遍历, { if(arr[len-1]>='A'&&arr[len-1]<='F') n=(arr[len-1]-'7')*pow(16,i++);// 减 ‘7’ 目的是不超过 8 位 else n=(arr[len-1]-'0')*pow(16,i++); sum=sum+n; len--; } printf("%.0lf",sum); return 0;}