数组问题
怎么用c语言实现如下数组的显示?
24 23 22 21 20
9 8 7 6 19
10 1 0 5 18
11 2 3 4 17
12 13 14 15 16
35 34 33 32 31 30
16 15 14 13 12 29
17 4 3 2 11 28
18 5 0 1 10 27
19 6 7 8 9 26
20 21 22 23 24 25
---thanks
问题点数:100、回复次数:2Top
1 楼boyfling(GGS)回复于 2003-06-04 01:44:31 得分 100
这是我学c语言正式编的第一个程序,很有意思。那个时候写了30行左右,几个循环就写完了,变量全是a,b,c,i,j,k这些,保证谁也看不懂那种。
^_^,有兴趣刚才重写了一个。老了,30行的功夫不在了。
代码如下:(TC3.0编译通过)Top
2 楼boyfling(GGS)回复于 2003-06-04 01:46:08 得分 0
#include <stdio.h>
#include <conio.h>
#define N 8
#define RIGHT 0
#define DOWN 1
#define LEFT 2
#define UP 3
int main()
{
int Array[N][N];
int iPosX;
int iPosY;
int iWay=RIGHT;
int iStep=N*N-1;
for( iPosX=0; iPosX<N; iPosX++ )
for( iPosY=0; iPosY<N; iPosY++ ) Array[iPosX][iPosY]=-1;
Array[0][0]=iStep;
iPosX=0;
iPosY=0;
while( iStep >= 1 )
{
switch( iWay )
{
case RIGHT:
iPosY++;
if( iPosY >= N-1 || Array[iPosX][iPosY+1] != -1 ) iWay=DOWN;
break;
case DOWN:
iPosX++;
if( iPosX >= N-1 || Array[iPosX+1][iPosY] != -1 ) iWay=LEFT;
break;
case LEFT:
iPosY--;
if( iPosY <= 0 || Array[iPosX][iPosY-1] != -1 ) iWay=UP;
break;
case UP:
iPosX--;
if( iPosX <= 0 || Array[iPosX-1][iPosY] != -1 ) iWay=RIGHT;
break;
}
Array[iPosX][iPosY]=--iStep;
}
clrscr();
for( iPosX=0; iPosX<N; iPosX++ )
{
for( iPosY=0; iPosY<N; iPosY++ )
printf("%3d", Array[iPosX][iPosY]);
printf("\n");
}
getch();
return 0;
}Top



