猿问

请问错在哪?好像无限循环了

#include "stdio.h"
main()
{
long int a[99999],b,i,c=0,e=1,j=0;
printf("输入十进制数:");
scanf("%ld",&b);
for(i=0;b!=0;i++)
{
a[i]=b%2;
b=b/2;
c++;
}
for(i=c;i!=0;i--)
{
while(i!=0)
{
a[i]=a[i]*e;
e*10;
}
}
for(i=0;i<c;i++)
{
j+=a[i];
}
printf("结果是%ld\n",j);
}

RISEBY
浏览 86回答 2
2回答

侃侃尔雅

你这段程序问题太多了。好好学习基础知识,理清编程思路再做开发。不要想到哪里就写到那里。1. 你没有让用户输入要转换成什么进制;2. 变量 e 是啥作用?3. a[i]*e 永远等于 a[i] 。4. e*10 是啥意思?5. 除非是转换为十进制,否则 e 不应该乘以10啊。6. 死循环在这里 while(i!=0) 里面没有对 i 进行减操作。7. 这是啥写法啊?for(i=c;i!=0;i--){while(i!=0)&nbsp;

慕森王

你的while循环里一直没有改变i,也就是说i将一直满足不等于0的循环条件,所以会陷入死循环。
随时随地看视频慕课网APP
我要回答