Mister-小方


私信TA

用户名:1104986125

访问量:250381

签 名:

如此英俊为哪般

等  级
排  名 4
经  验 37264
参赛次数 1
文章发表 68
年  龄 19
在职情况 学生
学  校 大连交通大学
专  业 车辆工程

  自我简介:

TA的其他文章

解题思路以及注意事项:

  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;
}

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

 

0.0分

0 人评分

  评论区

牛逼啊
2018-07-11 15:23:39
需要在 while 语句内加一个break 语句,不然程序只能手动关闭;
2018-03-11 12:20:13
解法相当抽象,很厉害。
2018-03-10 23:59:30
while(scanf("%d",&N)!=EOF),这一句中末尾的!=EOF是什么意思?在什么条件下要用到它?谢谢!
2017-11-25 16:43:04
  • «
  • 1
  • »