初始数字:这是三个 - 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;
}
它不起作用,我确信我犯了一些错误。
答案 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
溢出。
更奇怪的是,您正在从用户那里读取a
,b
和c
的值,但之后会立即覆盖它们。那是你的意图吗?
我不知道你打算在这里做什么,但这应该可以解释 这个程序的作用,你可以从中了解它为什么< 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
希望这有帮助。