整道题完全没看懂,这三个字母分别对应了什么,又怎么产生联系的?希望大佬能讲解细一点,然后求一份标准的答案。?
#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<i*2-1;k++)
{
printf("*"); //每行输出的*号
}
printf("\n"); //每次循环换行
}
return 0;
}
i表示行数,外层循环(i=1;i<5;i++)就是从第一行到第四行,执行循环体内的语句
j表示每一行星号前面的空格数,你要输出一个三角形,那么第一行1颗星,前面要有3个空格;第二行3颗星,前面就得有2个空格;第三行5颗星,前面就得有1个空格;第四行7颗星,前面没空格;因此循环条件为 for(j=1;j<5-i;j++),(这里答案给出的是(j=i;j<5;j++),效果和意思是一样的)这样你看,当i=1时,5-i=4,j<5-i也就是j<4,那么j就是从1到3,把这个循环跑了三遍,而我们循环体里的语句是printf(" ");输出一个空格,那跑三次不就是输出3个空格吗?然后i=2,i=3,i=4依此;
k表示每一行的星星数,原理和空格的输出是一样的呀。
以下是我的代码:
#include <stdio.h>
int main()
{
int i, j, k;
for(i=1; i<5; i++)
{
/* 观察每行的空格数量,补全循环条件 */
for( j=1;j<5-i;j++)
{
printf(" "); //输出空格
}
/* 观察每行*号的数量,补全循环条件 */
for(k=1;k<i*2;k++)
{
printf("*"); //每行输出的*号
}
printf("\n"); //每次循环换行
}
return 0;
}