2017-09-13 68 views
-5

在下面的程序中,我可以聲明while(temp = num)而不是聲明temp = num;首先 。我確實嘗試了程序執行沒有任何錯誤,但沒有打印值,我想知道爲什麼?while循環和給定範圍中的數字的迴文

#include<stdio.h> 

int main() 
{ 
    int num, r, sum, temp; 
    int min, max; 

    printf("Enter the minimum range: "); // take minimum value to start 
    scanf("%d", &min); 

    printf("Enter the maximum range: "); // max value to start`**enter code here**` 
    scanf("%d", &max); 

    printf("Palindrome numbers in given range are: "); 
    for (num = min; num <= max; num++) 
    { 
     temp = num; 
     sum = 0; 
     while (temp) 
     { 
      r = temp % 10; 
      temp = temp/10; 
      sum = sum * 10 + r; 
     } 
     if (num == sum) 
      printf("%d ", num); 
    } 
    return 0; 
} 
+2

調試........... –

+0

你壓痕所有的地方,修復第一。 –

+0

而且沒有C/C++,你在用什麼語言? –

回答

0

你的程序可能不打印,因爲你永遠不打印換行符\n這將刷新緩衝區到標準輸出,也不是你手動fflush()沖洗。我會在循環結束時嘗試沖洗,或者如果您確實需要換行,只需打印新行printf("\n");

關於在您的while-loop開頭設置temp = num,您可能想要使用另一個for-loop,如for (temp = num; temp; temp/=10)

全部放在一起,你的程序的尾部看起來可能是這樣:

for (num = min; num <= max; num++) 
{ 
    sum = 0; 
    for (temp = num; temp; temp/=10) 
    { 
     r = temp % 10; 
     sum = sum * 10 + r; 
    } 
    if (num == sum) 
     printf("%d ", num); 
} 
fflush(stdout); 
return 0; 
+0

解決了問題,謝謝。如果我在while()中添加temp = num,它終止了 – IronVergil

+0

@IronVergil你明白爲什麼'while(temp = num)'在你的情況下是一個無限循環嗎? – yano