用C语言描写四级报名系统,[程序设计]关于 四级的一个C语言题目 (和我好多同学想了好久也没想出来)...

这是Z字型扫描,我写了一个程序,

算法主要是根据扫描的方向

程序根据输入的n在一个数组中给出1-n每个数的坐标

#include "malloc.h"

#include "stdlib.h"

typedef struct

{

int direct; //当前节点运动方向: 0, 水平 1, 垂直 2, 斜向上 3, 斜向下

int x; //目标位置横坐标

int y; //目标位置纵坐标

} node_t;

static scan(node_t* ns, int n)

{

if(ns[n-1].direct == 0)

{

ns[n].x = ns[n-1].x + 1;

ns[n].y = ns[n-1].y;

ns[n].direct = 3;

}

else if(ns[n-1].direct == 1)

{

ns[n].direct = 2;

ns[n].x = ns[n-1].x;

ns[n].y = ns[n-1].y + 1;

}

else if(ns[n-1].direct == 2)

{

ns[n].x = ns[n-1].x + 1;

ns[n].y = ns[n-1].y - 1;

if(ns[n-1].y == 1)

ns[n].direct = 0;

else

ns[n].direct = 2;

}

else if(ns[n-1].direct == 3)

{

ns[n].x = ns[n-1].x - 1;

ns[n].y = ns[n-1].y + 1;

if(ns[n-1].x == 1)

ns[n].direct = 1;

else

ns[n].direct = 3;

}

}

int main(int argc, char* argv[])

{

int n = atoi(argv[1]);

node_t* ns = (node_t*) malloc( sizeof(node_t)*n );

ns[0].direct = 1;

ns[0].x = 0;

ns[0].y = 0;

for(int i = 1; i < n; i++)

{

scan(ns, i);

}

free(ns);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值