发布网友 发布时间:2022-04-28 15:57
共4个回答
热心网友 时间:2022-06-19 14:15
这个图形有几行,就做几次循环,每次循环打印一行:for ( i=0;i<N;i++ ),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=0;i<n;i++ ) //这里n是行数
{ for ( j=0;j<n-i-1;j++ ) printf(" "); //可根据不同图形更换j的循环结束条件公式
for ( j=0;j<i*2-1;j++ ) printf("*"); //可根据不同图形更换j的循环结束条件公式
printf("\n");
}
这样,这种问题就变成了三个公式的总结问题:行数、空格数、星号数,总结出来套到程序中相应位置即可。总结是可以把i的值、空格的值、星号的值列出来,用一点序列的知识就可归纳出公式。
行号 0,1,2
空格 2,1,0 总行号-行号
星号 1,3,5 行号*2-1,这是等差数列
热心网友 时间:2022-06-19 14:16
楼主 你记住一句话就可以了,就是金字塔的第i层(最上面是第1层,依次往下)有2*i-1个*号,这样就好理解了~~~那个k<=2*i-1就是这么来的热心网友 时间:2022-06-19 14:16
这个得自己慢慢看规律的,第一行1个*,第二行3 个,第三行5个,第四行7个。。。这个是等差数列啊,差为2。这种式子得自己找规律的,多看看就知道了。热心网友 时间:2022-06-19 14:17
*的个数为1 3 5 中学数学学的找规律 通项式为2*i-1