将数字元素按蛇形循序输入数组中,并按上三角的形状输出

1.题目内容:

观察下图中的各行列数字的排列规律,编写一个C程序,将图中的数字(20 行、 20列)存入一个二维数组中,并按行列方式输出所有元素
在这里插入图片描述

2、算法设计

1.首先要解决1,2 ,3,4……输入数组的问题,首先元素存入数组时不是,按行列顺序储存,而是蛇形输入,所以应找出其中的规律,可以发现每一轮输入是以a[i][j]中i和j之和决定的,例如i+j=0为第1轮,i+j为1为第2轮,由此类推,其中每一次轮回j的值会递减,但i+j之和一直为i;
2.要解决蛇形输入还应解决a[][]中首位相继的问题,这里我们可以设置一个方向变量x,如果x为-1按其中的某中方式运行,如果为1则按另一种方式输入
3.最后一个问题便是将数组按三角型的样子输出

3.源代码

  #include <stdio.h>
  void main()
  {
      int i, j;
      int count = 1;
      int a[20][20];
      int bx=-1;
      for (i = 0;i <= 19;i++)
      {
           if (bx ==1)
           {
               for (j = 0;j <= i;j++)
               {
                    a[j][i - j] = count;
                    count++;
               }
           }
           if (bx == -1)
           {
               if (bx = -1)
               {
                    for (j = 0;j <= i;j++)
                    {
                        a[i-j][j] = count;
                        count++;
                    }
               }
           }
           bx  = bx * -1;
      }
         for (i = 0;i <= 19;i++)
      {
           for (j = 0;j <= 19 - i;j++)
           {
               printf("%-4d",a[i][j]);
           }
           printf("\n");
      }
  }

4.代码结果:

1   2   6   7   15  16  28  29  45  46  66  67  91  92  120 121 153 154 190 191
3   5   8   14  17  27  30  44  47  65  68  90  93  119 122 152 155 189 192
4   9   13  18  26  31  43  48  64  69  89  94  118 123 151 156 188 193
10  12  19  25  32  42  49  63  70  88  95  117 124 150 157 187 194
11  20  24  33  41  50  62  71  87  96  116 125 149 158 186 195
21  23  34  40  51  61  72  86  97  115 126 148 159 185 196
22  35  39  52  60  73  85  98  114 127 147 160 184 197
36  38  53  59  74  84  99  113 128 146 161 183 198
37  54  58  75  83  100 112 129 145 162 182 199
55  57  76  82  101 111 130 144 163 181 200
56  77  81  102 110 131 143 164 180 201
78  80  103 109 132 142 165 179 202
79  104 108 133 141 166 178 203
105 107 134 140 167 177 204
106 135 139 168 176 205
136 138 169 175 206
137 170 174 207
171 173 208
172 209
210
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值