1. 程式人生 > 其它 >X進位制轉成Y進位制

X進位制轉成Y進位制

程式思想:
1:由於X和Y是任意數,所以進位制轉換時必須以十進位制為橋樑來進行轉換,轉換時要注意輸入的sum裡面可能含有字母,因此以字串形式輸入。
2:純數字與數字字元之間的ASCII碼相差48,即’0’-0=48;字母字元與之對應的數字之間的ASCII碼之間的轉換’A’-10=65

//x進位制->十進位制->y進位制
//重難點:x>10或者y>10 
#include<stdio.h>
#include<string.h>
int main()
{
	int x , y , i , temp , sum = 0 , len = 0;
	char num[80]={0};
	char result[80]={0};
	printf("請輸入x,y,num:\n");
	scanf("%d %d %s",&x,&y,num);

	//x進位制轉化成十進位制為sum
	len = strlen(num);
	for(i = len - 1; i >= 0; i-- )
	{
		if(num[i] > 57)//9的ASCII碼是57
			temp = num[i] - 55;
		
		else
			temp = num[i] - 48;
			
			sum = sum * x + temp % x; 
	}
	
	printf("%d\n",sum);
	//十進位制sum轉y進位制 
	i = 0;
	while(sum)
	{
		if(sum % y >= 10)
			result[i++] = sum % y + 55;
		else
			result[i++] = sum % y + 48;	
		
		sum /= y;
	}
	result[i] = '\0';
	
	for(i = strlen(result)-1; i >= 0; i--)
		putchar(result[i]);
	

	return 0;
 } 

執行結果:
在這裡插入圖片描述