题目描述: 创建一个m行n列的数组,将1—m*n的数字螺旋填入 方向为右下左上 输入说明: 输入正整数m和n,以空格分隔 输出说明: 输出填好的数组,数组元素之间用空格分隔,数组每行之间以换行分隔 输入示例: 4 5 输出示例: 1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12 11 10 9 8
源代码:
#include <stdio.h>
void luoxuan(int a[100][100], int m, int n)
{
int rowStart = 0, rowEnd = m - 1, colStart = 0, colEnd = n - 1;
int num = 1;
while (rowStart <= rowEnd && colStart <= colEnd)
{
for (int i = colStart; i <= colEnd; i++)
{
a[rowStart][i] = num;
num++;
}
rowStart++;
for (int i = rowStart; i <= rowEnd; i++)
{
a[i][colEnd] = num;
num++;
}
colEnd--;
for (int i = colEnd; i >= colStart; i--)
{
a[rowEnd][i] = num;
num++;
}
rowEnd--;
for (int i = rowEnd; i >= rowStart; i--)
{
a[i][colStart] = num;
num++;
}
colStart++;
}
}
int main()
{
int m, n;
int a[100][100];
scanf("%d %d",&m,&n);
luoxuan(a, m, n);
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}