一个能重复输入的 进制转化程序
本意是做成一个有两级输入的程序
第一层输入待转化的十进制数,第二层输入转化的进制数
第二层可以任意重复输入,并且可以返回第一层 重新输入待转化的十进制数
但是结果,在转化后的字符末尾多出“10”
求解答
C 进制转化 重复输入
#include<stdio.h>
void fun( int x ,int y);
int main(void)
{
int num;
int jinzhi;
puts("请输入一个十进制数:");
while(scanf("%ld",&num) == 1)
{
puts("请输入要转化的进制数:");
while(scanf("%ld",&jinzhi) == 1)
{
fun(num,jinzhi);
printf("%ld转化为%d进制为:",num,jinzhi);
puts("\n请输入要转化的进制数:(q 返回上一级)");
}
puts("\n请输入一个十进制数:(q to quit)");
while(getchar() != '\n')
continue;
}
/*puts("输入两个数:"); 用这段代码可行,说明肯定是上面的代码 出问题了
scanf("%d%d",&num,&jinzhi);
fun(num,jinzhi);*/
puts("Bye!~");
return 0;
}
void fun(int x,int y) //任意进制转换(一至十)
{
int r;
r = x%y;
if(x >= y)
{
x=x/y;
fun(x,y); //递归
}
putchar(r + '0');
}
VC6.0下测试了,没有问题
只是打印顺序有点问题,改了一下
while(scanf("%ld",&jinzhi) == 1)
{
printf("%ld转化为%d进制为:",num,jinzhi);//这行放到这里
fun(num,jinzhi);
puts("\n请输入要转化的进制数:(q 返回上一级)");
}