急!!C语言问题!在线等!for语句解释!

来源:百度知道 编辑:UC知道 时间:2024/05/16 18:22:34
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int i,j,k;
for(i=0;i<5;i++)
{for(k=0;k<=40-i;k++)
printf(" ");
for(j=0;j<=i*2;j++)
printf("*");
printf("\n");
}

}
*
打 ***
*****
*******
*********



问:书中说控制条件K=40-I使其输出前导空格会随外层循环的控制的变量值变化而变化,从而输出前导人格;这个40是怎么计算得来的!为什么是40-I?
程序是怎么运行的?请高人指点!

是三角形的

40不是计算出来的

只是你的书上定义的三角形的在屏幕上打印出来的位置而已
你改成30,三角形就会向左边移
50则往右移
但是这个值不能小于5,否则你的三角形就不成型了

因为你要打印5行出来,所以第一行需要空5格
当然假如你要打印10行(改为i<10)
那么你的K值就至少为10(即,改为k<10-i)

他的计算原理很简单
i算行数
j算空格数

一开始空格数为满(比如5行),则必要空格为5
那么你的第一行(系统为第0行)则要空5个

第二行(系统第1行)则要空4个

那么就有一下排列

行 i k
01 0 5
02 1 4
03 2 3
04 3 2
05 4 1

通过这样,你就会发现,事实上
k = 必要空格数 - i
这也就是他的计算原理了