今天上机编了一个小程序,觉得挺有意思的。拿出来和大家一起分享一下。
题目大体意思如下:
根据用户键入的值,输出如下格式的数字旋转方阵。
例:输入4
输出方阵如下:
1 12 11 10
2 13 16 9
3 14 15 8
4 5 6 7
代码如下:
static void Main(string[] args)
{
Console.Write("请输入n的值:");
int n = int.Parse(Console.ReadLine());
int[,] a = new int[n, n];
int i = 0, j = 0;//二维数组的两个下标
int cout = 1;
int m = 0; //当前圈数
;
while (m < n / 2)//依次为每一圈得元素赋值
{
for (i = m, j = m; i < n - m - 1; i++)
a[i, j] = cout++;
for (j = m; j < n - m - 1; j++)
a[i, j] = cout++;
for (i = n - m - 1; i > m; i--)
a[i, j] = cout++;
for (j = n - m - 1; j > m; j--)
a[i, j] = cout++;
m++;
}
if (n % 2 != 0)//n为奇数的情况,为中间元素赋值
a[n / 2 , n / 2 ] = n * n;
Console.WriteLine("该方阵如下所示:");//输出方阵
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (a[i, j] < 10)
Console.Write(" {0}", a[i, j]);
else
Console.Write(" {0}", a[i, j]);
}
Console.Write("/n/n");
}
Console.WriteLine("Press Anykey to continue...");
Console.ReadLine();
}
}
}
希望大家能和我多多交流。