写出等于TRUE的逻辑表达式

时间:2013-10-30 20:24:42

标签: c++ logic

初始数字:这是三个 - 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;
}

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

2 个答案:

答案 0 :(得分: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溢出。

更奇怪的是,您正在从用户那里读取abc的值,但之后会立即覆盖它们。那是你的意图吗?

我不知道你打算在这里做什么,但这应该可以解释 这个程序的作用,你可以从中了解它为什么< strong> 不是 做你想做的事。

希望这有帮助!

答案 1 :(得分: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

希望这有帮助。