新手打怪之金字塔(多语言版)
主线任务
输入任意整数,要求打印出"金字塔"。
基础试炼
打印对应的实心三角形
面对这个看似"复杂的"图形时很多新手小伙伴往往会觉得无从下手,我们往往在面对复杂的问题的时候不妨 “化繁为简”
思路分析
一、先尝试打印实心矩形
#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,成长是靠自己一点一滴的付出积累出来的,不可能一蹴而就,加油小伙伴们,愿我们能在编程这条路上引亢高歌, 成就更好的自己!