#include <stdio.h> int main() { int i, j, k; for(i=1; i<5; i++) { /* 观察每行的空格数量,补全循环条件 */ for(j=;j<;j++) { printf(" "); //输出空格 } /* 观察每行*号的数量,补全循环条件 */ for(k=;k<;k++) { printf("*"); //每行输出的*号 } printf("\n"); //每次循环换行 } return 0; }
当i=1时,第一个for循环, 表示第一行。然后第二个for循环,因为j<=4, j=i=1,所以第二个for循环需要运行四遍,输出四个空格。然后第三个for循环,k <= 2 * i - 1是规定运行几次,当i=1时,k<=1,因为k=1,所以第三个for循环运行一次,输出一个*号。所以第一行就是四个空格,一个*号。
当i=2时, 第一个for循环, 表示第二行。然后第二个for循环,因为j<=4, j=i=2,所以第二个for循环需要运行三遍,输出三个空格。然后第三个for循环,k <= 2 * i - 1是规定运行几次,当i=2时,k<=3,因为k=1,所以第三个for循环运行三次,输出三个*号。所以第二行就是三个空格,三个*号。
...........
以此类推
这道题有很多种方法,不一定要按照题目的标准答案,你可以自己用VC6。0测试。能输出一样的图案就行。
标准答案思路:第i行5-j个空i*2-1个*,三角形为第一行4个空格1个*,第二行3个空格3*,第三行2个空格5*,第四行1空7*.
当然你也可以当成第一行3个空格1个*,第二行2个空格3*,第三行1个空格5*,第四行0空7*.只是要循环条件改一下
#include <stdio.h>
int main()
{
#include <stdio.h>
int main()
{
int i, j, k;
for(i=1; i<5; i++)
{
/* 观察每行的空格数量,补全循环条件 */
for(j=i;j<5;j++)
{
printf(" "); //输出空格
}
/* 观察每行*号的数量,补全循环条件 */
for(k=0;k<2*i-1;k++)
{
printf("*"); //每行输出的*号
}
printf("\n"); //每次循环换行
}
return 0;
}