/*1.输入一个奇数n,输出对角线长为n的实心或者空心的菱形图案
如当n=5时,有:
*
***
*****
***
*
*/
1.
#include<stdio.h>
int main()
{
int x,y,m,n;
while(scanf("%d",&n)!=EOF){
if(n%2==0)
n++;
m=(n-1)/2;
for(y=0;y<=n-1;y++){
for(x=0;x<=n-1;x++)
if(x+y==m||x+y==3*m||x-y==m||y-x==m)
printf("*");
else
printf(" ");
printf(" ");
}
}
return 0;
}
int main()
{
int x,y,m,n;
while(scanf("%d",&n)!=EOF){
if(n%2==0)
n++;
m=(n-1)/2;
for(y=0;y<=n-1;y++){
for(x=0;x<=n-1;x++)
if(x+y==m||x+y==3*m||x-y==m||y-x==m)
printf("*");
else
printf(" ");
printf(" ");
}
}
return 0;
}
2.对称的方法
#include<stdio.h>
int main()
{
int x,l,t1,t2,m,n;
while(scanf("%d",&n)!=EOF){
if(n%2==0)
n++;
m=n/2;
for(l=0,t2=1;l>=0;l+=t2){
for(x=0,t1=1;x>=0;x+=t1){
if(x==m-l)
printf("*");
else
printf(" ");
if(x==m)
t1=-1;
}
printf(" ");
if(l==m)
t2=-1;
}
}
return 0;
}
int main()
{
int x,l,t1,t2,m,n;
while(scanf("%d",&n)!=EOF){
if(n%2==0)
n++;
m=n/2;
for(l=0,t2=1;l>=0;l+=t2){
for(x=0,t1=1;x>=0;x+=t1){
if(x==m-l)
printf("*");
else
printf(" ");
if(x==m)
t1=-1;
}
printf(" ");
if(l==m)
t2=-1;
}
}
return 0;
}