我编写了这个程序,将十进制整数转换为二进制形式。但是,当我输入大于3的输入时,程序就会挂起。我在做什么错误?
#include<stdio.h>
int main()
{
int num,q,r,bin=0,i=1;
printf("Enter a number:\t");
scanf("%d",&num);
while(q>1){
q= num/2;
r= num%2;
bin=(r*i)+bin;
i*= 10;
}
bin=(1*i)+bin;
printf("\nThe binary equivalent is: \t%d",bin);
return 0;
}
答案 0 :(得分:3)
关于您的代码的两件事:
while(q>1){
q= num/2;
如果num只是4,则q将始终计算为2并且永远不会结束并导致无限循环。因此,您应该检查num > 0
而不是q > 1
和num = num /2
。类似的东西:
while(num>0){
r = num%2;
num = num/2;
bin=(r*i)+bin;
i*= 10;
}
printf("\nThe binary equivalent is: \t%d",bin);
答案 1 :(得分:2)
int q;
未使用未初始化的变量初始化导致未定义的行为,如
while(q>1){
检查以下代码:
#include<stdio.h>
int main()
{
int num,r,q,i=0;
int a[20];
printf("Enter a number:\t");
scanf("%d",&num);
while(num>0){
r= num%2;
num= num/2;
a[i++] = r;
}
for(q=i-1;q>=0;q--)
printf("%d",a[q]);
return 0;
}