ブルーブリッジカップ基礎練習——10進数から16進数へ

15277 ワード

リソース制限時間制限:1.0 sメモリ制限:512.0 MB問題記述16進数は、プログラム設計時によく使用される整数の表現です.0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fの16シンボルで,それぞれ10進数の0から15を表す.16進数のカウント方法は満16進1であるため、10進数16は16進数で10であり、10進数の17は16進数で11であり、このように10進数の30は16進数で1 Eである.非負の整数を与え、16進数の形式で表す.入力フォーマット入力には、変換する数を表す非負の整数aが含まれます.0<=a<=21748483647出力フォーマットこの整数を出力する16進表記サンプル入力30サンプル出力1 E
まず、16進数を用いて10進数が各x*16のn次方の和に変換し、カウンタで最大の16のn次方を見つけることができ、配列、switch文を通じて、以下の解法を得たいと思います.
#include
#include

int main()
{
	int a;
	int t;
	int i,j;
	int temp;
	int cnt = 0,count = 0;
	int b[10] = {2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647},c[10]={0};
	scanf("%d",&a);
	
	t = a;

	while(t >15)
	{
		t/=16;
		cnt++;
	}
									
	for(i = 0;cnt>=0;i++)
	{
		b[i] = a/pow(16,cnt);
		a = a-(b[i] * pow(16,cnt));
		cnt--;
	}
	
	for(i = 0;i<10;i++)
	{
		if(b[i]!=2147483647)
		{
			c[count] = b[i];
			count++;
		}
	}
	
	for(j = 0;j<count;j++)
	{
		temp = c[j];

		switch(temp)
		{
			case 0:printf("0");break;
			case 1:printf("1");break;
			case 2:printf("2");break;
			case 3:printf("3");break;
			case 4:printf("4");break;
			case 5:printf("5");break;
			case 6:printf("6");break;
			case 7:printf("7");break;
			case 8:printf("8");break;
			case 9:printf("9");break;
			case 10:printf("A");break;
			case 11:printf("B");break;
			case 12:printf("C");break;
			case 13:printf("D");break;
			case 14:printf("E");break;
			case 15:printf("F");break;		
		}
	}

	return 0;
 } 

これからはもっと考えて、周到に考えなければなりません.
#include

int main()
{
	int a;
	scanf("%d",&a);
	printf("%X",a);
	return 0;
}