编写一个矩阵运算程序包括(矩阵加减乘转置、

州科信息网 2023-01-12 15:54 编辑:admin 247阅读

一、编写一个矩阵运算程序包括(矩阵加减乘转置、求矩阵最大最小元素对角线元素之和、下三角、上三角之和)

个程序是我两年前写的,之后也没修改过,现在看看感觉有点有好意思拿出来,因为我现在看来有点幼稚,想再重新写一下,但也没时间去写。看你需要这方面的。

这个程序实现了你所要的大部分功能,但对上、下三角之和没有实现,你可以自己写一下。

我试了一下,就献丑拿出来了,原理很简单,就是线性代数中的,把数学公式转化成C/C++代码就行了

二、C语言编写 螺旋矩阵

#include #include #include #define N 5 void main() { int arry[N][N]={0}; int i,j,a,b; int n=1; int L; L=(N+1)/2; for (i=0;i { b=i; for (a=i;a { arry[a][b]=n++; } a--; for (b=i+1;b { arry[a][b]=n++; } b--; for (a=N-i-2;a>=i;a--) { arry[a][b]=n++; } a++; for (b=N-i-2;b>i;b--) { arry[a][b]=n++; } } for(a=0;a { for(b=0;b { printf(%5d,arry[a][b]); } printf(\n\n); } getchar(); getchar(); } //scanf(%d,&n); //while(1) //{ // for(j=0;j // { // if(j==0) // { // for(i=0;i // { // arry[i][j]=i; // //printf(%d \n,arry[i][j]); // } // } // else if(j==n-1) // { // for(i=0;i // { // arry[i][j]=3*n-2-i; // //printf(%d \n,arry[i][j]); // } // } // } // for(i=0;i // { // if(i==0) // { // for(j=1;j // { // arry[i][j]=4*n-3-j; // } // } // if(i==n-1) // { // for(j=1;j // { // arry[i][j]=n+j; // } // } // } // // n=n-1; // if(n==0)break; //}

三、输入N*N阶矩阵,用函数编程计算并输出其两条对角线上的各元素之和(用c语言编程),,求哪位大神帮忙

#include #define M 100int main() {int a[M][M],i,j,msum = 0,ssum = 0;int N;printf(input N:);scanf(%d,&N);printf(请输入%d*%d的矩阵:

,N,N);for(i = 0; i < N; ++i) {for(j = 0; j < N; ++j){scanf(%d,&a[i][j]);}}for(i = 0; i < N; ++i) {msum += a[i][i];ssum += a[i][N-1- i];}printf(主对角线的和是:%d

斜对角线的和是:%d

,msum,ssum);return 0;}输入N*N阶矩阵,用函数编程计算并输出其两条对角线上的各元素之和(用c语言编程),,求哪位大神帮忙

四、c语言编程一个n阶矩阵A的伴随矩阵呢

/*自从学线代就开始琢磨怎样将复杂的矩阵进行编程,历经两个月,终于实现了这个愿望。这个程序使我弄清楚了怎样使用二级指针实现动态二维数组,很有研究价值!希望能给各位学编程的gg&mm带来一些启发,去研究更高级的问题。*/

#include <iostream.h>

void zhuanzhi()

{

int a,b;

double **x,**p;

cout<<输入矩阵的行数,列数:;

cin>>a>>b;

x=new double *[a];

for(int i=0;i<a;i++)

x[i]=new double[b];

cout<<输入数据:\n;

for(i=0;i<a;i++)

for(int j=0;j<b;j++)

cin>>x[i][j];

//////////////////////开始转置:

p=new double *[b];

for(i=0;i<b;i++)

p[i]=new double[a];

for(i=0;i<b;i++)

for(int j=0;j<a;j++)

//////////////////////////////输出转置矩阵

for(i=0;i<b;i++)

{for(int j=0;j<a;j++)

cout<<p[i][j]<<'\t';

cout<<endl;

}

for(i=0;i<a;i++)

delete x;

delete p;

p=0;

x=0;

}

void jia()

