题目描述
ACMer感觉到上次的打印菱形的那道题非常经典,经过几天的反复思考,终于弄明白了那道题的来龙去脉。为了巩固大家的掌握情况,下面他出了一道题加强版的打印菱形来考考大家是否真正掌握了这个知识点!那么,你会做吗??
输入
多组测试数据,每组输入一个自然数n(1<n<100)。n表示所输出菱形上部分的高,如果不明白,请看样例。
输出
输出相连的菱形。
样例输入
3
样例输出
* *
*** ***
*********
*** ***
* *
提示
样例中间一行是9个星号(挨着的星号重合)
#include<stdio.h>
int
main()
{
int
n,i,a,b,o,d,m,c,h=2,k,k1,k2,k3,l=1;
int
m1,m2,m3,y1,y2,y3,y4;
while
(
scanf
(
"%d"
,&n)!=EOF)
{
for
(i=1;i<=n;i++)
{
k=n+(i-1)*(-1)-1;
for
(k1=k;k1>0;k1--)
printf
(
" "
);
a=1+(i-1)*2;
for
(k2=a;k2>0;k2--)
printf
(
"*"
);
b=(n-1)*2-1;
o=b+(i-1)*(-2);
for
(k3=o;k3>0;k3--)
printf
(
" "
);
c=1+(i-1)*2;
if
(i==n)
c=c-1;
for
(m=c;m>0;m--)
printf
(
"*"
);
printf
(
"\n"
);
}
for
(i=1;i<n;i++)
{
m1=1+(i-1)*1;
for
(y1=m1; y1>0;y1--)
printf
(
" "
);
m2=1+(n-1)*2-2+(i-1)*(-2);
for
(y2=m2;y2>0;y2--)
printf
(
"*"
);
m3=1+(i-1)*(2);
for
(y3=m3;y3>0;y3--)
printf
(
" "
);
for
(y4=m2;y4>0;y4--)
printf
(
"*"
);
printf
(
"\n"
);
}
}
return
0;
}