此程序必须从用户输入(数字)并重复,直到输入可被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循环的信息时遇到问题。内部循环首先由编译器测试?有人可以用一个简单的例子来解释吗?
答案 0 :(得分:1)
您的代码具有未定义的行为,因为您在分配while
值之前有x
依赖于x
。如果您要从用户输入值,则无法在读取之前测试该值。您的while
循环无法正确表达您想要执行的操作。
可以使用无限循环完成,只在必要时break
。
不,循环(当然)内部没有评估。它们按程序顺序进行评估。