1. 程式人生 > >任意進位制轉換

任意進位制轉換

語法:conversion(char s[], char ans[], int d1, int d2);

引數:

s[]:轉換前的數字

s2[]:轉換後的數字

d1:原進位制數

d2:需要轉換到的進位制數

返回值:null

注意:

  • 高於9的位數用大寫’A’~’Z’表示,2~16位進位制通過驗證

源程式:

void conversion(char s[], char ans[], int d1, int d2)
{
	int sum=0;
	int t;
	for(int i=0; s[i]!='\0'; i++) //轉化為10進位制
	{
		if
(s[i]<='9'&& s[i]>='0') t = s[i]-'0'; else t = s[i]-'A'+10; sum = sum*d1+t; } int i=0; while(sum!=0) { t = sum%d2; if(t<=9) ans[i] = t+'0'; else ans[i] = t-10+'A'; sum = sum/d2; i++; } int tmp; i--; for(int j=0; j<=i/2; j++) { tmp=ans[j]; ans[j]=ans[
i-j]; ans[i-j]=tmp; } ans[i+1]='\0'; }
7. 最大公約數、最小公倍數

語法:resulet=hcf(int a,int b)result=lcd(int a,int b)

引數:

​ a:int a,求最大公約數或最小公倍數

​ b:int b,求最大公約數或最小公倍數

返回值:返回最大公約數(hcf)或最小公倍數(lcd)

注意:

  • lcd 需要連同 hcf 使用

啟示:

  • a,b的最大公約數就是 loop: r=a%b; -> a=b; -> b=r; -> goto loop; 直到r=0時輸出b

源程式:

int hcf(int a, int b)
{
	int r = 0;
	while(b!=0)
	{
		r = a%b;
		a = b;
		b = r;
	}
	return a;
}

int lcd(int u, int v, int h)
{
	return (u*v/h)
}