Suberrr


私信TA

用户名:shenyubo

访问量:110

签 名:

等  级
排  名 1428
经  验 2174
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

1 3 6 10 15

2 5 9 14

4 8 13

7 12

11

首先定义二维数组num[5][5],根据数字递增的规律观察行列之和的关系;

a[0][0]=1(行+列=0)

a[1][0]=2 a[0][1]=3(行+列=1)

a[2][0]=4 a[1][1]=5 a[0][2]=6(行+列=2)

...

a[4][0]=11 ......a[0][4]=15(行+列=4)

由此可以看出,当我们输入n为5时,通过控制行列之和<5可以解决该问题

在行列之和为一定值的情况下,每执行一次循环,让行数减1,列数加1

注意事项:

1、输入n,控制行列之和sum<n(注意:sum不能等于n(二维数组性质))

2、初始化a=1,每执行一次循环先赋值,再执行a++

3、输出时,注意不是输出整个二维数组,只输出半个二维数组,剩下半个二维数组是没有值的。


参考代码:

#include<stdio.h>
int main(void)
{
    int i,j,sum,n;
    scanf("%d",&n);
    int a=1;
    int num[5][5];
    for(sum=0;sum<n;sum++)//行加列=sum
    {
      for(i=sum,j=0;i>=0&&j<=sum;i--,j++)//在sum值固定的情况下,行列变换来赋值
      {
          num[i][j]=a;
          a++;
      }
    }
    for(i=0;i<=n;i++)
    {
        for(j=0;j<=n-1-i;j++) printf("%d ",num[i][j]);//输出每一项对应的值
        printf("\n");//每一行输出完后进行换行
    }
}



 

0.0分

1 人评分

  评论区