------------恢復內容開始------------
最近學習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);
}
以上就是我對這一道題目的理解啦,希望大家多多指教呀!
------------恢復內容結束------------