-2

初始数字:即三个数字 - a、b 和 c。

任务:编写一个等于 TRUE 的逻辑表达式(将在屏幕上显示 1),然后且仅在以下情况下:

a) 所有变量 - a、b、c - 含义相同。
b)所有变量-a,b,c-含义都不相同(它们都是不同的)。
c) 三个变量中的两个含义相同。
d) 所有变量——a、b、c——都是偶数。
e) 三个变量的含义都是正数,但不大于 100。

这就是我编写 a) 任务的方式:

int main() 
{

    int n;
    unsigned int a, b, c;

    cout << "Write three numbers: " << endl;
    cout << "First: " << endl;
    cin >> a;
    cout << "Second: " << endl;
    cin >> b;
    cout << "Third: " << endl;
    cin >> c;

    {
    for (a=1, b=2, c=3; a,b,c>0; a++, b++, c++);
    }

    n=a||b||c;
    cout << n << endl;

    return 0;
}

它不起作用,我确信我犯了一些错误。

4

2 回答 2

4

这个循环有很多问题:

for (a=1, b=2, c=3; a,b,c>0; a++, b++, c++);

首先,请注意循环末尾有一个分号,这意味着循环无效。相当于

for (a=1, b=2, c=3; a,b,c>0; a++, b++, c++) {
     // Do nothing
}

接下来,您的条件是

a, b, c > 0

这并不意味着“a、b 和 c 大于 0”。相反,它使用逗号运算符,这意味着“评估所有这些表达式,但丢弃除最后一个之外的所有值”。因此它相当于

for (a=1, b=2, c=3; c > 0; a++, b++, c++) {
     // Do nothing
}

最后,请注意您在此循环中递增 c,这意味着循环将继续运行直到c溢出。

更奇怪的是,您正在从用户读取、 和的值a,然后立即在循环中覆盖它们。那是你的意图吗?bc

我不知道你打算在这里做什么,但这应该可以解释程序做什么,你可以从中了解为什么它没有做你想让它做的事情。

希望这可以帮助!

于 2013-10-30T20:28:54.120 回答
2

由于这看起来像是一项任务,我将提出一些建议。

正如templatetypedef已经指出的那样,您需要回过头来了解一下 C++ 语法。

但是,我不确定您是否已经向自己澄清了您想要做什么。你有一个循环的事实是一个提示。

我建议用伪代码写出你需要做的事情——只是简单的英语语句,显示一些逻辑和过程。

我将为 a) 部分执行此操作。像这样的东西:

Accept user input for three values
If all three values are the same
    Return true
Otherwise
    Return false

看看这个,是否有必要为 a) 部分设置一个循环?可能不是。

也许它是这样的?

if (a == b && b == c) // if all values are the same

希望这可以帮助。

于 2013-10-30T20:38:29.553 回答