为什么这个程序不给出任何大于 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;
  1. 你没有初始化 q 可能会或可能不会进入 while 循环。
  2. 如果 num 仅为 4,则 q 的计算结果将始终为 2 并且永远不会结束并会导致无限循环。所以你应该检查 num > 0 而不是 q > 1num = 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);