将n进制数转换为m进制,但程序不正确。。

2025-05-23 07:23:34
推荐回答(1个)
回答(1):

好了,改好了!

/*将n进制数转换为m进制数(2<=n,m<=10)*/
#include
#include
void main()
{
int a,b,t=0,i=0,s[16],n,m,k,a1;
i=0;

start:
printf("输入进制n:");
scanf("%d",&n);
if(n<2||n>10)
{
printf("you input a wrong number");
goto start;
}
printf("\n输入一个%d进制数:",n);
scanf("%d",&a);
a1=a;
printf("\n输入转换后的进制m:");
scanf("%d",&m);
if(m<2||m>10)
{
printf("you input a wrong number");
goto start;
}
do /*将n进制数a转换为10进制数t*/
{
b=a%10;
a=a/10;
k=(int)pow(n,i);
t=t+b*k;
i++;
}
while(a!=0);

i=0; /*将10进制数t转换为m进制数(赋值给数组s)*/
do
{
b=t%m;
t=t/m;
s[i]=b;
i++;
}
while(t!=0);

printf("\n%d进制:%d -> %d进制:",n,a1,m);
for(i=i-1;i>=0;i--) /*输出m进制数(数组s)*/
printf("%d",s[i]);
printf("\n\n");

}