C程序显示输入的最大值%2 == 0数字,直到输入数字%2!= 0&& %7 == 0

时间:2014-11-12 13:36:41

标签: c loops numbers nested

此程序必须从用户输入(数字)并重复,直到输入可被7分割的奇数。然后它必须打印输入的最大偶数。

尝试了两种方式:嵌套和双循环。我遇到的问题是,在我输入一个可分数为7但不是奇数(例如28)的数字之后,如果我输入一个奇数(比如说3),则程序打印最大值。它应该让我再次输入数字,直到我输入一个奇数并且可以分为7(让我们说是21)。

嵌套代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int x, max = 0, suma = 0, impar, par = 0;

    while (x % 7 != 0)
    { 
        while(x % 2 == 0 || x % 2 != 0)
        {
            printf("Introduceti un numar:\n");           //Enter a number
            scanf("%d", &x);
            if (x % 2 == 0)
                if (x > max)
                    max = x;
        }

        printf("Introduceti un numar:\n");            //Enter a number
        scanf("%d", &x);
        if (x % 2== 0)
            if (x > max)
                max = x;
        if (x % 2 != 0)
            break;
    }  
    printf("Maximul numerelor pare introduse este: %d",max);  
}

为什么我们这样做,我在查找有关C中嵌套while循环的信息时遇到问题。内部循环首先由编译器测试?有人可以用一个简单的例子来解释吗?

1 个答案:

答案 0 :(得分:1)

您的代码具有未定义的行为,因为您在分配while值之前有x依赖于x 。如果您要从用户输入值,则无法在读取之前测试该值。您的while循环无法正确表达您想要执行的操作。

可以使用无限循环完成,只在必要时break

不,循环(当然)内部没有评估。它们按程序顺序进行评估。