本題要求實現函數輸出n行數字金字塔。
函數接口定義:
void pyramid( int n );
其中n
是用戶傳入的參數,為[1, 9]的正整數。要求函數按照如樣例所示的格式打印出n
行數字金字塔。注意每個數字后面跟一個空格。
裁判測試程序樣例:
#include <stdio.h>void pyramid( int n );int main()
{ int n;scanf("%d", &n);pyramid(n);return 0;
}/* 你的代碼將被嵌在這里 */
輸入樣例:
5
輸出樣例:
1 2 2 3 3 3 4 4 4 4
5 5 5 5 5
看到這個輸出案例顯然是有行有列,那么i和j兩個循環體兄弟就要來了
void pyramid( int n )
{for(int i=1;i<n;i++){//行的控制,在第一行里面for(int j=n-1;j<i;j--){printf(" ");}//第一行里輸出數字前面的所有空格for(int j=1;j<=i;j++){printf("%d ",j);//循環體輸出數字加空格}printf("n");//換行}
}
輸出結果
1
1 2
1 2 3
1 2 3 4
GG
輸出偏離了航道:為什么只有4行->for循環里i<=n才對;
數字前面的空格怎么一個都沒有輸出->for(int j=n-1;j>=i;j--)才對
為什么輸出了4個1
不應該是從上向下嗎怎么是從左至右
改正后:
void pyramid( int n )
{for(int i=1;i<=n;i++){//在第一行里面for(int j=n-1;j>=i;j--){printf(" ");}//第一行里輸出數字前面的所有空格for(int j=1;j<=i;j++){printf("%d ",j);//循環體輸出數字加空格}printf("n");}
}
輸出結果
1 2 2 3 3 3 4 4 4 4
5 5 5 5 5