[英]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;
如果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);
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.