昨天刚学完的简单的循环语句,老师出了个题,求解。用循环语句做,输出结果要这样
*
* * *
* * * * *
* *
* * * * * *
* * * * * * * * * *
* * *
* * * * * * * * *
* * * * * * * * * * * * * * *
* * * *
* * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
三角形的顶点要在中间,对的不是很齐。。
line 控制行数 ,但是一定要是3的倍数,简单分析一下,对几个部分分组然后按规律输出。
#include<iostream>
using namespace std;
int main()
{
int line=24;
for(int i=0;i<line;++i)
{
for(int j=line;j>i+1;--j)
cout<<" ";
if(!(i%3))
{
for(int k=1;k<=1+i*2;++k)
{
if((k-1)%6)
cout<<" ";
else
cout<<"*";
}
cout<<endl;
}
else if(i%3==1)
{
bool flag=true;
for(int k=1;k<=1+i*2;++k)
{
if(flag)
cout<<"*";
else
cout<<" ";
if(!(k%3))
flag=!flag;
}
cout<<endl;
}
else if(i%3==2)
{
for(int k=1;k<=1+i*2;++k)
cout<<"*";
cout<<endl;
}
}
}
我的思想是先从容易的开始
所以我先打印了3、6、9、12行
然后我再打印1、4、7、10行
最后我才看怎么打印2、5、8、11行
不妨告诉你,虽然我得出了你想要的结果。但是打印2、5、8、11行的时候我自己也是混乱修改出来。所以你自己看看代码吧,如果实在不行,大家一起讨论一下咯
#include<iostream>
using namespace std;
int main()
{
int i,j;
for (i = 0; i < 12; i++)
{
int flag1 = 0;
int flag2 = 0;
if (i%3 == 0)
{
for (j = 0; j <= 12+i-1;j++)
{
if (j < 12-i-1)
{
cout << ' ';
}
else if(j%3 == 2)
{
if (flag1%2 == 0)
{
cout << '*';
}
else
{
cout << ' ';
}
flag1++;
}
else
{
cout << ' ';
}
}
}
else if (i%3 == 1)
{
int k;
for (j = 0; j <= 12+i-1;j++)
{
if (j < 12-i-1)
{
cout << ' ';
}
else if(j%3 == 1)
{
if (flag2%2 == 0)
{
for (k = 0; k < 3; k++)
{
cout << '*';
}
}
else
{
cout << ' ';
}
flag2++;
j++;
}
else
{
cout << ' ';
}
}
}
else
{
for (j = 0; j <= 12+i-1;j++)
{
if (j < 12-i-1)
{
cout << ' ';
}
else
{
cout << '*';
}
}
}
cout << endl;
}
return 0;
}