c++用for循环输出用符号*组成的三角形
1,正立三角形,即尖角朝上
以四行为例
观察得知,
第一行有3个空格外加1个符号*
第二行有2个空格外加3个符号*
第三行有1个空格外加5个符号*
第四行有0个空格外加7个符号*
为了描述方便,把他们前面的空格各加一个
即:
第一行有4个空格外加1个符号*
第二行有3个空格外加3个符号*
第三行有2个空格外加5个符号*
第四行有1个空格外加7个符号*
//一共有四行,因此第一个for循环是打印出行数,i就是第几行
for (int i = 1; i <= 4; i++)
{
//第二个for循环是打印出三角形每一行前面的空格数,最大的空格数等于最大行数,然后依次减一
for (int j = 1; j <= 4 - i + 1; j++)
cout << " ";
//第三个for循环是打印出组成三角形的符号*,有1,3,5,7看出里面有规律,即2*n-1
for (int k = 1; k <= 2 * i - 1; k++)
cout << "*" ;
//在打印出当前行的空格与符号*之后,进行换行跳转
cout << endl;
}
如果要打印n行的三角形,把里面的数字4换成n即可,完整代码如下:
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "输入几行" << endl;
cin >> n;
cout<<"输出三角形"<<endl;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n - i + 1; j++)
cout << " ";
for (int k = 1; k <= 2 * i - 1; k++)
cout << "*" ;
cout << endl;
}
}
2,倒立三角形,尖角朝下
同样以四行三角形为例
观察可知:
第一行有1个空格外加7个符号*
第二行有2个空格外加5个符号*
第三行有3个空格外加3个符号*
第四行有4个空格外加1个符号*
//第一个for循环打印出行数,一共有四行
for (int ii = 1; ii <= 4; ii++)
{
//第二个for循环打印出空格数,空格数等于对应的行数数字,即第一行一个,第二行两个
for (int jj = 1; jj <= ii; jj++)
cout << " ";
//第三个for循环打印出符号*的个数,有观察可知,7,5,3,1符合2*n-1,其中n随行数的变化而变化
for (int kk = 1; kk <= 2 * (4 - ii) + 1; kk++)
cout << "*";
cout << endl;
}
同理,如果要打印出n行的倒立三角形,把里面的数字4改成n即可。
注:第二个for循环打印的是前面的空格个数,其中的j可以自己改变,我为了描述和观察方便在每一行的前面各加了一个空格,如果不加的话也不影响,在第二个for循环那里把j的赋值等于1改成等于0,再在判断条件那里修改一下即可。