使用二维数组表示N阶矩阵

矩阵为N阶,使用二维数组a[N-1][N-1]表示。
矩阵元素使用二维数组元素a[i][j]表示。

访问矩阵元素时,遍历下标表示为a[i][j]i为行下标,j为列下标,它们的取值范围均为[0,N-1]

矩阵的术语与二维数组下标的对应关系如下表:

矩阵术语与二维数组下标对应关系
术语 含义 下标规律
主对角线 从矩阵的左上角至右下角的连线 i == j
上三角 主对角线以上的部分 i <= j
下三角 主对角线以下的部分 i >= j
副对角线 从矩阵的右上角至左下角的连线 i + j = N-1

举例:输入一个正整数 n (n<10),生成一个n阶矩阵,将方阵转置(即行列互换)后输出。
矩阵赋初值使用正序赋值方法:a[i][j] = i * n + j + 1

#define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
# include <stdlib.h>//malloc 

void Print(int a[9][9]);

int n;//阶数设置为全局变量

int main()
{
	int a[9][9];//定义9阶最大空间
	int temp;

	printf("输入矩阵阶数:");
	scanf("%d", &n);

    //赋初值过程
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			a[i][j] = i * n + j + 1;
		}
	}

	Print(a);

	printf("\n");
	printf("\n");
	printf("\n");
    
    //转置过程
	for (int k = 0; k < n; k++)
	{
		for (int l = 0; l < n; l++)
		{
			if (k <= l)
			{
                //以主对角线为轴,上三角元素与下三角元素对称互换
				temp = a[k][l];
				a[k][l] = a[l][k];
				a[l][k] = temp;
			}
		}
	}

	Print(a);
}

void Print(int a[9][9])
{
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			printf("%4d", a[i][j]);
		}
		printf("\n");
	}
}

猜你喜欢

转载自blog.csdn.net/jiang1126/article/details/127291653
今日推荐