![]() |
#2
one_june2010-04-05 17:38
|

#include <iostream>
using namespace std;
void main( )
{
int x, y, k;
int n;
cout<<"enter n = ";
cin>>n;
for(x=1; x<=n; x++){
for(k=0; k<=n-x; k++)
printf(" ");
for(y=1; y<=x; y++)
printf("%2c",'*'); //等价于 cout<<" *";
cout<<endl;
}
for(x=n-1; x>=1; x--) {
for(k=0; k<=n-x; k++)
printf(" ");
for(y=1; y<=x; y++)
printf("%2c",'*'); //等价于 cout<<" *";
cout<<endl;
}
}
using namespace std;
void main( )
{
int x, y, k;
int n;
cout<<"enter n = ";
cin>>n;
for(x=1; x<=n; x++){
for(k=0; k<=n-x; k++)
printf(" ");
for(y=1; y<=x; y++)
printf("%2c",'*'); //等价于 cout<<" *";
cout<<endl;
}
for(x=n-1; x>=1; x--) {
for(k=0; k<=n-x; k++)
printf(" ");
for(y=1; y<=x; y++)
printf("%2c",'*'); //等价于 cout<<" *";
cout<<endl;
}
}
下面跟大家分享一下我的算法 (在整个程序中只出现过一次‘ ’ 和 一次‘*’):

#include <iostream>
using namespace std;
void main( )
{
int n;
int i, j;
cout<<"enter n = ";
cin>>n;
for(i=1; i<2*n; i++){
for(j=1; j<2*n; j++){
if((i+j>=n+1 && i+j<=3*n-1) && (1-n<=i-j && i-j<=n-1))
putchar('*');
else
putchar(' ');
}
putchar('\n');
}
}
using namespace std;
void main( )
{
int n;
int i, j;
cout<<"enter n = ";
cin>>n;
for(i=1; i<2*n; i++){
for(j=1; j<2*n; j++){
if((i+j>=n+1 && i+j<=3*n-1) && (1-n<=i-j && i-j<=n-1))
putchar('*');
else
putchar(' ');
}
putchar('\n');
}
}
[ 本帖最后由 鶄鵅 于 2010-4-5 20:35 编辑 ]