- no.1 输出单位矩阵
- no.2 求数组每一行最小元素
- no.3 判断对称矩阵
NO.1 输出单位矩阵
在矩阵的乘法中,有一种矩阵起着特殊的作用,如同数的乘法中的1,这种矩阵被称为单位矩阵。它是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为1。除此以外全都为0。根据单位矩阵的特点,任何矩阵与单位矩阵相乘都等于本身
输出a[5][5]单位矩阵
#include <stdio.h>
int main( )
{
int a[6][6],i,j ; //数组下标虽然从零开始计算,但是数据可以选择从下标1开始运算输出
for (i=1; i<6 ; i++) //第0行与第0列不参与运算与输出
for (j=1 ; j<6 ; j++)
a[i][j]=(i/j)*(j/i) ; //无论i>j还是j>i,(i/j)*(j/i)结果均为0
for (i=1; i<6 ; i++)
{
for (j=1 ; j<6 ; j++)
printf("%2d",a[i][j]) ; //%2d是为了输出元素间有间隔
printf("\n"); //每行结束要换行
}
return 0;
}
小结
选择从1开始循环,方便除法运算;
由于第0行与第0列不参与运算,所以定义时行(列)均多1行(列);
输出注意格式,%md可以让格式美观一些;
输出每行注意换行;
NO.2 求数组每行最小元素
#include <stdio.h>
int main( )
{
int x[2][3]= {5,4,6,10,8,9};
int m[2],i,j;
for (i=0; i<2; i++)
{
m[i]=x[i][0]; //把第0列元素给一维数组
for(j=1; j<3; j++)
if(x[i][j]<m[i])
m[i]=x[i][j]; //把每行最小元素给一维数组
}
for (i=0; i<2; i++)
printf("%d\n", m[i]);
for(i=0; i<2; i++)
{
for(j=0; j<3; j++)
printf("%3d",x[i][j]);
printf("\n");
}
return 0;
}
NO.3 判断对称矩阵
对称矩阵(Symmetric Matrices)是指元素以主对角线为对称轴对应相等的矩阵。在线性代数中,对称矩阵是一个方形矩阵,其转置矩阵和自身相等。
#include <stdio.h>
int main( )
{
int a[4][4]= {1,2,4,7,2,3,5,8,4,5,6,9,7,8,9,10};
int i,j,found=0;
for(i=0; i<4; i++)
for(j=0; j<=i; j++)
if(a[i][j]!=a[j][i])
{
found=1;
break;
}
if(found)
printf("No!\n");
else
printf("Yes!\n");
return 0;
}