69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
void csh ( const int i, const int m, int arr[i][m] );
void cl ( const int i, const int m, int arr[i][m] );
void print ( const int i, const int m, int arr[i][m] );
int main(int argc, char **argv)
{
int x,y;
printf ( "X,Y:" );
scanf ( "%d,%d", &x, &y );
int arr[x+2][y+2];
printf ( "%d\t%d\n", x, y );
csh ( x+2, y+2, arr );
cl ( x+2, y+2, arr );
print ( x+2, y+2, arr );
return 0;
}
void csh ( int i, const int m, int arr[i][m] ) {
int j,k;
for ( j = 0; j < i; j++ ){
for ( k = 0; k < m; k++ ) {
arr[j][k] = 0;
}
}
for ( j = 0; j < i; j++ ) {
arr[j][0] = arr[j][m-1] = -1;
}
for ( j = 0; j < m; j++ ) {
arr[0][j] = arr[i-1][j] = -1;
}
}
void cl (const int i, const int m, int arr[i][m]) {
int x,y,j,k,n;
x = y = 1;
j = k = n = 0;
while ( arr[x+j][y+k] == 0){
while ( arr[x+j][y+k] == 0){
arr[x += j][y += k] = n++;
}
if ( arr[x][y+1] == 0 ){
j = 0;
k = 1;
} else if ( arr[x+1][y] == 0 ) {
j = 1;
k = 0;
} else if ( arr[x][y-1] == 0 ) {
j = 0;
k = -1;
} else {
j = -1;
k = 0;
}
}
}
void print ( const int i, const int m, int arr[i][m] ) {
int j,k;
for ( j = 1; j < i-1; j++ ){
for ( k = 1; k < m-1; k++ ) {
printf ( "%5d" , arr[j][k] );
}
putchar('\n');
}
}