C++ for循环中的If语句

C++ for循环中的If语句,c++,if-statement,for-loop,C++,If Statement,For Loop,如何在for循环中只运行其中一个if语句?例如,我有一个5…的输入,我只希望它打印5…但每当我运行这段代码时,它都会执行all if语句..请帮助我 #include <iostream> #include <cstdio> using namespace std; int main() { // Complete the code. int a; int b; cin >> a; for (a = 0; 0<

如何在for循环中只运行其中一个if语句?例如,我有一个5…的输入,我只希望它打印5…但每当我运行这段代码时,它都会执行all if语句..请帮助我

#include <iostream>
#include <cstdio>
using namespace std;

int main() {
    // Complete the code.
    int a;
    int b;

    cin >> a;

    for (a = 0; 0<a<10; a++)
        {
            if (a == 1)
                {
                    cout << "one";
            }
        if (a == 2)
                {
                    cout << "two";
            }
        if (a == 3)
                {
                    cout << "three";
            }
        if (a == 4)
                {
                    cout << "four";
            }
        if (a == 5)
                {
                    cout << "five";
            }
         if (a == 6)
                {
                    cout << "six";
            }
        if (a == 7)
                {
                    cout << "seven";
            }
         if (a == 8)
                {
                    cout << "eight";
            }
        if (a == 9)
                {
                    cout << "nine";
            }

        else if (a > 9 && a%2 == 0)
            {
                cout << "even";
        }
        else if (a > 9 && a&2 != 0)
            {
                cout << "odd";
        }
    }
    return 0;
}
#包括
#包括
使用名称空间std;
int main(){
//完成代码。
INTA;
int b;
cin>>a;

for(a=0;0您不必要的
for
循环会破坏
a
的输入值,并永远循环!
(至少直到您的签名类型
a
溢出为止)

您正在将
a
替换为
for
循环中的计数器!如果您只需要一个输出,请完全删除
for
循环。如果要保留
for
循环,则应将表达式
0
重新编译为
0
:正式地
0
>被评估为
(0
,该值为
true<10
false<10
,该值始终为
true

还考虑重构您的<代码>如果是“< /COD>”,设置明确的互斥语句:

if (a == 1){
    cout << "one";
} else if (a == 2){
    cout << "two";    
/*and so on*/
} else {
    /*all other cases*/
}
虽然,

switch() {
}
在你的情况下会更有效率

更新1

@Aleph0

下面是解决方案

int main() {
    int a;
    cin >> a;

    switch (a) {
    case 1: cout << "one"; break;
    case 2: cout << "two"; break;
    case 3: cout << "three"; break;
    case 4: cout << "four"; break;
    case 5: cout << "five"; break;
    case 6: cout << "six"; break;
    case 7: cout << "seven"; break;
    case 8: cout << "eight"; break;
    case 9: cout << "nine"; break;
    default: cout << ((a & (1 << 31)) ? "negative" : (a & 1) ? "odd" : "even"); break;
    }
}
intmain(){
INTA;
cin>>a;
开关(a){

案例1:cout问题似乎是
for
循环。您的程序接受
a
的值作为输入,但一旦循环开始,它就会将
a
的值重置为0(
for(a=0;…

因此,它循环10次,在每个循环上,
a
将有一个不同的值,从0开始到9结束。这意味着所有
if
语句将在执行过程中的某个点被命中,通常在
for
的每个循环上都有一个


要获得您预期的行为“输入5…我只希望它打印5”,只需从代码中删除
for
循环。

您想要实现什么?您在a中获取输入,但在循环中再次将a初始化为0。删除
for
循环。您需要找到a并读取条件表达式。在(不必要)
for
循环不正确。阅读本书时,瑞德谈到了
switch
语句和数组(你不需要一大串
if-else
switch
语句).
0抱歉@downvorters,我一开始的时候的确是搞错了。如果一个问题让我使用for循环并要求我输出:对于每个整数(所以该范围内的所有数字):如果,19,并且它是奇数,那么打印“奇数”怎么办。答案不错,但别忘了提及关于0switch() {
}
int main() {
    int a;
    cin >> a;

    switch (a) {
    case 1: cout << "one"; break;
    case 2: cout << "two"; break;
    case 3: cout << "three"; break;
    case 4: cout << "four"; break;
    case 5: cout << "five"; break;
    case 6: cout << "six"; break;
    case 7: cout << "seven"; break;
    case 8: cout << "eight"; break;
    case 9: cout << "nine"; break;
    default: cout << ((a & (1 << 31)) ? "negative" : (a & 1) ? "odd" : "even"); break;
    }
}