实现功能:由用户输入一个数,并选择该数应该转换成几进制数,将结果输出。如果
用户输入过程中出现错误,程序会提示出错。
分为两种:一种是输入十进制数,然后把它转化为成其他进制,除N取余,一直除到商
为0为止。
另一种是输入其他进制的数,按位数展开,得到十进制。*/
用户输入过程中出现错误,程序会提示出错。
分为两种:一种是输入十进制数,然后把它转化为成其他进制,除N取余,一直除到商
为0为止。
另一种是输入其他进制的数,按位数展开,得到十进制。*/
//十进制转化为其他进制的函数
ten_to_others()
{
int j,a,n;//n为这个数的值,a为要转化的进制
int num[80];
int i=0;
printf("请输入要转换的数\n");
scanf("%d",&n);
printf("请输入要转换的进制数\n");
scanf("%d",&a);
while(n != 0)//辗转相除法
{
num[i]=n%a; //这里编译出现问题
n = n/a;
i++;
if(i>=80)
{
printf("超出输入范围\n");
}
}
for(j=i; j>=0; j--)
{
printf("%d",num[j]);
}
}
上面这个函数代码截图编译出现问题,问题在于最后一次i++,在数组num[i]里没有写入任何数据,而后面却让他进行输出。应该为:
ten_to_others()
{
int j,a,n;//n为这个数的值,a为要转化的进制
int num[80];
int i=0;
printf("请输入要转换的数\n");
scanf("%d",&n);
printf("请输入要转换的进制数\n");
scanf("%d",&a);
while(n != 0)//辗转相除法
{
i++;
num[i]=n%a;
n = n/a;
if(i>=80)
{
printf("超出输入范围\n");
}
}
for(j=i; j>0; j--)
{
printf("%d",num[j]);
}
}
功能实现的总代码:
ten_to_others()
{
int j,a,n;//n为这个数的值,a为要转化的进制
int num[80];
int i=0;
printf("请输入要转换的数\n");
scanf("%d",&n);
printf("请输入要转换的进制数\n");
scanf("%d",&a);
while(n != 0)//辗转相除法
{
i++;
num[i]=n%a;
n = n/a;
if(i>=80)
{
printf("超出输入范围\n");
}
}
for(j=i; j>0; j--)
{
printf("%d",num[j]);
}
}
//其他进制的数转化为十进制
others_to_ten()
{
int n,a,j,c;
int i=0;
int sum=0;
int num[80];
printf("请输入要转换的数\n");
scanf("%d",&n);
printf("请输入这个数的进制\n");
scanf("%d",&a);
while(n != 0)//分别取出每个位上的数
{
i++;
num[i]=n%10;
n /= 10;
}
for(j=i; j>0; j--)
{
c =pow(a,j-1)*num[j];
sum = sum+c;
}
printf("%d",sum);
}
void main()
{
int choice;
printf("请输入你的选择\n1.十进制转化为其他进制的函数\n2.其他进制的函数转化为十进制\n");
scanf("%d",&choice);
switch(choice)
{
case 1://十进制转化为其他进制的函数
ten_to_others();
break;
case 2:其他进制的数转化为十进制
others_to_ten();
break;
case 0://退出
exit(0);
}
}