语法:conversion(char s[], char ans[], int d1, int d2);
参数:
s[]:转换前的数字
ans[]:转换后的数字
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)
}