2016-11-18 52 views
-5

新的C++在我的研究中有一项任务。C++逐列输出

的代码:

#include <iostream> 
#include <iomanip> 

using namespace std; 

int main() 

    { 
     for (int i = 1, j = 1; i <= 9; i++, j++) { 

      cout << setw(5) << right << i; 
      if(j==3) { 
       j=0; 
       cout << "\n"; 
      } 
     } 
     return 0; 
    } 

产生这样的输出:

1 2 3 
4 5 6 
7 8 9 

然而,我需要这样的输出:

1 4 7 
2 5 8 
3 6 9 

不允许使用阵列。我认为这很简单(为循环尝试了额外的等),但无法弄清楚。任何帮助将不胜感激。

+0

你到目前为止尝试了什么? –

+1

这是否需要成为一个通用的解决方案?因此,如果您需要将数字“1”打印到“10”或“11”,那么这些数字会是什么样子? – Obicere

+0

提示:使用一些数学。第一列和第二列之间的关系是什么?第二和第三列之间的关系是什么?师是否有帮助?剩下的呢? –

回答

1

的解决方案如下非常简单:

#include <iostream> 

int main() { 

    for (int i = 1; i <= 3; i++) { 
     std::cout << i << "\t" << (i + 3) << "\t" << (i + 6) << "\n"; 
    } 

    return 0; 
} 

我建议你应该考虑在基础数学逻辑来解决这些类型的问题。

上面的代码将产生以下输出:

1 4 7 
2 5 8 
3 6 9 

在这里,如果你看到的每一行中,可以看到,每个值由3

  • i = 1,第一值递增是我自己。
  • 第二个值是i+3。第二个值是i+6