高手病犯了~之打印图形2~

这次高手病挑战还是一个比较简单的打印图形~

但由于高手嘛~当然要一步到位咯~不过程序变量公式太长~得要分开几个参数来保存数据~

      图形很简单啊~真的~

      以N=5为例~

    *

   ***

  *****

 *******

*********


代码如下~

公式也许难以理解~就算写注释也没啥用~因为要理解就要自己一步一步推导出来~


#include<stdio.h>

#include<math.h>

#define N 10

int main()

{

    int i=0;

    int k=N*(N+1)/2;

    for (i=k;i<N*(2*N+1);i++)

    {

        double a=sqrt(8*i+9)-1;

        double b=fmod(a,2);

        int c=(int )floor(a/2-N);

        int d=(N-1)+c*(2*N+c-1)/2;

  

       printf("%c","*\n \n"[(b==0)+2*(i-k<d)]);

  

     }

     

     return 0;

}


后记~很想写写注释~但是感觉自己还不能完全理解透公式~有一部分公式修改是根据实际打印结果调试出来的~怕自己解释会越讲越乱~最后都不知道自己在讲什么了~还是保留意见好~有兴趣的可以用数列知识推导~不过我想没啥人会有这等功夫了~理解思路就行了~就是求数列通项公式以及数列求和~和对应打印的字符~

感觉自己对于数列还不太熟悉~还要再强化一下才行~


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值