问题标题:
将十进制正整数用除n取余法转换为n进制数输出.这个哪里错了啊,一运行就程序崩溃#includevoidmain(){inti,j,r,a,n,b[32];charh[33];printf("请输入一个十进制数n");scanf("%d",&a);printf("请输入要将十进制数
问题描述:
将十进制正整数用除n取余法转换为n进制数输出.这个哪里错了啊,一运行就程序崩溃
#include
voidmain()
{
inti,j,r,a,n,b[32];
charh[33];
printf("请输入一个十进制数n");
scanf("%d",&a);
printf("请输入要将十进制数转换成n进制数的nn");
scanf("%d",&n);
switch(n)
{
case2:while(a>0)
{r=a%2;
b[i]=r;
a=a/2;
i++;
}
for(j=i;j>=0;j--)printf("%d",b[i]);break;
case8:while(a>0)
{r=a%8;
b[i]=r;
a=a/8;
i++;
}
for(j=i;j>=0;j--)printf("%d",b[i]);break;
case16:while(a>0)
{r=a%16;
if(r=0;j--)printf("%c",h[i]);break;
default:printf("n输入有误n");
}
printf("以上为转换结果n");
}
case2:和case8:可以合并的吧,函数调用不太会,还是崩溃中啊
陈马连回答:
i是局部变量,程序不会对它初始化,所以你不能假定i初始值为0,应该在程序开头加上i=0语句.
高雪强回答:
额,改了后,不崩溃了,但是出现乱码了,逻辑有错,求帮助啊
陈马连回答:
for(j=i;j>=0;j--)printf("%d",b[i]);改为for(j=i-1;j>=0;j--)printf("%d",b[i]);
高雪强回答:
是i吧,i-1改了以后还是一堆乱七八糟的数字
陈马连回答:
哦,你printf("%d",b[i]);不对,要改为printf("%d",b[j]);
点击显示
其它推荐
热门其它推荐