将方块分成四部分:第一行,第二至第n/2+1行(就是方片中上部),第n/2+2至第n-1行(方片下部),最后一行。
第一行和最后一行:打印n个*即可。
第二行至N/2+1行与第n/2+2至第n-1行算法基本相同。本题主要是考这部分
分行处理,一行也分三部分:1左边*,2#,和3右边*。
1:*数量每行少打一个,算出公式应打:n/2+2-i(我以j为公式变量是n/2-j/2)就不细说了j是星号数量)...
2:再打印j个星号,j初值为1(n为积数太好了)j随每次循环+(-)2
3:同1
- #include"stdio.h"
- int main()
- {
- int n;
- int i,j,k;
- scanf("%d",&n);
- for(i=1;i<=n;i++)
- putchar('*');
- printf("\n");
- for(i=2,j=1;i<=n/2+1;i++,j=j+2)
- {
- for(k=1;k<=n/2-j/2;k++)
- putchar('*');
- for(k=1;k<=j;k++)
- putchar('#');
- for(k=1;k<=n/2-j/2;k++)
- putchar('*');
- putchar('\n');
- }
- for(i=n/2+2,j=j-4;i
- {
- for(k=1;k<=n/2-j/2;k++)
- putchar('*');
- for(k=1;k<=j;k++)
- putchar('#');
- for(k=1;k<=n/2-j/2;k++)
- putchar('*');
- putchar('\n');
- }
- if(n>1)
- for(i=1;i<=n;i++)
- putchar('*');
- return 0;
- }
阅读(756) | 评论(0) | 转发(0) |