2017-09-13 67 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