基础练习 十六进制转十进制

问题描述
  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
代码

#include <stdio.h>
#include <string.h>
int main()
{
char a[9];
int i;
scanf("%s",a);
unsigned int n=1,b=0;
for(i=strlen(a)-1;i>=0;i--)
{
if(a[i]<='9')
b+=(a[i]-'0')*n;
else
b+=(a[i]-'A'+10)*n;
n=16*n;
}
printf("%u\n",b);
return 0;
}

思考

原来想用char数组 结果写了一大片出不来 晕了

参考网上的做法改用字符串存输入的16进制 从尾部(个位)开始判断循环 加权用n表示

注意10以上的应该和A进行比较再加10(这里就是asc码的计算作条件)

以及加权和最后输出10进制改用了无符号整型%u

posted @ 2020-02-05 11:35  Shawuila  阅读(198)  评论(0编辑  收藏  举报