题目:
输出n行数字金字塔。
要求
1、使用下面的函数
void pyramid(int n);
//说明:n是用户传入的参数。
2、每个数字后面跟一个空格
3、最后一行的第一个数字前无空格
输入输出样例
----------------------------------------------------------------分割线-----------------------------------------------------------------------------
解题:
解题思路:
(1)可以将这个图形分成两个部分,黑色三角形部分由空格组成,橙色三角形部分数字和空格组成,如下图。
(2)先将由空格组成的黑色三角形输出
(3)再将橙色三角形部分输出
代码如下
#include <stdio.h>
//函数声明
void pyramid( int n );
int main()
{
int n;
scanf("%d", &n);
pyramid(n);
return 0;
}
//函数部分
void pyramid(int n){
int i,j;
int count=1;
//控制行数
for(i = 1; i<=n; i++){
//count用来控制换行
count++;
//输如黑色三角形部分,输出每行第一个数字之前的所有空格,例如5层金字塔,则第一行有4空格,第二行有3个空格,依次类推,最后一行则无空格。
for(j = n-1-i; j>=0; j--){
printf(" ");
}
// 到第几行就输出对应的数字,第一行输出1,第二行输出2
for(j = 1; j<=i; j++){
//每个数字后都带空格
printf("%d ",i);
}
if(count<=n)
printf("\n");
}
}
解题过程遇到的问题及解决措施
- 始找不到输出前面空格的方法,当把那副图随意涂涂改改后,意外发现它居然可以被分成两个三角形部分,我真是太机智了,φ(>ω<*),哈哈哈。
-------------------------------------------------------这也是条分界线---------------------------------------------------------------------------
我今天的感悟:
得到别人的认可真的对我很重要,无论是陌生人还是熟人,他们所带来的一个赞,一条评论,就像是给我写文章付的工钱一样,哈哈哈,就像今天我的某篇文章被夸赞收藏,令我高兴兴奋了很久一样,愿我们我们都能努力向前,坚持所想坚持的事情,能够被别人所认可,这也就值得了。