{

int a1,b1,a2,b2;

double **x1,**x2;

cout<<输入第一个行数,列数:;

cin>>a1>>b1;

cout<<输入第二个行数,列数:;

cin>>a2>>b2;

if(a1!=a2 ||b1 !=b2)

////x1[][]

x1=new double *[a1];

for(int i=0;i<a1;i++)

x1[i]=new double[b1];

cout<<输入第一个矩阵:\n;

for(i=0;i<a1;i++)

for(int j=0;j<b1;j++)

cin>>x1[i][j];

//////x2[][]

x2=new double *[a2];

for(i=0;i<a2;i++)

x2[i]=new double[b2];

cout<<输入第二个矩阵:\n;

for(i=0;i<a2;i++)

for(int j=0;j<b2;j++)

cin>>x2[i][j];

cout<<相加后:<<endl;

for(i=0;i<a1;i++)

{

for(int j=0;j<b1;j++)

{

x1[i][j]+=x2[i][j];

cout<<x1[i][j]<<\t;

}

cout<<endl;

}

for(i=0;i<a1;i++)

delete x1;x1=0;

delete x2;x2=0;

}

void jian()

{

int a1,b1,a2,b2;

double **x1,**x2;

cout<<输入第一个行数,列数:;

cin>>a1>>b1;

cout<<输入第二个行数,列数:;

cin>>a2>>b2;

if(a1!=a2 ||b1 !=b2)

////x1[][]

x1=new double *[a1];

for(int i=0;i<a1;i++)

x1[i]=new double[b1];

cout<<输入第一个矩阵:\n;

for(i=0;i<a1;i++)

for(int j=0;j<b1;j++)

cin>>x1[i][j];

//////x2[][]

x2=new double *[a2];

for(i=0;i<a2;i++)

x2[i]=new double[b2];

cout<<输入第二个矩阵:\n;

for(i=0;i<a2;i++)

for(int j=0;j<b2;j++)

cin>>x2[i][j];

cout<<相减后:<<endl;

for(i=0;i<a1;i++)

{

for(int j=0;j<b1;j++)

{

x1[i][j]-=x2[i][j];

cout<<x1[i][j]<<\t;

}

cout<<endl;

}

for(i=0;i<a1;i++)

delete x1;x1=0;

delete x2;x2=0;

}

void cheng()

{

int a1,b1,a2,b2;

double **x1,**x2;

cout<<输入第一个行数,列数:;

cin>>a1>>b1;

cout<<输入第二个行数,列数:;

cin>>a2>>b2;

if(b1!=a2)

////x1[][]

x1=new double *[a1];

for(int i=0;i<a1;i++)

x1[i]=new double[b1];

cout<<输入第一个矩阵:\n;

for(i=0;i<a1;i++)

for(int j=0;j<b1;j++)

cin>>x1[i][j];

//////x2[][]

x2=new double *[a2];

for(i=0;i<a2;i++)

x2[i]=new double[b2];

cout<<输入第二个矩阵:\n;

for(i=0;i<a2;i++)

for(int j=0;j<b2;j++)

cin>>x2[i][j];

cout<<相乘后:<<endl;

double **r=new double *[a1];

for(i=0;i<a1;i++)

r[i]=new double[b2];

////乘开始:

for(int q=0;q<a1;q++)

for(int w=0;w<b2;w++)

{

r[q][w]=0;

for(int j=0;j<b1;j++)

r[q][w]+=x1[q][j]*x2[j][w];

}

//输出

for( q=0;q<a1;q++)

{

for(int w=0;w<b2;w++)

{

cout<<r[q][w]<<\t;

}

cout<<endl;

}

for(i=0;i<a1;i++)

for(i=0;i<a2;i++)

delete []x2[i];

delete x1;x1=0;

delete x2;x2=0;

delete r;r=0;

}

int main()

{

int c=1;

while(c)

{

cout<<*********************************************************\n;

cout<<\t(1)转置\n\t(2)矩阵加法\n\t(3)矩阵减法\n\t(4)矩阵乘法\n\t(0)退出<<endl;

cout<<*********************************************************\n;

cin>>c;

switch(c)

{

case 0:break;

case 1:zhuanzhi();break;

case 2:jia();break;

case 3:jian();break;

case 4:cheng();break;

default:cout<<Please retry!<<endl;

}

}

return 0;

}