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

题目链接:    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82974#problem/A

解题思路:  将16进制的表示方法列在一个数组里面,并对应好下标,再定义一个大小为8的字符数组,每使用之前要先赋""清空,用来存放十六进制的数,然后再用辗转相除法将它化为十六进制数,输出的时候,先输出“0x“,再用循环控制需要输出的0的个数,然后再输出存入在字符数组里面的十六进制数(记住倒着输出),这样格式就与案例一样了

源程序代码:

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
long n;

char a[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int main()
{

while(scanf("%d",&n)==1&&n!=EOF)
{   int i=0; char b[8]="";
if(n>0)
    {
        while(n>0)
    {

       b[i++]=a[n%16];
        n=n/16;

    }
    printf("0x");
if(strlen(b)!=8)
   for( i=0;i<8-strlen(b);i++)
    printf("0");
   for(i=strlen(b)-1;i>0;i--)
    printf("%c",b[i]);
   cout<<b[0]<<endl;
}
else
{
      printf("0x");
      for(i=0;i<7;i++)
        printf("0");
      printf("0
");
}
}
    return 0;
}
版权声明:此代码归属博主, 请务侵权!
原文地址:https://www.cnblogs.com/www-cnxcy-com/p/4652458.html