为什么如果(a!= 65)没有执行?
#include <iostream> #include <Windows.h>
using namespace std;
void noret()
{
for (int i = 1; i < 11; i++)
{
cout << "Line number : " << i << endl;
}
system("pause");
}
void StartProgram(string filename)
{
ShellExecute(NULL, "open", filename.c_str(), NULL, NULL, SW_SHOWNORMAL);
}
int main()
{
for (int a = 1; a < 100; a += 3)
{
cout << "The number is: " << a << endl;
if (a == 65)
{
StartProgram("mspaint");
}
else if (a != 65);
{
StartProgram("devenv");
}
}
system("pause");
return 0;
}
这是我编写的代码(我对编程还是新的)。请忽略void noret()
部分。代码是完全可行的,但在else if (a != 65)
的部分,我想让它打开该程序只有当它不等于65.为什么如果(a!= 65)没有执行?
程序计数从1到100。 a = a + 3其中“a”等于1.虽然它计为100,但如果“a”永远不等于65,它将打开“devenv”。但是我这样做的结果是,“devenv”的数量可能不等于65.我怎么能这样做,以便它一旦开始计数,它就会开放一次......它是否会使任何意义?
回答:
此代码是错误的许多方面:
if (a == 65) {
StartProgram("mspaint");
}
else if (a != 65);
{
StartProgram("devenv");
}
首先分号if
使得空操作,并终止您的else
,这样的代码来写曲的方式后:
if (a == 65) {
StartProgram("mspaint");
}
StartProgram("devenv");
只是删除第二if
完全:
if (a == 65) {
StartProgram("mspaint");
}
else
{
StartProgram("devenv");
}
,要解决你的代码,来解决你的程序的逻辑只是用标志:
int main() {
bool found = false;
for (int a = 1; a < 100; a += 3)
{
if (a == 65) found = true;
}
if(found)
StartProgram("devenv");
else
StartProgram("mspaint");
}
回答:
如果你想知道,如果回路中的所有数字都没有65,你要记住,你是否已经看到65,当您去通过循环:
auto found65 = false; for (int a = 1; a < 100; a += 3)
{
cout << "The number is: " << a << endl;
found65 = found65 || (a == 65);
}
if (found65)
{
StartProgram("mspaint");
}
else
{
StartProgram("devenv");
}
回答:
我假设你已经想通了与问题你的语法,所以我将专注于算法的高级问题。
你并不需要一个循环,以确定是否由3计数将打印65.这可以用简单的数学来完成:当你开始通过x
从a
计数到z
,你会打n
如果(n-a)
没有余数时,通过x
分为:
bool see65 = (65-1) % 3 == 0;
这假定数字a
和z
上的n
的相对侧上。
由于您的条件控制一个参数,可以通过改写呼叫作为条件表达式:
StartProgram(see65 ? "mspaint" : "devenv");
此外,如果记得bool
在C++是整体型,可以消除条件:
array<string,2> prog {"mspaint", "devenv"} ...
StartProgram(prog[see65]);
以上是 为什么如果(a!= 65)没有执行? 的全部内容, 来源链接: utcz.com/qa/267164.html