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
01023
Sample Output
0x000000000x000003FF
程序分析:对于进制的转换这类问题的方法是除基取余,结果反过来写。但对于这个题目大家可以看到并有提示几次结束,所以我们可以用这样一条语句来实现结束:
while(cin>>n)或许是while(cin>>n!=EOF)这两条语句是等价的。此外值得注意的就是上一次结束完一定要记得清0,这条语句也可以写在第一个while语句后,这样就能够解决上次的结果会影响这次的结果了。 程序代码:
#include#include 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<