zoukankan      html  css  js  c++  java
  • CSU 1160(进制问题)

                                 CSU 1160

     
    Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu
     

    Description

     把十进制整数转换为十六进制,格式为0x开头,10~15由大写字母A~F表示。

    Input

     每行一个整数x,0<= x <= 2^31。

    Output

     每行输出对应的八位十六进制整数,包括前导0。

    Sample Input

    0
    1023

    Sample Output

    0x00000000
    0x000003FF


    此题很巧妙,有多种解法,下面是我在比赛时所写:

    #include<stdio.h>
    int main()
    {
        int a,b,i;
    	char hex[8];
     while(scanf("%d",&a)!=EOF)
     {
    	 for(i=0;i<8;i++)
    		 hex[i]='0';
    	 i=0;
    	 while(a>=16)
    	 {
    	   b=a%16;
    	   if(b<10)
    		   hex[i]=b+'0';
    	   else
    		   hex[i]=b-10+'A';
    	   a/=16;
    	   i++;
    	 }
    if(a<10)
    hex[i]=a+'0';
    else
    hex[i]=a-10+'A';
    printf("0x");
    for(i=7;i>=0;i--)
    printf("%c",hex[i]);
    printf("
    ");
     }
    	return 0;
    }


    但是其实还有更简单的格式输出

    #include<stdio.h>
    int main()
    {
       int x;
      while(scanf("%d",&x)!=EOF)
    {
      printf("0x%.8X ",x);
    }
      return 0;
    }

    看完之后是不是想吐血,哈哈。
  • 相关阅读:
    BZOJ 3529 数表
    BZOJ 3832 Rally
    BZOJ 1086 王室联邦
    BZOJ 2738 矩阵乘法
    2656565
    小L的区间求和
    小L的直线
    Co-prime 杭电4135
    POJ 跳蚤
    B
  • 原文地址:https://www.cnblogs.com/hfc-xx/p/4655697.html
Copyright © 2011-2022 走看看