/*********************************************************
题目:打印如下一个图形
解题分析:
如图所示是一个13行的三角图形,用inti来代表行数,那么就需要循环13次(那样就用一个外层循环可以解决for(inti=0;i13;i++)).分析的是每次外层循环增加后内层循环打印星星数量的情况.
当i=0,星星的个数为1
当i=1,星星的个数为2
当i=2,星星的个数为3
当i=3,星星的个数为4
当i=4,星星的个数为5
当i=5,星星的个数为6
当i=6,星星的个数为7
根据上面的外层循环次数增加和打印星星数量的增加规律可以用一个内层循环解决(for(intj=0;j1+i;j++))----------------------从这开始星星的数量开始递减.
当i=7,星星的个数为6
当i=8,星星的个数为5
当i=9,星星的个数为4
当i=10,星星的个数为3
当i=11,星星的个数为2
当i=12,星星的个数为1
随便着外层循环的增加,打印的星星数量递减,但外层循环和打印星星的数量总和是13,这样就可以设计一个内层循环来打印星星的数量for(intk=0;k13-i;k++).
*********************************************************/
//程序实现如下:
#includeiostream
usingnamespacestd;
intmain()
{
for(inti=0;i13;i++)//外层循环13次
{
//判断一下i的值,如果i7说明打印星星的数量是在增加的,如果i=7打印星星额数量是递减的
if(i7)
{
for(intj=0;j1+i;j++)
{
cout*;
}
coutendl;
}
else
{
for(intk=0;k13-i;k++)
{
cout*;
}
coutendl;
}
}
system(pause);
return0;
}
运行结果如下:
上面这个程序用了两个循环来处理,下面这个程序是用一个循环来处理完成。
//程序实现如下:
#includeiostream
usingnamespacestd;
intmain()
{
intnum=0;//变量num代表打印星星的数量
intk;//变量k代表每次增加或减少打印星星的数量
for(inti=0;i13;i++)//外层循环13次
{
//单i7的时候k=1,当i=7的时候k=-1;
if(i7)
{
k=1;
}
else
{
k=-1;
}
num=num+k;
for(intj=0;jnum;j++)
{
cout*;
}
coutendl;
}
system(pause);
return0;
}
运行结果如下: