程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> CSU 1160(進制問題),csu1160進制問題

CSU 1160(進制問題),csu1160進制問題

編輯:C++入門知識

CSU 1160(進制問題),csu1160進制問題


                             CSU 1160

  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


此題很巧妙,有多種解法,下面是我在比賽時所寫:

#include<stdio.h>
int main()
{
    int a,b,i;
	char hex[8];
 while(scanf("%d",&a)!=EOF)
 {
	 for(i=0;i<8;i++)
		 hex[i]='0';
	 i=0;
	 while(a>=16)
	 {
	   b=a%16;
	   if(b<10)
		   hex[i]=b+'0';
	   else
		   hex[i]=b-10+'A';
	   a/=16;
	   i++;
	 }
if(a<10)
hex[i]=a+'0';
else
hex[i]=a-10+'A';
printf("0x");
for(i=7;i>=0;i--)
printf("%c",hex[i]);
printf("\n");
 }
	return 0;
}


但是其實還有更簡單的格式輸出

#include<stdio.h>
int main()
{
   int x;
  while(scanf("%d",&x)!=EOF)
{
  printf("0x%.8X\n",x);
}
  return 0;
}

看完之後是不是想吐血,哈哈。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved