2016-09-30 157 views
-6

如何在for循环中只运行其中一个if语句?例如,我有5输入...我只是希望它再打印五......但每当我运行这段代码,如果statement..please帮我如果for循环中的语句

#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; 
} 
+0

你想实现什么?你正在输入a,但是在循环中再次初始化为0 – Pirate

+2

删除'for 'loop。 –

+1

你需要找到一个[良好的初学者书](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)并阅读条件表达式。在(不必要的)'for'循环中是不正确的。在阅读本书时,关于'switch'语句的红色和数组(你不需要一大串'if-else'或'switch'语句) –

回答

-1

你不必要它会执行所有for循环会丢弃输入值a并永久循环!(至少直到您溢出签名类型a)。

您正在使用它作为for循环中的计数器替代a!如果您只想要一个输出,则完全删除for循环。如果您for环是保持那么你的表达0 < a < 10应该被改写为0 < a && a < 10:正式0 < a < 10被评估为(0 < a) < 10这要么是true < 10false < 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*/ 
} 
+0

道歉@Downvoters,我确实有最初的错误结束 – Bathsheba

+0

如果一个问题要求我使用for循环并要求输出t: 对于每个整数(因此该范围内的所有数字): 如果1 <= n <= 9,则打印它的英文表示。 1是“一”,2是“二”,依此类推。 否则,如果n> 9并且它是偶数,则打印“偶数”。 否则,如果n> 9并且它是奇数,则打印“奇数”。 –

-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循环在这里并不重要。

+0

使用开关()不会解决他的问题。循环是这里真正的问题。 – Aleph0

1

问题似乎是for循环。程序接受a作为输入的值,但随后一旦在循环开始时,它复位a为0(for (a = 0;...

因此它的循环10次的值,并且在每个循环a将具有不同的值,从0开始到9结束。这意味着所有的if语句都会在执行过程中的某个点被击中,每个循环上通常会有一个循环遍布for。 5 ...我只想要它打印五个“,只需从您的代码中删除for循环。

+0

不错的答案,但不要忘记提及一些关于0 Bathsheba

+0

@Bathsheba好点我没有注意到这一点。但是,如果OP删除循环,反正无关紧要。我想你已经编辑了你的答案,因为我贴了我的...所以你现在可能更好:-) – ADyson