为什么这个程序不给出任何大于 3 的值的输出?
Why does not this program give an output for any values greater than 3?
我编写了这个程序来将十进制整数转换为二进制形式。然而,当我给出大于 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;
}
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;
}
关于您的代码的两件事:
while(q>1){
q= num/2;
- 你没有初始化 q 可能会或可能不会进入 while 循环。
如果 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);
我编写了这个程序来将十进制整数转换为二进制形式。然而,当我给出大于 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;
}
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;
}
关于您的代码的两件事:
while(q>1){
q= num/2;
- 你没有初始化 q 可能会或可能不会进入 while 循环。
如果 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);