输出数字空心金字塔

------------恢复内容开始------------

     最近学习c语言学的实在是有点慢,现在看到一个对我而言很有意思的题目--输出数字金字塔,现在我把它分想给大家吧,希望大家能够给出指导意见

题目:输入一个正整数n,输出n行空心金字塔,要求定义和调用函数hollow-pyramid(n)输出n行空心的数字金字塔。当n=5时,5行空心数字金字塔如下所示:

          1

        2 2

      3     3                 毕竟是手打的,可能没有这么规范,大家体谅一下呀!

    4          4

55555555555                             

 

通过观察我们可以知道,第一行只有一个数字1,第二行到第n行只有两个数字,而且第二行中间有一个空格子,第三行有三个空格子,一直到n-1行,每行增加2,在每行中间空格的两端分别是两个数字,数字与行数相对应,在最后一行,一共有2n-1个数字。

通过上述分析,我们可以将上述分成三部分打印,第一部分打印左端数字的空格,然后打印数字,第二部分打印数字之间的空格子,然后再将数字打印上去,第三部分就是最后一行,单独打印。由于题目要求使用函数输出,我们还需要在开头定义一个void函数;

接下来上代码啦!

#include<stdio.h>
void hollow(int n);//(enmm,函数名字怎么简单怎么来,就当是省那点力气吧,哈哈哈)
int main() {
int n;
scanf("%d", &n);//输入需要输入的函数
hollow(n);
return 0;
}
void hollow(int n) {
int i, j, k=1;
for (i = 1; i <= n - 1; i++) {//打印n-1行之间的元素
for (j = 1; j <= n - i; j++) {
printf(" ");                           //打印第一部分的空格
}printf("%d", i);                  //打印第一部分与第二部分之间的数字
if (i == 1) {
printf("\n");
continue;                        //由于第一行之间没有空格,需要使用continue将循环返回第一个for上边
}
for (j = 1; j <= k; j++) {
printf(" ");                    //根据规律打印第二部分的空格
}k = k + 2;
printf("%d\n", i);                  //在打印完成第二部分的空格以后,再补上这一行的数字后换行,就可以形成一个空心的三角形了呀;
}for (i = 1; i <= 2 * n - 1; i++) {   //第三部分是最后一行,直接打印
printf("%d", n);
}

 

以上就是我对这一道题目的理解啦,希望大家多多指教呀!

------------恢复内容结束------------

posted @ 2021-11-06 20:53  周轩  阅读(2127)  评论(0编辑  收藏  举报