为什么如果(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.这可以用简单的数学来完成:当你开始通过xa计数到z,你会打n如果(n-a)没有余数时,通过x分为:

bool see65 = (65-1) % 3 == 0; 

这假定数字az上的n的相对侧上。

由于您的条件控制一个参数,可以通过改写呼叫作为条件表达式:

StartProgram(see65 ? "mspaint" : "devenv"); 

此外,如果记得bool在C++是整体型,可以消除条件:

array<string,2> prog {"mspaint", "devenv"} 

...

StartProgram(prog[see65]);

以上是 为什么如果(a!= 65)没有执行? 的全部内容, 来源链接: utcz.com/qa/267164.html

回到顶部