题目链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82974#problem/A
解题思路: 将16进制的表示方法列在一个数组里面,并对应好下标,再定义一个大小为8的字符数组,每使用之前要先赋"\0"清空,用来存放十六进制的数,然后再用辗转相除法将它化为十六进制数,输出的时候,先输出“0x“,再用循环控制需要输出的0的个数,然后再输出存入在字符数组里面的十六进制数(记住倒着输出),这样格式就与案例一样了
源程序代码:
#include#include #include 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]="\0";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< <