簡體   English   中英

為什么該程序不輸出大於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;
}

有關您的代碼的兩件事:

while(q>1){
     q= num/2;
  1. 您沒有初始化q,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); 
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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM