*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
_________________________________________________________________________________________________________________分隔线____________________________________
代码如下:
#include<iostream>
using namespace std;
int main()
{
int a = 1;//代表第几行
int b = 0;//代表每行需要打印的*数
bool Add = true;//增加为真
while (true)
{
if (Add)//增加
{
if (b < a)
{
cout << "*";
b++;
}
else
{
cout << endl;
b = 0;
if (a == 6)
{
Add = false;
}
else {
a++;
}
}
}
else//减少
{
if (b < a - 1)
{
cout << "*";
b++;
}
else
{
cout << endl;
b = 0;
a--;
if (a == 1)
{
break;
}
}
}
}
}
解析:
1.观察图形为1-6行为递增,7-11为递减,我们可以建立一个框架:在一个循环语句中,可以利用if语句进行判断,让其在前6行递增,后5行递减。if语句需要一个关系表达式,我们可以创建一个bool值使增加为真,减少为假,这样我们的框架就完成了。
2.框架完成后,我们只需往语句中进行填充,使逻辑成立,即可打印出题中内容。
本人当时容易混淆的点是:当进行if语句判断 a==6会转到下方递减的语句中,第6行的**是否会打印不全,其实是先打印完了第6行才执行次判断 。
见下图:
本人当时容易混淆的点是:当a==6时处于第7行的位置 a==5时位于第8行的位置......当a==2时位于11行的位置。
见下图:
如果有帮助到你,可以帮我点个赞吗,谢谢啦~~