当前位置:   article > 正文

c语言,蓝桥杯,十六进制转十进制_c语言实现十六进制转换为十进制l蓝桥杯

c语言实现十六进制转换为十进制l蓝桥杯

完整代码

#include<stdio.h>  
#include<string.h>  
#include<math.h>  
int main(){  
    char strHex[10];  
    int i = 0;//循环用 
	int len = 0;//保存字符长度 
	int temp = 0; //缓存 
    long long answer = 0;//保存最终的答案  
    gets(strHex);//输入字符(十六进制数据)  
    len = strlen(strHex);//计算长度  
    for (i = 0; strHex[i] != '\0'; ++i){  
        switch(strHex[i]){  
            case 'A': temp = 10; break;  
            case 'B': temp = 11; break;  
            case 'C': temp = 12; break;  
            case 'D': temp = 13; break;  
            case 'E': temp = 14; break;  
            case 'F': temp = 15; break;  
            default: temp = strHex[i]-'0'; break;  
        }  
        answer += (temp*pow(16,len-1-i));  
    }  //算法 
    printf("%lld",answer);//输出答案  
    return 0;  
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

算法解释

    for (i = 0; strHex[i] != '\0'; ++i){  
        switch(strHex[i]){  
            case 'A': temp = 10; break;  
            case 'B': temp = 11; break;  
            case 'C': temp = 12; break;  
            case 'D': temp = 13; break;  
            case 'E': temp = 14; break;  
            case 'F': temp = 15; break;  
            default: temp = strHex[i]-'0'; break;  
        }  
        answer += (temp*pow(16,len-1-i));  
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

pow()用来求x的y次方

十六进制转十进制的方法

16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……
以此类推
当字符为ABCD等时可用Switch语句来转换成十进制数。
最后answer讲所有的答案累加起来便是最后档案。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/244472
推荐阅读
相关标签
  

闽ICP备14008679号