for循环嵌套金字塔

img

你好!可以请您帮我解答一下这一题吗?我看了好久都没转过来 CPU都快烧掉了 救命!

哪一段代码不懂?还是整个逻辑看不懂?

参考GPT和自己的思路:

您好!针对这个问题,我们可以采取两种方法,第一种是使用嵌套循环,第二种是使用递归函数。这里我们先介绍第一种方法。

首先,我们可以看到这个金字塔的行数是 5 行。那么我们可以使用一个外层循环来控制行数,在内层循环中打印具体的图形。内层循环中数量的增加可以根据外层循环的变量来控制。

具体代码如下:

for i in range(1, 6):
    for j in range(5-i):
        print(' ', end='')
    for k in range(2*i-1):
        print('*', end='')
    print()

上面这段代码中,外层循环控制金字塔的行数,内层循环中第一部分可以用来控制空格的数量,第二部分可以用来控制星号的数量。其中第一部分的数量逐渐递减,而第二部分的数量逐渐递增。

希望能够帮助您解决问题,如有疑问请随时提问!

参考GPT和自己的思路:

好的,针对这个问题,我可以提供一份 Java 语言的代码示例来帮助你理解和解决这个问题。具体代码如下:

public class Pyramid {
    public static void main(String[] args) {
        int rows = 5;
        for(int i=1; i<=rows; i++) {
            for(int j=1; j<=rows-i; j++) {
                System.out.print(" ");
            }
            for(int k=1; k<=2*i-1; k++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

以上代码中,第一个 for 循环用来控制金字塔的层数,第二个 for 循环用来控制每一层输出多少个空格,第三个 for 循环用来控制每一层输出多少个星号。你可以根据自己的需要修改 rows 变量的值来改变金字塔层数,然后运行程序即可看到输出结果。

希望这个代码示例能够帮助你解决问题,如果还有其他问题,欢迎继续向我请教。

这个代码的具体思路大概如下:

1 、获取每行要打印的字符;

2、第一个for循环控制打印几行,这个可以理解为金字塔的层数,这里是控制打印5行;

3、第二个for循环控制每行前面打印几个空格,以便后面能够打印出金字塔的形状,这里具体每行是打印:6,5,4,3,2个空格;

4、第三个for循环控制每行打印几个输入的字符,这里是打印金字塔的塔身,具体是每行依次打印:1,2,3,4,5个输入的字符;

5、然后第一个for循环里面最后那个printf打印每行的换行,以便下一行从新的一行开始打印。

测试代码如下:


#include <stdio.h>

int main(void){
    
    char ch=0;
    scanf("%c",&ch);  // 获取要每行要打印的字符 
    
    int i=0;
    int j=0;
    for(i=0;i<5;i++){ // 这个控制打印多少行,这里是控制打印5行 
        
        for(j=0;j<=5-i;j++){  // 这里控制每行前面打印几个空格,具体每行空格的个数依次是:6,5,4,3,2个 
            printf(" ");
        }
    
        
        for(j=0;j<=i;j++){  // 这里控制打印每行字符的个数 ,每行依次是:1,2,3,4,5个 字符 
            printf("%c ",ch);
        }
        
        printf("\n");  // 打印每行的换行符 
    }
    
    return 0;
    
} 

img