满意答案
i表示行号,打一行i 就加1
j表示某一行需要打印空格的数目
k表示某一行需要打印‘*’的数目
这个程序打了一个7行的菱形,我把程序改一下,把i,j,k的计数都从1开始,看起来会比较直观
#include
void main()
{
int i,j,k;
for(i=1;i<=4;i++) //先打印前4行
{
for(j=1;j<=4-i;j++) //每一行先打印需要打印的空格,空格数为(4 - 行号),譬如第1行,需要打4-1个空格,第2行需要打4-2个空格
printf(" ");
for(k=1;k<=2*i -1;k++) //打完空格打‘*',每行需要打印2倍行号+1个,譬如第1行打印2*1 - 1个,第2行打印2*2 - 1=3个
printf("*");
printf("\n");
}
for(i=1;i<=3;i++) //然后打印后面三行,行号从1开始计算
{
for(j=1;j<=i;j++) //每行打印空格数为行号数,譬如第1行打印1个,第2行打印2个
printf(" ");
for(k=1;k<=7-2*i;k++) //每行打印7-2*i个’*',譬如第1行打印7-2*1=5个,第2行打印7-2*2=3个
printf("*");
printf("\n");
}
}追答:i是控制行,j是控制空格的输出,k是控制*的输出。
至于函数,那个就是计算来的。
那个图形是
*
***
*****
*******
*****
***
*
你对每个*号分析一下出现的位置就计算出来了
第一行是前面三个空格带一个*
第二行是两个空格带三个*
第三行是一个空格带五个*
第四行是7个*
五六七行就是三儿一行
141分享举报