C 语言 对角线添充二维数组

  实现 这种 "对角线" 添充二维数组的算法 ,写了一个实现 : 主要是的想法是设定几种状态 比如 :"横加竖减 横减竖加  改变状态横加 改变状态竖加 " 在某个特殊的情况下 改变状态. 就可以用一个循环 来完成了. 

View Code
 1 #include <stdio.h>
2
3 void numBox(int x,int y)
4 {
5 int a[x][y]; //二维数组
6 int i,j; //坐标
7 int k; //循环变量
8 int mode = 3; //状态 有三种 一种是 横加竖减 横减竖加 改变状态横加 改变状态竖加
9 i = j = k = 0; //初始化
10
11 for(k = 0;k< x*y;k++)
12 {
13 //printf("i = %d j = %d K = %d\n",i,j,k+1);
14 a[i][j] = k + 1;
15
16 if( mode == 0) //如果mode 为 0 则 横加竖减
17 {
18 i ++;
19 j --;
20 }
21 else if (mode == 1) //如果mode 为 0 则 横减竖加
22 {
23 i -- ;
24 j ++ ;
25 }
26 else // 改变状态横加 改变状态竖加
27 {
28 if(i == x -1)
29 {
30 mode = 1;
31 j ++;
32 continue;
33 }
34 else if(j == y -1)
35 {
36 mode = 0;
37 i ++;
38 continue;
39 }
40 else if(i == 0)
41 {
42 mode = 0;
43 j ++;
44 continue;
45 }
46 else
47 {
48 mode = 1;
49 i ++;
50 continue;
51 }
52 }
53 if(i == 0 || j == 0 || i == x -1 || j == y -1) // 这些特殊值时. 需要把状态改为 3
54 {
55 mode = 3;
56 }
57 }
58 //输出
59 for(int m = 0;m<x;m++)
60 {
61 for(int n = 0;n < y;n++)
62 {
63 printf("%3d",a[m][n]);
64 }
65 printf("\n");
66 }
67 }
68
69 int main()
70 {
71 //可以自定义 二维数组 的长及宽
72 numBox(3,8); //调用函数
73 }

输出的结果:

转载于:https://www.cnblogs.com/easyfrog/archive/2011/12/28/2304715.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值