学习c++中遇到这么一个题目,要求输出如下图形
*
***
*****
*******
*****
***
*
其例程给的程序如下:
#include<iostream.h>
void main( )
{ int i,j,n=4;
for(i=1;i<=n;i++) //输出前4行图案
{ for(j=1;j<=30;j++)
cout<<' '; //在图案左侧空30列
for(j=1; j<=8-2*i ;j++)
cout<<' ';
for(j=1; j<=2*i-1 ;j++)
cout<<'*';
cout<<endl;
}
for(i=1;i<=n-1;i++) //输出后3行图案
{
for(j=1;j<=30;j++)
cout<<' '; //在图案左侧空30列
for(j=1;j<=7-2*i ;j++)
cout<<'*';
cout<<endl;
}
}
但我感觉不大好,自己思考,改动了下,能实现任何奇数输出的图形,5, 7 9 11、、、、等等都可以,呵呵,学习不就是这样吗,能举一反三,不断优化,虽然很简单,但一直在努力追赶。。。加油!!!
#include<iostream>
using namespace std;void main( )
{
int i,j,a,b;
cin>>a;
//cin>>b;
for(i=1;i<=a/2;i++)
{
for(j=1;j<=a-(2*i-1);j++)
cout<<" ";
for(j=1;j<=2*i-1;j++)
cout<<'*';
cout<<endl;
}
for(i=a-a/2;i>0;i--)
{
for(j=1;j<=2*i-1;j++)
cout<<'*';
cout<<endl;
}
}