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
程序分析:对于进制的转换这类问题的方法是除基取余,结果反过来写。但对于这个题目大家可以看到并有提示几次结束,所以我们可以用这样一条语句来实现结束:
while(cin>>n)或许是while(cin>>n!=EOF)这两条语句是等价的。此外值得注意的就是上一次结束完一定要记得清0,这条语句也可以写在第一个while语句后,这样就能够解决上次的结果会影响这次的结果了。
程序代码:
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{char a[11]={"0000000000"}; int n,i=0,k=0,T; char j='0';
while(cin>>n)
{
while(n)
{
i=n%16;
if(i>9)
j=i-10+'A';
else j=i+'0';
k++;
a[k]=j; n=n/16;
} cout<<"0x";
for(i=8;i>0;i--)
cout<<a[i];
cout<<endl;
for(int l=0;l<11;l++)
a[l]='0';
k=0;
}
return 0;
}