主题:有关"自然数转圈"的问题
zoa
[专家分:0] 发布于 2007-03-27 09:13:00
题目是这样的
打印N*N的一个数字方阵.比如N=4,那么图形就是
1 2 11 10
2 12 16 9
3 14 15 8
4 5 6 7
应该如何用数组编写程序?[em4]
回复列表 (共9个回复)
沙发
staa [专家分:3690] 发布于 2007-03-29 11:50:00
以前的贴子里有
板凳
Lovely哆啦 [专家分:1360] 发布于 2007-03-30 20:39:00
题目好像有问题
本题应该是一个四角螺旋
1 12 11 10
2 13 16 9
3 14 15 8
4 5 6 7
3 楼
Matodied [专家分:7560] 发布于 2007-04-17 21:39:00
CLS
INPUT n
DIM a(n, n): x = 1: y = 1: s = 0
k = n
DO
DO WHILE a(x, y) = 0
s = s + 1
a(x, y) = s
x = x + 1
IF x > k THEN EXIT DO
LOOP
x = x - 1: y = y + 1
DO WHILE a(x, y) = 0
s = s + 1
a(x, y) = s
y = y + 1
IF y > k THEN EXIT DO
LOOP
y = y - 1: x = x - 1
DO WHILE a(x, y) = 0
s = s + 1
a(x, y) = s
x = x - 1
IF x < 1 THEN EXIT DO
LOOP
x = x + 1: y = y - 1
DO WHILE a(x, y) = 0
s = s + 1
a(x, y) = s
y = y - 1
IF y < 1 THEN EXIT DO
LOOP
x = x + 1: y = y + 1: k = k - 1
LOOP UNTIL s = n * n
FOR i = 1 TO n: FOR j = 1 TO n
PRINT USING "####"; a(i, j);
NEXT j: PRINT : NEXT i: END
4 楼
wangyunchaoPIG [专家分:130] 发布于 2007-04-22 17:20:00
CLS
INPUT n
DIM a(n, n): x = 1: y = 1: s = 0
k = n
DO
DO WHILE a(x, y) = 0
s = s + 1
a(x, y) = s
x = x + 1
IF x > k THEN EXIT DO
LOOP
x = x - 1: y = y + 1
DO WHILE a(x, y) = 0
s = s + 1
a(x, y) = s
y = y + 1
IF y > k THEN EXIT DO
LOOP
y = y - 1: x = x - 1
DO WHILE a(x, y) = 0
s = s + 1
a(x, y) = s
x = x - 1
IF x < 1 THEN EXIT DO
LOOP
x = x + 1: y = y - 1
DO WHILE a(x, y) = 0
s = s + 1
a(x, y) = s
y = y - 1
IF y < 1 THEN EXIT DO
LOOP
x = x + 1: y = y + 1: k = k - 1
LOOP UNTIL s = n * n
FOR i = 1 TO n: FOR j = 1 TO n
PRINT USING "####"; a(i, j);
NEXT j: PRINT : NEXT i: END
5 楼
Matodied [专家分:7560] 发布于 2007-04-22 20:55:00
楼上的,你模仿我的程序.
6 楼
lglupc [专家分:0] 发布于 2007-08-02 21:31:00
要是由中心向外转怎么写呢?用c语言写的程序有吗?
7 楼
小精灵1号 [专家分:1040] 发布于 2007-08-08 10:00:00
INPUT a
b = a * 2
d = a
c = 1 - d
DIM h(a * a)
FOR i = b TO 2 STEP -1
FOR j = 1 TO i \ 2
c = c + d
g = g + 1
h(c) = g
NEXT
d = (a + 1 - ABS(d)) * (d \ a - d MOD a)
NEXT
FOR i = 1 TO a * a
PRINT USING "###"; h(i);
IF i MOD a = 0 THEN PRINT
NEXT
8 楼
网虫一号 [专家分:1230] 发布于 2007-08-09 10:49:00
cls
INPUT a
b = a * 2:n = a:c = 1 - d
DIM a(a * a)
FOR i = b TO 2 STEP -1
FOR j = 1 TO i \ 2
c = c + n:m = m + 1:a(c) = m
NEXT
n = (a + 1 - ABS(n)) * (n \ a - n MOD a)
NEXT
FOR i = 1 TO a * a
PRINT USING "###"; a(i);:IF i MOD a = 0 THEN PRINT
NEXT
end
9 楼
shenjiayu [专家分:20] 发布于 2007-08-11 19:51:00
这个也可以用FOR-NEXT循环的
我来回复