打印空心金字塔

新手打怪之金字塔(多语言版)

主线任务

输入任意整数,要求打印出"金字塔"。

基础试炼

打印对应的实心三角形

面对这个看似"复杂的"图形时很多新手小伙伴往往会觉得无从下手,我们往往在面对复杂的问题的时候不妨 “化繁为简”

思路分析

一、先尝试打印实心矩形

在这里插入图片描述

#include<stdio.h>
int main(){
	int n = 5;
	int i;
	for(i=1;i<=5;i++){
		printf("*****\n");
	}
	return 0;
} 

在这里插入图片描述

二、进一步打印半个三角形

在这里插入图片描述

	for(i=1;i<=5;i++){
		for(j=1;j<=i;j++){
		printf("*");
		}
	printf("\n");
	}

在这里插入图片描述

三、最终打印一个完整三角形

在这里插入图片描述

for(i=1;i<=5;i++){
		for(z=1;z<=5-i;z++){
			printf(" ");
		}
		for(j=1;j<=2*i-1;j++){
		printf("*");
		}
		printf("\n");
	}

在这里插入图片描述

四、打印用户指定层数三角形

	scanf("%d",&n);
	int i,j,z;
	for(i=1;i<=5;i++){
		for(z=1;z<=5-i;z++){
			printf(" ");
		}
		for(j=1;j<=2*i-1;j++){
		printf("*");
		}
		printf("\n");
	}

在这里插入图片描述

完整代码呈现

#include<stdio.h>
int main(){
	int n;
	printf("请输入你需要的层数:\n");
	scanf("%d",&n);
	int i,j,z;
	for(i=1;i<=5;i++){
		for(z=1;z<=5-i;z++){
			printf(" ");
		}
		for(j=1;j<=2*i-1;j++){
		printf("*");
		}
		printf("\n");
	}
	printf("======恭喜你!======"); 
	return 0;
} 

小伙伴们以为这就结束了嘛?!不,加油还有更具挑战性的任务在等着你挑战呢!快来看看下面的进阶冲击吧!!冲冲冲!

进阶冲击

五、打印空心三角形

在这里插入图片描述

for (j = 1; j <= 2 * i - 1; j++) { // j 控制打印*的位置
			if (j == 2 * i-1 || j == 1 || i == s) { //判断何时打印
					printf("*");
			}
			else{
				printf(" ");
			}	
			}

完整代码呈现

C语言版

#include<stdio.h>
int main() {
	int s;
	printf("请输入你的层数:");
	scanf_s("%d", &s);
	//1-->先打印5*5的实心矩阵
	// *****
	// *****
	// *****
	// *****
	// *****
	//2--> 打印半个三角形
	//*           第一层1个*                    2*i-1个*
	//**          第二层2个*
	//***         第三层3个*
	//****        第四层4个*
	//*****       第五层5个*
	//3--> 打印一个完整的三角形
	//    *           第一层1个*  4个空格      2*i-1个*   5-i个空格
	//   ***          第二层3个*  3个空格
	//  *****         第三层5个*  2个空格
	// *******        第四层7个*  1个空格
	//*********       第五层9个*  0个空格
	//4--> 打印空心三角形
	//    *           第一层1个*  4个空格       5-i个空格
	//   * *          第二层3个*  3个空格
	//  *   *         第三层5个*  2个空格
	// *     *        第四层7个*  1个空格
	//*********       第五层9个*  0个空格
	int i;
	int j;
	int z;
	for (i = 1;i<= s;i++) { //i 控制层数
		for (z = 1; z <= s - i; z++) {
			printf(" ");
		}
		for (j = 1; j <= 2 * i - 1; j++) { // j 控制打印*的位置
			if (j == 2 * i-1 || j == 1 || i == s) {
					printf("*");
			}
			else{
				printf(" ");
			}	
			}
		printf("\n");
	}
	return 0;
}

Java语言版

import java.util.Scanner;

public class Stars {
    public static void main(String[] args) {

        Scanner myScanner = new Scanner(System.in);

        int totalLevel = myScanner.nextInt();

        for (int i = 1; i <= totalLevel; i++) {      //  i表示层数

            //在输出*之前要先打印空格  = 总层数-当前层
            for (int k = 1; k <= totalLevel - i; k++) {
                System.out.print(" ");
            }

            //控制打印每层的*个数
            for (int j = 1; j <= 2 * i - 1; j++) {
                //当前行的第一个位置是*,最后一个位置也是*,最后一层全部是*
                if (j == 1 || j == 2 * i - 1 || i == totalLevel) {
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }
            }
            //每打印完一层*就换行
            System.out.println("");     //  本身println本身会换行
        }
    }
}

Python语言版

s = int(input())

for i in range(1, s + 1):
    space = s - i
    for j in range(space):
        print(" ", end="")

    star = 2 * i - 1
    for k in range(star):

        if k == 0 or k == star - 1 or i == s:
            print("*", end="")
        else:
            print(" ", end="")

    print()

任务终结

至此,你应该能理解整个程序实现过程,并应该自己独立尝试完成任务并击败这个 编程思想 成长路上的小Boss,成长是靠自己一点一滴的付出积累出来的,不可能一蹴而就,加油小伙伴们,愿我们能在编程这条路上引亢高歌, 成就更好的自己!

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小猿--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值