想编写一个属于自己的算法,那么首先,我们要有一个数学思路去分析这个金字塔问题。
比如你要编写如下图的一个金字塔:
那么,首先,你要搞清楚空格与*之间的关系。
假设空格有j个,✳有i个。
那么有如下的关系:
j | i |
---|---|
空格 | * |
– | – |
3 | 1 |
2 | 3 |
1 | 5 |
0 | 7 |
由上面的数据可以看出m和n之间有如下关系: 2j+i=7;
2j指的是两边的空格总数;
i指的是✳个数;
两个元素加起来就是最大的*个数。
然后可以根据2j+i=7的数学公式来通过for循环进行嵌套,就可以打印出金字塔啦。
根据上式可知 j=(7-i)/2;
具体代码
#include <stdio.h>
int main()
{
int i,j,n;
for(i=1;i<=7;i=i+2) //循环4次,每次两边都加2,一直到7
{
for(j=1;j<=(7-i)/2;j++) //根据公式2j+i=7计算得出空格个数,并逐行打印
{
printf(" ");
}
for(n=1;n<=i;n++) //逐行打印出*的个数
{
printf("*");
}printf("\n");
}
return 0;
}
更多推荐
c语言编写金字塔——数学思路总结
发布评论