为了账号安全,请及时绑定邮箱和手机立即绑定

有没有大佬出个标准答案,求求了

整道题完全没看懂,这三个字母分别对应了什么,又怎么产生联系的?希望大佬能讲解细一点,然后求一份标准的答案。?

正在回答

2 回答


#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;

}


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;

}


8 回复 有任何疑惑可以回复我~
#1

bugswriter

能解释一下为什么for(j=1;j<5-i;j++)与答案给出的(j=i;j<5;j++),效果和意思一样的吗?
2021-08-03 回复 有任何疑惑可以回复我~
#2

bugswriter

不一样的,答案给出的(j=i;j<5;j++)与你的 (j=1;j<5-i;j++)每一行都相差了一个空格。(答案的比你的每一行都多了一个空格),不过你的代码才满足答案说的“每行输出的空格数等于(最后一行*号数减去当前行的*号数)除2”。
2021-08-03 回复 有任何疑惑可以回复我~
#3

木羽lxc 回复 bugswriter

对的我也这么觉得
2021-08-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

有没有大佬出个标准答案,求求了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信