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 }
  • 相关阅读:
    Lucene.Net 2.3.1开发介绍 —— 二、分词(一)
    控制‘控制台应用程序’的关闭操作
    详解for循环(各种用法)
    敏捷软件开发
    Sql Server的一些知识点
    在SharePoint 2010 中配置Remote Blob Storage FILESTREAM Provider
    使用LotusScript操作Lotus Notes RTF域
    JOpt Simple 4.5 发布,命令行解析器
    John the Ripper 1.8.0 发布,密码破解工具
    PacketFence ZEN 4.0.1 发布,网络接入控制
  • 原文地址:https://www.cnblogs.com/panweiwei/p/6478631.html
Copyright © 2011-2022 走看看