for for循环中的语句

时间:2016-09-30 08:59:59

标签: c++ if-statement for-loop

如何在for循环中只运行其中一个if语句?例如,我有一个输入5 ...我只想要它打印五...但每当我运行这个代码,它将执行所有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;
}

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:-1)

您不必要的for循环会破坏a的输入值并永远循环!(至少在您的签名类型a溢出之前)。

您正在将a替换为for循环中的计数器!如果您只想要一个输出,请完全删除for循环。如果要保留for循环,那么您的表达式0 < a < 10应该重新设置为0 < a && a < 10:正式0 < a < 10将被评估为(0 < a) < 10 true < 10 }或false < 10 总是 true

另外,请考虑重构if else以明确设置互斥语句:

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

虽然在这种情况下您可能想要考虑switch块:

switch (a){
case 1:
    cout << "one";
    break; // to stop program control flowing into the next case
case 2:
    cout << "two";
    break;   
/*and so on*/ 
default:
    /*all other cases*/
}

答案 2 :(得分:-1)

if () {
} else if () {
}

虽然

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;
    }
}

已被要求提出以下问题

  

我有5个输入...我只想要打印五个

而且,有人在上面已正确提到,for循环在这里并不重要。