自己翻出去年集训时候的代码,发现哇很短(划分区域,点和直线关系),于是也带学弟学妹入坑,我有罪QAQ:
自己挖的坑也要笑着填完。。。

打印闪电:

#include<stdio.h>
int main()
{
int x,y,n,T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(x=0; x<=2*n; x++)
{
for(y=0; y<=n; y++)
{
if((x==n-y)||(x==2*n-y)||(x==n))
{
printf("*");
}
else if((x<n-y)||((x>n)&&(x<2*n-y)))
{
printf(" ");
}
}
printf("\n");
}
printf("\n");
}
return 0;
}

打印菱形:

#include<stdio.h>
int main()
{
int n,x,y;;
while(~scanf("%d", &n))
{
for(x = 1; x <= 2*n-1; ++x)
{
for(y = 1; y <= 2*n-1; ++y)
{
printf("%c",(x == -y+n+1 && y <= n) || (x == y+n-1 && y <= n) || (x == y-n+1 && y > n) || (x == -y+3*n-1 && y > n)?'*':' ');
}
printf("\n");
}
}
return 0;
}

打印正六边行:

#include <stdio.h>
int main() {
int n;
scanf("%d",&n);
int x,y;
for(x=0;x<=2*n-2;x++){
for(y=0;y<=3*n-3;y++){
if(x<(n-1)-y||x>y+n-1||(x>0&&x<2*n-2&&x>(n-1)-y&&x<y+n-1&&x>y-(2*n-2)&&x<-y+4*n-4)){
printf(" ");
}
else if((x==2*n-2&&y>=n-1&&y<=2*n-2)||(x==0&&y<=2*n-2&&y>=n-1)||x==-y+4*n-4||x==y-(2*n-2)||x==(n-1)-y||x==y+n-1){
printf("*");
}
}
printf("\n");
}
return 0;
}

打印大风车:

#include <stdio.h>
int main()
{
int n,x,y;
while(~scanf("%d",&n))
{
for(x = 1; x < 2 * n; x++)
{
for(y = 1; y < 2 * n; y++)
{
printf("%c",((y>=n && y <=2*n && x>=n && x>=y) || (y >=0 && y <=n && x>= 0 && x <=n && x<=y) || (y >= 0 && y <= n && x >= n && x <= 2*n - y) || (y >= n && y <= 2*n && x <= n && x >= 2*n-y))?'*':' ');
}
printf("\n");
}
printf("\n");
}
return 0;
}