到目前为止,您的代码产生了这个:
*
**
***
****
*****
******
*******
********
*********
**********
这看起来像一个很好的直角三角形,所以我认为你在正确的轨道上。要制作上面的图像,您需要添加一些空格,并确保每一行的长度相同。如果可以的话,我认为您要问的问题只需要一个循环就容易多了。试试这个:
#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;
}
}
此代码产生:
**** ****
*** ***
** **
* *
这似乎比您的示例多一些空格,但是您可以通过在循环之前添加一个变量以获得所需的最大空间长度来解决这个问题,然后每次通过循环将其递减两个。