例3 运算符与类型
#include <stdio.h>
int main()
{
int a=0,
b=8,
k=1; //位权
long xa=0,
xb=0,
x1=0,x2=0;
printf("\n Input the number and weight a->b:");
scanf("%ld %d", &xa, &a, &b);
x1=xa;
while(x1!=0) //转换为十进制数
{
x2+=(x1%10)*k; //x2=[(x1%10)*k]+x2
x1/=10;
k*=a;
}
k=1;
x1=x2;
while(x1!=0) //转换为b进制数
{
xb+=(x1%b)*k;
x1/=b;
k*=10;
}
printf("\n %ld(%d)=%ld(%d)=%ld(%d)",xa,a,x2,10,xb,b);
return 0;
}
这个代码不够灵活,其中变量b是直接读取程序设定的值。
int b=8;
scanf(“%ld %d”, &xa, &a, &b);
稍加修改后的代码:
#include <stdio.h>
int main()
{
int a=0,
b=0,
k=1; //位权
long xa=0,
xb=0,
x1=0,x2=0;
printf("\n Input the number and weight a->b:");
scanf("%ld %d %d", &xa, &a, &b);
x1=xa;
while(x1!=0) //转换为十进制数
{
x2+=(x1%10)*k; //x2=[(x1%10)*k]+x2
x1/=10;
k*=a;
}
k=1;
x1=x2;
while(x1!=0) //转换为b进制数
{
xb+=(x1%b)*k;
x1/=b;
k*=10;
}
printf("\n %ld(%d)=%ld(%d)=%ld(%d)",xa,a,x2,10,xb,b);
return 0;
}
运行结果:
笔记: