哎呀呀~这次高手病挑战的图形太过经典了~
当N=5时~
打印~
*
***
*****
*******
*********
*******
*****
***
*
在打印图形2的基础上分类讨论了一下~
看看效果如何~
代码如下~
#include<stdio.h>
#include<math.h>
#define N 5
int main()
{
int i=0;
int k=N*(N+1)/2;
int n=N*(2*N+1);
for (i=k+2;i<N*(7*N)/2;i++)
{
int s=n-abs(n-i)-2;
int m=2*(i>n)*(N-1);
double a=sqrt(8*(s-m)+9)-1;
double b=fmod(a,2);
int c=(int )floor(a/2-N);
int d=(N-1)+c*(2*N+c-1)/2;
int g=N-c-1;
int h=(i>n)*g*(4*N-g);
int u=2*(i>n)*(i-n);
int x=s-k-d-h+u;
putchar("*\n \n"[(b==0)+2*(x<0)]);
}
return 0;
}
后记~这次弄的时间比较长~差点做不出来~今天中午忙了这个很久~敲代码都敲炸了~想睡觉~还好晚上有点思路~不过公式调试了很久~最终还是做出来了~就是分开上半部分和下半部分讨论~看看效果如何~