这个图形有几行,就做几次循环,每次循环打印一行:for ( i=0i<Ni++ ),N=3
注意i在3行中取值:0,1,2
每行的空格计数:第1行(i=0)空格数2,第2行(i=1)空格数闹高冲1,第3行(i=2)空格数0
那么在i循环中用i表示的空格数就是:总行数-当前行数-1=N-i-1
在i循环中新开一个循环来输出空格,循环几次输出几个空格
每行的星号计数:第1行(i=0)星号数1,第2行(i=1)星号数3,第3行(i=2)星号数5
那么在i循环中用i表示的星号数就是:当前行数*2+1=i*2+1
在i循环中新开一个循环来输出星号,循环几次输出几个空格
最后每行需要一个换行符号输出
最终你的程序为:
for ( i=0i<ni++ ) //这里n是行数
{ for ( j=0j<n-i-1j++ ) printf(" ")//可根据不同图形更换j的循环结束条件公式
for ( j=0j<i*2-1j++ ) printf("*")//可根据不同图形更换j的循环结束条件公式
printf("\n")
}
这样,液歼这种问题就变成了三个公式的总结问题:行数、空格数、星号数,总结出来套到程序中相应位置即可。总结是可以把i的值、空格的值、星号的值列出来,用一点序列的知识就可归纳出公式。
行号 0,1,2
空格 2,1,0 总行号-行号念宽
星号 1,3,5 行号*2-1,这是等差数列
可以通过for循环来实现输出金字塔图形。
#include<stdio.h>
void main()
{
int i,j
for (i=1i<碰悉销=3++i) // 控制金字塔的层数,本例输出3层,可以改变输出任意层
{
for (j=1j<=3-i++j) // 控制笑游金字塔每层前面输出的空格数
printf(" ")
for (j=1j<=2*i-1++j) // 控制金字塔每层需要打印'*'的个数
printf("*")
printf("\n") // 一层金字塔输出完毕陆孙,换行继续输出下一层
}
}
/*2013年12月29日 18:33:34
目的:金字塔
*/
#include<stdio.h>
int main(void)
{
int i, j, k
for(i=1i<=5i++) //构建一个五行的金字塔
{
for(j=1j<=5-ij++) //这里的肆铅j是控制每行的空格个数,第一行就输入5-1个空格,以此类推
printf(" ")
for(k=1k<=2*i-1k++) //这里的k是控制每行裂羡好星号的输派知出个数,就是第一行输出2*1-1个,第二行输出2*2-1个星号,以此类推
printf("*")
printf("\n") //每行打印星号完了后换行,来重新开头打印第二层、第三层、第四层、第五层金字塔
}
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)