功能:产生并输出如下形式的方阵。

碰到的一道非常好的程序设计题

功能:产生并输出如下形式的方阵。

1 2 2 2 2 2 1
3 1 2 2 2 1 4
3 3 1 2 1 4 4
3 3 3 1 4 4 4
3 3 1 5 1 4 4
3 1 5 5 5 1 4
1 5 5 5 5 5 1

其实就是输出一个7行7列的数组,但是数组的元素是有讲究的.首先,观察下可以发现,两边对角线的元素都是1
在这里插入图片描述
那么对角线也有主对角线和副对角线之分.所以其实需要一一判断.主对角线最为简单,就是当行和列相同时.

在这里插入图片描述

而副对角线仔细观察也能够找出规律,就是行坐标加列坐标等于他们的行或列总数-1,也就是7-1=6
在这里插入图片描述
因此这个主副对角线就完成了判断

if(i == j || i + j == 6)

而正上方的倒三角形是全由2组成的,仔细观察看出,其实就是在正对角线到副对角线的范围内的,也就是行小于列到行加列小于6的范围.

if (i<j&&i+j<6)

那么左边的三角形是全由3组成的,仔细观察看出,其实同上面差不多,只是说行一定比列要大了

if(i<j&&i+j<6)

在这里插入图片描述
同理,右边的三角形就是列一定比行大,并且行加列一定大于6

if(i<j && i + j> 6 )

那么最下面的一个三角形其实就是else的情况

至此,分析全部结束,接下来是代码

void main()
{
 int a[7][7];
 int i,j;
 for (i=0;i<7;i++)
   for (j=0;j<7;j++)
     {
/***********SPACE***********/
      if (i==j||i+j==6) a[i][j]=1;
/***********SPACE***********/
      else if (i<j&&i+j<6) a[i][j]=2;
      else if (i>j&&i+j<6) a[i][j]=3;
/***********SPACE***********/
      else if (i<j && i + j> 6 ) a[i][j]=4;
      else a[i][j]=5;
      }
   for (i=0;i<7;i++)
     {
     for (j=0;j<7;j++)
     printf("%4d",a[i][j]);
     printf("\n");
     }
}

这一题考察的点还是相当不错的,尤其是数组方面的知识,确实是一道不错的题

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值