十進制轉換成任意進制 c語言

今天搞懂了怎麼把十進制轉換成任意進制,我試了好幾次有時邏輯上沒有錯誤,但是我由於c語言基礎不是太好,所以老是出現一些基礎錯誤。以此來記錄一下我要寫的代碼,以後繼續銘記。
十進制轉換任意進制,遞歸實現

void fun(int n,int m)
{
	if(n<m)
	{
		if(n<10)
			printf("%d",n);
		else
			printf("%c",n-10+'A');
	}
	else
	{
		fun(n/m,m);
		if(n%m<10)
			printf("%d",n%m);
		else
			printf("%c",n%m-10+'A');
	}
}

十進制轉換任意進制,非遞歸實現

const char f[]="0123456789ABCDEF";
void fun1(int n,int m)
{
	int i=0;
	char a[1000];
	while(n)
	{
		a[i]=f[n%m];
		n=n/m;
		i++;
	}
	while(i--)
		printf("%c",a[i]);
}

總代碼

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

const char f[]="0123456789ABCDEF";
void fun1(int n,int m)
{
	int i=0;
	char a[1000];
	while(n)
	{
		a[i]=f[n%m];
		n=n/m;
		i++;
	}
	while(i--)
		printf("%c",a[i]);
}

void fun(int n,int m)
{
	if(n<m)
	{
		if(n<10)
			printf("%d",n);
		else
			printf("%c",n-10+'A');
	}
	else
	{
		fun(n/m,m);
		if(n%m<10)
			printf("%d",n%m);
		else
			printf("%c",n%m-10+'A');
	}
}

int main()
{
	int b,c;
	scanf("%d %d",&b,&c);
	fun(b,c);
	printf("\n");
	fun1(b,c);
	system("pause");
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章