zoukankan      html  css  js  c++  java
  • 二进制转16进制

    题目描述
    给定一个二进制表示的非负整数,将其转换为十六进制数。
    要求使用函数编写程序:函数原型如下:
    void convert( char *input, char *output);
    变量input为读入的二进制字符串,变量output为函数中要输出的十六进制字符串

    输入
    输入数据有多组,第一行为数据的组数T,接下来有T组数据。
    每组数据占一行,每行为一个二进制整数(不含多余的前导0),最多1000位。

    输出
    对于每组测试数据首先输出"Case #: ",#表示第几组测试数据,接着输出对应的十六进制数,字母用大写表示,每组测试结果占一行。 

    样例输入

    1111 
    10100100

    样例输出
    Case 1: F 
    Case 2: A4 

    提示
    5 = '5' - '0';

     1 #include <stdio.h>
     2 #include <math.h>
     3 #include <string.h>
     4 #include <stdlib.h>
     5 void convert( char *input, char *output);
     6 
     7 int main(int argc, char const *argv[])
     8 {
     9     int T;
    10     int i;
    11     char input[1000]= {0};
    12     char output[256]= {0};
    13     char format[32] = {0};
    14     char total[1024] = {0};
    15    scanf("%d",&T);//多组输入
    16   
    17    for(i=0;i<T;i++)
    18    {
    19     fflush(stdin);
    20     gets(input);
    21     convert(input,output);
    22     
    23     sprintf(format, "
    Case %d: ", i);
    24     strcat(total, format);
    25     strcat(total, output);
    26    }
    27    
    28   printf("%s
    ", total);
    29    
    30     return 0;
    31 }
    32 void convert( char *input, char *output)
    33 {
    34     int len = strlen(input);
    35     int pos=len/4+1;
    36     int j=0;
    37     int i=0;
    38     int sum=0;
    39     if(len%4==0)
    40     {
    41         pos=pos-1;
    42     }
    43     while(len>0)
    44     {
    45         sum=0;
    46         for(i=0;i<4&&len>0;i++,len--)
    47         {
    48             
    49             sum=sum+(input[len-1]-'0')*pow(2,i);
    50         }
    51         //转成16进制字符
    52         sum = sum + '0';
    53         if(sum>'9'&&sum<='9'+7)
    54         {
    55             sum=sum+7;
    56         }
    57         else if(sum>'9'+7)
    58         {
    59             printf("您输入的不是正确的2进制数!
    ");
    60             exit(0);
    61         }
    62         output[--pos]=sum;
    63 
    64     }
    65         
    66 }
    View Code




  • 相关阅读:
    【hihocoder】1237 : Farthest Point 微软2016校招在线笔试题
    POJ 1061青蛙的约会。求解(x+mT)%L=(y+nT)%L的最小步数T。
    Gym 100633G Nano alarm-clocks
    shell script 的追踪与 debug
    vim使用心得
    Linux修改vimrc配置文件,让vi更贴心
    shell script中的case……esac判断
    stl容器区别: vector list deque set map-底层实现
    const对象为什么可以在头文件中定义
    shell script中的syntax error near unexpected token `then' 问题
  • 原文地址:https://www.cnblogs.com/zhouyuqing1024/p/11855630.html
Copyright © 2011-2022 走看看