通过数组来打印一系列矩阵是C 中很常见的题目。今天就使用数组来打印一个层叠矩阵,输入行数与起始数字,实现以下类似的输出:1 4 9 16
2 3 8 15
5 6 7 14
10 11 12 13
起始数放在左上角,然后从起始数开始在现在同列然后在同行递增,层层叠叠的形成一个层叠矩阵。
程序如下:
#include <stdio.h>
int main()
{
int start,row;
int i, j, k,n;
int arr[10][10];
printf("please enter start and row:");
scanf("%d%d", &start,&row);
arr[0][0] = start;
n = start + 1;
for (i = 0; i < row; i++)
{
for (j = 0; j < i + 2; j++, n++)
arr[i + 1][j] = n;
for (k = i; k >=0; k--,n++)
arr[k][j-1] = n;
}
for (i = 0; i < row; i++)
{
for (j = 0; j < row; j++)
printf("%2d ", arr[i][j]);
printf("\n");
}
return 0;
}
该程序通过建立一个10 10 的数组,输入行数和起始数。通过3个for循环,2个嵌套for循环,先在一行递增打印,再在一列上递减打印,最后利用for循环输出层叠矩阵。该程序注意点是for循环的灵活运用以及变量的恰当使用。
输出结果:
please enter start and row:1 5
1 4 9 16 25
2 3 8 15 24
5 6 7 14 23
10 11 12 13 22
17 18 19 20 21
请按任意键继续. . .