1. 程式人生 > >10進位制轉n進位制與n進位制轉10進位制

10進位制轉n進位制與n進位制轉10進位制

10進位制轉n進位制

#include<stdio.h>   

int main()   
{  
    int n,m;
	int len=0;  
    char ans[1100]; 
    char num[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};  
   	scanf("%d%d",&n,&m);  
    while (n)   
    {  
        ans[len++]=num[n%m];  
        n=n/m;   
    }  
    for(int i=len-1;i>=0;i--)
	{
		printf("%c",ans[i]);
	} 
    return 0;
}  

n進位制轉10進位制

#include<stdio.h>
#include<string.h>
#include<math.h>
int n;
char m[1100];
int len;
void Ary();
void Ary_();
int main()
{
	scanf("%d",&n);
	scanf("%s",m);
	len=strlen(m);	
	if(n<10)
	{
		Ary();	
	}	
	else if(n>10&&n<17)
	{
		Ary_();
	}
	else
	{
		printf("%s",m);
	}
	return 0;	
}
void Ary()
{
	int i,j;
	float sum=0;        //pow得到為浮點型的數
	float mid;          //pow得到為浮點型的數
	for(i=len-1,j=0;i>=0;i--,j++)
	{
		mid=m[i]-'0';
		sum+=mid*pow(n,j);
	}
	printf("%.0f",sum);
}
void Ary_()
{
	int i,j;
	float sum=0;
	float mid=0;
	for(i=len-1,j=0;i>=0;i--,j++)
	{
		if(m[i]>='A'&&m[i]<='F')
		{
			mid=m[i]-'A'+10;
			sum+=mid*pow(n,j);
		}
		else
		{
			mid=m[i]-'0';
			sum+=mid*pow(n,j);
		}
	}
	printf("%.0f",sum);
}