任意進位制轉換
阿新 • • 發佈:2018-12-14
語法: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)
}