版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/melody_1016/article/details/82262028
练习5-3 数字金字塔(15 分)
本题要求实现函数输出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
作者: C课程组
单位: 浙江大学
时间限制: 400 ms
内存限制: 64 MB
代码长度限制: 16 KB
图解:
思路:本题通过观察可以看出每行的每一个数字之前空格个数都是有规律的,所以可以把第一个数字前面的空格和后面数字的输出分离开来:输出左边的空格,每行有n-i个空格;每一行左边空格输完后输出数字,n行n个数字(数字后面有一个空格)。
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<stdlib.h>
void pyramid(int n)
{
int i, j, k;
//控制行数
for (i = 1; i <= n; i++)
{
//输出左边的空格,每行有n-i个空格
for (j = 1; j <= n - i; j++)
{
printf(" ");
}
//每一行左边空格输完后输出数字,n行n个数字(数字后面有一个空格)
for (k = 1; k <= i; k++)
{
printf("%d ", i);
}
//换行
printf("\n");
}
}
int main()
{
int n;
scanf("%d", &n);
pyramid(n);
system("pause");
return 0;
}
运行结果: