C ++嵌套循环形状

时间:2013-12-23 06:09:30

标签: c++ for-loop nested-loops

我一直在使用嵌套循环创建自己的C ++程序来创建某种形状。我最近的项目是创建一个看起来像这样的形状

*
**
***
****
*****
   *****
    ****
     ***
      **
       *

但是我写了一个程序,给我一个结果

*
**
***
****
*****
*****
****
***
**
*

这里也是我的代码

#include <iostream>
using namespace std;

void main(){
//displays a top triangle going from 1 - 5(*)
for (int i = 0; i <= 5; i++){
    for (int j = 0; j <= i; j++){
        cout << "*";

    }

    cout << endl;
}
//displays a bottom to top triangle 5 - 1(*)
for (int k = 0; k <= 5; k++){
    for (int l = 5; l >= k; l--){
        cout  << "*";
    }

    cout << endl;
}
system("pause");
}

这将有所帮助,谢谢:)

4 个答案:

答案 0 :(得分:1)

在第二个嵌套循环中,不打印空格。

有一个三个空格的字符串,然后在每次运行内部循环后,将另一个空格附加到它并打印出来:

spc = "   ";
for (int k = 0; k <= 5; k++){
    cout << spc;
    for (int l = 5; l >= k; l--){
        cout  << "*";
    }
    spc += " ";
    cout << endl;
}

答案 1 :(得分:1)

在你的第二个循环中,你想要:

std::string spc = "   "; // add #include <string> at the top of the file
for (int k = 0; k <= 5; k++) {
    cout << spc;
    for (int l = 5; l >= k; l--){
        cout << "*";
    }
    spc += " ";
    cout << endl;
}

答案 2 :(得分:1)

您可以尝试:http://ideone.com/hdxPQ7

#include <iostream>

using namespace std;

int main()
{
    int i, j, k;
    for (i=0; i<5; i++){
        for (j=0; j<i+1; j++){
            cout << "*";
        }
        cout << endl;
    }
    for (i=0; i<5; i++){
        for (j=0; j<i+1; j++){
            cout << " ";
        }
        for (k=5; k>i+1; k--){
            cout << "*";
        }
        cout << endl;
    }
    return 0;
}

这是它的输出:

*
**
***
****
*****
 ****
  ***
   **
    *

答案 3 :(得分:0)

希望这有帮助(需要优化)。

 void printChars(int astrks, int spcs, bool bAstrkFirst)
 {
    if(bAstrkFirst)
    {
        for(int j = 0; j<astrks;j++)
        {
            std::cout<<"*";
        }
        for(int k = 0; k<spcs;k++)
        {
            std::cout<<" ";
        }
    }
    else
    {

        for(int k = 0; k<spcs;k++)
        {
            std::cout<<" ";
        }
        for(int j = 0; j<astrks;j++)
        {
            std::cout<<"*";
        }
    }
    std::cout<<std::endl;
}

int main()
{
    int astrk = 1, spc = 7;
    for(int x = 0; x<5; x++)
    {
        printChars(astrk++, spc--, true);
    }
    for(int x = 0; x<5; x++)
    {
        printChars(--astrk, ++spc, false);
    }
    getchar();
    return 0;
}

输出:

*
**
***
****
*****
   *****
    ****
     ***
      **
       *