C语言右上拐矩阵函数 c语言矩阵右移m个位置

c语言 分别输出m*m矩阵的左上角和右下角

直接输入对应元素即可。

创新互联建站是一家专业从事网站制作、成都网站设计、网页设计的品牌网络公司。如今是成都地区具影响力的网站设计公司,作为专业的成都网站建设公司,创新互联建站依托强大的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、营销型网站建设及网站设计开发服务!

m*m的矩阵,即a[m][m]这种形式的数组。

于是,左上角,就是第一行第一个元素,用C语言表示就是a[0][0];

右下角,也就是最后一行最后一个元素,C语言表示为a[m-1][m-1];

然后根据类型进行输出即可。如整型矩阵可以用语句

printf("左上角=%d, 右下角=%d\n", a[0][0], a[m-1][m-1]);

c语言,矩阵

上面那个程序是我写的,下面写的是两个2*2矩阵相加和相乘的程序(行数和列数可以在主函数中更改),不得不说一句,有关矩阵的东西就是麻烦:

#include stdio.h

#include stdlib.h

int** NewMatrix(int row,int col) //动态开辟一个数组

{

int i,j;

int** matrix;

matrix=(int **)malloc(sizeof(int *)*row);

for(i=0;irow;i++)

{

matrix[i]=(int*)malloc(sizeof(int)*col);

}

//输入矩阵的元素

printf("please input the array elements:\n") ;

for(i=0;irow;i++)

{

for(j=0;jcol;j++)

{

scanf("%d",matrix[i][j]);

}

}

return matrix;

}

//两矩阵相加a[row][col]+b[row][col]

int **addMatrix(int** a,int** b,int row,int col)

{

int i,j;

int** matrix;

//动态建立一个矩阵空间以存放运算结果

matrix=(int **)malloc(sizeof(int *)*row);

for(i=0;irow;i++)

{

matrix[i]=(int*)malloc(sizeof(int)*col);

}

//计算a+b

for(i=0;irow;i++)

{

for(j=0;jcol;j++)

{

matrix[i][j] = a[i][j] + b[i][j];

}

}

return matrix;

}

//两矩阵相乘a[row][com]*b[com][col]

int **multiplyMatrix(int **a,int **b,int row,int com,int col)

{

int i,j,k;

int** matrix;

//动态建立一个矩阵空间以存放运算结果

matrix=(int **)malloc(sizeof(int *)*row);

for(i=0;irow;i++)

{

matrix[i]=(int*)malloc(sizeof(int)*col);

}

//计算a+b

for(i=0;irow;i++)

{

for(j=0;jcol;j++)

{

matrix[i][j] = 0;

for(k=0;kcom;k++)

{

matrix[i][j] += a[i][k] * b[k][j];

}

}

}

return matrix;

}

void main()

{

int i,j;

int row = 2,col = 2; //行数和列数在此更改

int **a,**b,**c;

a = NewMatrix(row,col); //动态建立矩阵a

b = NewMatrix(row,col); //动态建立矩阵b

//调用函数,求两矩阵的和

c = addMatrix(a,b,row,col);

//输出两矩阵的和

printf("\na add b is:\n");

for(i=0;irow;i++)

{

printf("\n");

for(j=0;jcol;j++)

{

printf("%d ",c[i][j]);

}

}

//调用函数,求两矩阵的积

c = multiplyMatrix(a,b,row,row,col);

//输出两矩阵的积

printf("\na multiply b is:\n");

for(i=0;irow;i++)

{

printf("\n");

for(j=0;jcol;j++)

{

printf("%d ",c[i][j]);

}

}

}

本来程序还可以写得简单一些,由于你要求两矩阵同时能够相加和相乘,从而可以判定两矩阵的行数和列数应该是相等的,因而在函数传递参数的时候只要传一个就行了。但是考虑到程序的可移植性,我在写相加和相乘的子函数时,考虑了普遍性,即对于给定的任意的row和col(甚至row != col),加法和乘法都能够适用。然而这样一来,形参看起来就比较多了。你自己就情况而定吧,不懂的地方发我消息。

C语言-矩阵右上角乘m

①目标

存在N×N二维数组矩阵,

将数组右上半三角元素中的值乘以了m

~

②命令行

#include stdio.h

#include stdlib.h

#include string.h

#define N 5

~

③定义函数

viod fun(int a[ ][N],int m)

1.先行后列,全部遍历

{int i,j;

for(i=0;iN;i++)

for(j=0;jN;j++)

if(i=j)a[i][j]*=m;

}

2.先行后列,遍历右上三角

{int i,j;

for(i=0;iN;i++)

for(j=i;jN;j++)

/*0ijN,j为从i到N*/

a[i][j]*=m;

}

3.先列后行,全部遍历

{int i,j;

for(j=0;jN;j++)

for(i=0;iN;i++)

if(i=j)a[i][j]*=m;

}

4.先列后行,遍历右上三角

{int i,j;

for(j=0;jN;j++)

for(i=j;iN;i++)

/*0ijN,i为从j到N*/

a[i][j]*=m;

}

~

④主函数

void main()

{int a[N][N],m,i,j;

printf("The array\n");

for(i=0;iN;i++)

{for(j=0;jN;j++)

{a[i][j]=rand()%20;

/*二维数组元素a[i][j]为0到19的随机数。*/

printf("%4d",a[i][j]);}

printf("\n");

}

m=rand()%4;

/*矩阵右上半三角翻m倍,m为0到19的随机数。*/

printf("m=%4d\n",m);

fun(a,m);

/*利用fun函数,将二维数组右上角翻 m倍。*/

printf("the result\n");

for(i=0;iN;i++)

{for(j=0;jN;j++)

printf("%4d",a[i][j]);

/*遍历行列后,依次输出翻m倍后的二维数组的各元素。*/

printf("\n");}

}


标题名称:C语言右上拐矩阵函数 c语言矩阵右移m个位置
网页地址:http://azwzsj.com/article/dohecij.html