c语言 矩阵相关
小白一枚,想以记录的形式来巩固一下自身知识,也可以给观众姥爷们提供一下思路。
生命不止,代码不断。
矩阵转置:
#include<stdio.h>
#define N 10
void Transpose(int a[][N], int n);
void InputMatrix(int a[][N], int n);
void PrintMatrix(int a[][N], int n);
int main()
{
int n,arr[N][N];
printf("Input n:\n");
scanf("%d",&n);
printf("Input %d*%d matrix:\n",n,n);
InputMatrix(arr,n);
Transpose(arr,n);
PrintMatrix(arr,n);
return 0;
}
void InputMatrix(int a[][N], int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
}
void Transpose(int a[][N], int n)
{
int i,j,temp;
printf("The transposed matrix is:\n");
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++) //保证元素只换一次
{
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
}
}
void PrintMatrix(int a[][N], int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
}
矩阵乘法:
//仅举一列。数值自行调换。
void arymul(int a[4][5], int b[5][3], int c[4][3])
{
int i, j, k;
int temp;
for(i = 0; i < 4; i++){
for(j = 0; j < 3; j++){
temp = 0;
for(k = 0; k < 5; k++){ //由于前者列数与后者的行数相同,故可用一个k值实现对两者行或列的遍历
temp += a[i][k] * b[k][j];
}
c[i][j] = temp;
printf("%d/t", c[i][j]);
}
printf("%d/n");
}
}