ACM比赛(进制转换)

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;
}
posted @ 2015-07-17 10:39  lee是美少女  阅读(1128)  评论(0编辑  收藏  举报