zoukankan      html  css  js  c++  java
  • C语言 · 十六进制转十进制

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

    思路:

    需要留意的是sum的类型,数大点就不通过。——用long long型就够了,用lld输出。

    代码一:

     1 #include<stdio.h>
     2 #include<string.h> 
     3 int main(){
     4     char s[50];
     5     scanf("%s",&s);
     6     int t,len;
     7     len = strlen(s);
     8     long long sum=0;
     9     for(int i=0;i<len;i++){
    10         if(s[i]<='9')
    11             t=s[i]-'0';
    12         else
    13             t=s[i]-'A'+10;
    14         sum=sum*16+t;
    15     }
    16     printf("%lld",sum);
    17     return 0;
    18 }

     代码二:

     1 #include<stdio.h>
     2 #include<math.h>
     3 #include<string.h>
     4 int main(){
     5     char s[20];
     6     int i = 0, t = 0, temp = 0;
     7     scanf("%s",s);
     8     t = strlen(s);//得到字符串长度 
     9     long long answer=0;
    10     for(int i=0;i<t;i++){
    11         if(s[i]>='A' && s[i]<='Z')
    12             s[i]=int(s[i]-'A')+10+'0';
    13         answer+=((s[i]-'0')*(pow(16,t-1-i)));
    14     }
    15     printf("%lld",answer);
    16     return 0;
    17 }

    代码三:

     1 #include<stdio.h>  
     2 #include<string.h>  
     3 #include<math.h>  
     4 int main(){  
     5     char strHex[10];  
     6     int i = 0, len = 0, temp = 0;  
     7     long long answer = 0;  
     8     gets(strHex);  
     9     len = strlen(strHex);  
    10     for (i = 0; strHex[i] != ''; ++i){  
    11         switch(strHex[i]){  
    12             case 'A': temp = 10; break;  
    13             case 'B': temp = 11; break;  
    14             case 'C': temp = 12; break;  
    15             case 'D': temp = 13; break;  
    16             case 'E': temp = 14; break;  
    17             case 'F': temp = 15; break;  
    18             default: temp = strHex[i]-'0'; break;  
    19         }  
    20         answer += (temp*pow(16,len-1-i));  
    21     }  
    22     printf("%lld",answer);  
    23     return 0;  
    24 }
  • 相关阅读:
    poj 1113 Wall 凸包的应用
    NYOJ 78 圈水池 (入门级凸包)
    Monotone Chain Convex Hull(单调链凸包)
    poj Sudoku(数独) DFS
    poj 3009 Curling 2.0(dfs)
    poj 3083 Children of the Candy Corn
    Python join()方法
    通过FISH和下一代测序检测肺腺癌ALK基因融合比较
    华大病原微生物检测
    NGS检测ALK融合大起底--转载
  • 原文地址:https://www.cnblogs.com/panweiwei/p/6478631.html
Copyright © 2011-2022 走看看