求解思路请参考http://blog.csdn.net/sxhelijian/article/details/8059505。
下面是任务http://blog.csdn.net/sxhelijian/article/details/8045279中所有星号图的参考解答。分别只给出一种参考,读者可以写出更多的其他解答。
(1)
要输出的是:

代码:
#include <iostream>
using namespace std;
int main( )
{
int i,j,n=6;
for(i=n;i>=1;--i) //一共要输出n行
{
//输出第i行
for(j=1; j<=2*i-1; ++j) //输出2*i-1个星号
cout<<"*";
cout<<endl;
}
return 0;
}
(2)
要输出的是:

代码:
#include <iostream>
using namespace std;
int main( )
{
int i,j,n=6;
for(i=1;i<=n;++i) //一共要输出n行
{
//输出第i行
for(j=1; j<=n-i; ++j) //输出n-i个空格
cout<<" ";
for(j=1; j<=i; ++j) //输出i个星号
cout<<"*";
cout<<endl;
}
return 0;
}
(3)
要输出的是:

代码:
#include <iostream>
using namespace std;
int main( )
{
int i,j,n=6;
for(i=n;i>=1;--i) //i由大变小
{
//输出第i行
for(j=1; j<=n-i; ++j) //关键:输出的是n-i个空格
cout<<" ";
for(j=1; j<=2*i-1; ++j) //关键:输出的是2*i-1个星号
cout<<"*";
cout<<endl;
}
return 0;
}
(4)
要输出的是:

代码:
#include <iostream>
using namespace std;
int main( )
{
int i,j,n=6;
for(i=1;i<=n;++i) //一共要输出n行
{
//输出第i行
for(j=1; j<=n-i; ++j) //输出n-i个空格
cout<<" ";
for(j=1; j<=2*i-1; ++j) //输出2*i-1个星号
cout<<"*";
cout<<endl;
}
return 0;
}
(5)
要输出的是:

代码:这一个稍微麻烦一些在于,第1行和最后一行单独处理,而中间的n-2行则有规律:若干空格、1个星号、若干空格、1个星号
#include <iostream>
using namespace std;
int main( )
{
int i,j,n=6;
//输出第一行:n-1个空格和1个星号并换行
for(j=1; j<=n-1; ++j) //输出n-i个空格
cout<<" ";
cout<<"*"<<endl;
//再输出中间的n-2行
for(i=2;i<=n-1;++i) //一共要输出n-2行
{
//输出第i行
for(j=1; j<=n-i; ++j) //输出n-i个空格
cout<<" ";
cout<<"*"; //再输出一个星号
for(j=1; j<=2*i-3; ++j) //然后输出2*i-3个空格
cout<<" ";
cout<<"*"<<endl; //输出一个星号后本行结束,换行
}
//输出最后一行:2*n-1个星号
for(j=1; j<=2*n-1; ++j)
cout<<"*";
cout<<endl;
return 0;
}
(6)
要输出的是:

参考代码:
#include <iostream>
using namespace std;
int main( )
{
int i,j,n=6; //n代表上三角行数
//先输出上三角
for(i=1;i<=n;++i) //输出n行
{
//输出第i行
for(j=1; j<=n-i; ++j) //输出n-i个空格
cout<<" ";
for(j=1; j<=2*i-1; ++j) //输出2*i-1个星号
cout<<"*";
cout<<endl;
}
//下面输出下三角
for(i=1;i<=n-1;++i) //输出n-1行
{
//输出第i行
for(j=1; j<=i; ++j) //输出i个空格
cout<<" ";
for(j=1; j<=2*(n-i)-1; ++j) //输出2*i-1个星号
cout<<"*";
cout<<endl;
}
return 0;
}