解题思路以及注意事项:

  1. 用while循环判断用户输入。

  2. 外层循环执行一次,就会排好一行,里层循环执行一次,会排好第i行的第j+1个数。

  3. 第i行第j个数比第j+1个数小j+i+2。

  4. 第i行第j个数比第i+1行第j个数小i+1。

  5. 运行      i=0     1  3  6  10  15   虽说是第1行,但在代码里面是i表示行,在数组里面i从0开始,第一行为i=0
                 i=1     2  5  9  14        
                 i=2     4  8  13
                 i=3     7  12
                 i=4     11
    方便大家对着看规律

实例代码:

#include<stdio.h>
int main()
{
 int N,i,j,a[100][100];
 while(scanf("%d",&N)!=EOF)
 {
  a[0][0]=1;
  printf("%d",a[0][0]);
  for(i=0;i<N-1;i++)           
  {
   a[i+1][0]=a[i][0]+i+1;//按规律排好第二行的第一个数,第二行的第一个数比第一行的第一个数大 第一行(i=0)+1
   for(j=0;j<N-i-1;j++) //接上文:为下面的做准备,注意i从0开始,
   {
    a[i][j+1]=a[i][j]+j+i+2; //第一行第j+1个数比第j个数大j+第一行(i=0)+2。其中j也是从0开始
    printf(" %d",a[i][j+1]);
   }                          //到这里其实就排好了第1行和第二行的第一个数
   printf("\n%d",a[i+1][0]);  //换行
  }
 }
 printf("\n");
 return 0;
}

看看大家还有什么不懂的,请在下方评论区留言

点赞(19)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 6 条评论

view0909 6年前 回复TA
@view0909 emmm,我发现加了break语句,反而错了?????,求教大佬。
view0909 6年前 回复TA
需要在 while 语句内加一个break 语句,不然程序只能手动关闭;
view0909 6年前 回复TA
解法相当抽象,很厉害。
chickenboy 7年前 回复TA
@15-常万里 EOF是ctrl+z   多次输入输出时使用
15-常万里 7年前 回复TA
while(scanf("%d",&N)!=EOF),这一句中末尾的!=EOF是什么意思?在什么条件下要用到它?谢谢!