我想知道如何使用循环在C ++中制作星号直角三角形(S)

时间:2013-12-01 15:13:15

标签: c++ visual-studio-2010 for-loop text-based

我想要这样的事情:

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

我试过了:

void roadBound() {

    for( int i = 1; i <= 10; i++ ){
        for( int j = 0; j < i; j++ ){
           cout << "*" ;
        }
        cout << endl;
    }
}

但它甚至没有接近。请帮忙

5 个答案:

答案 0 :(得分:1)

到目前为止,您的代码产生了这个:

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

这看起来像一个非常好的直角三角形,所以我认为你是在正确的轨道上。要制作上面的图像,你需要抛出一些空格,并确保每一行都是相同的长度。如果没关系,我想你只需要一个循环就可以轻松实现。试试这个:

#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::string;

int main() {
int height = 4;
int line = height * 4;
for( int i = height; i > 0; --i ){
        string stars (i, '*');
        int space = line - (i * 2);
        string spaces (space, ' ');
        cout << stars << spaces << stars << endl;
    }
}

此代码生成:

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

它似乎比你的例子有更多的空格,但你可以通过在循环之前添加一个变量来确定你想要的最大空间长度,然后每次通过循环将它减少两个。

答案 1 :(得分:0)

这在另一个循环中使用了3个循环

const int ROW = 4;
const int GAP = 7;

for (int i=ROW, g=GAP; i>=0; i--, g+=2)
{
    for (int j=0; j<i; j++) cout << '*';
    for (int j=0; j<g; j++) cout << ' ';
    for (int j=0; j<i; j++) cout << '*';
    cout << '\n';
}

输出

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

Live code

答案 2 :(得分:0)

你可以试试这个

int lf=4,md=4, N=4;
for( int i = 1; i<=N; i++ )
{
   for( int j =1; j<=lf; j++ )
      cout<<"*";
    for( int j =1; j<=md; j++ )
      cout<<" ";
    for( int j =1; j<=lf; j++ )
      cout<<"*";
    cout<<"\n";
       lf--;
      md+=2;
}

答案 3 :(得分:0)

void roadBound(int n) {
    const int gap = 6;
    string str = string(n, '*') + string(gap, ' ') + string(n, '*');
    int f=n,b=n+gap-1;
    while(n--){
        str[f--]=str[b++]=' ';
        cout << str << endl;
    }
}

答案 4 :(得分:-1)

第一个三角形

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

这将是上述三角形的代码:

for (int i = 5; i > 0; i--){
   for (int j = 5; j > 0 ; j--){
      if (i < j){
         cout << ' ' ;;
      }
      else {
         cout << '*';
      }
   }
   cout << endl;
}

第二个三角形

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

这将是另一个三角形的代码:

for (int i = 5; i > 0; i--){
   for (int j = 0; j < i ; j++){
      cout << '*';  
   }
   cout << endl;
}

在另一个循环中不需要三个循环。你可以只用两个循环来完成这两个循环。其中一个只需要一个条件来确定是否放置星号或空格。