69,371
社区成员
发帖
与我相关
我的任务
分享
//定义一个m行n列的数组,比如3行4列
// 1 2 4 7
// 3 5 8 10
// 6 9 11 12
#include <stdio.h>
#include <conio.h>
int a[20][20];
int m,n;
int x,y;
int d;
void find_first_0(int *fx,int *fy) {
int i,j;
*fx=0;
*fy=0;
for (i=0;i<m;i++) {
for (j=0;j<n;j++) {
if (0==a[i][j]) {
*fx=j;
*fy=i;
return;
}
}
}
}
void main() {
printf("Input m(1..20),n(1..20):");
scanf("%d,%d",&m,&n);
if (m<1 || 20<m || n<1 || 20<n) return;
for (y=0;y<m;y++) for (x=0;x<n;x++) a[y][x]=0;
d=1;
x=0;
y=0;
while (1) {
a[y][x]=d;
d++;
while (1) {
x--;
if (x<0) break;
y++;
if (y>=m) break;
a[y][x]=d;
d++;
}
find_first_0(&x,&y);
if (0==x && 0==y) break;
}
for (y=0;y<m;y++) {
for (x=0;x<n;x++) {
printf("%2d ",a[y][x]);
}
printf("\n");
}
getch();
}