而在给定范围内的数字的循环和回文

时间:2017-09-13 15:26:50

标签: c

在下面的程序中我可以声明while(temp = num)而不是声明temp = num;首先 。我确实尝试过程序执行没有任何错误,但没有打印值,我想知道为什么?

#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;
}

1 个答案:

答案 0 :(得分:0)

您的程序可能无法打印,因为您没有打印将换行符刷新到stdout的换行符\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;