一、编写一个矩阵运算程序包括(矩阵加减乘转置、求矩阵最大最小元素对角线元素之和、下三角、上三角之和)
个程序是我两年前写的,之后也没修改过,现在看看感觉有点有好意思拿出来,因为我现在看来有点幼稚,想再重新写一下,但也没时间去写。看你需要这方面的。
这个程序实现了你所要的大部分功能,但对上、下三角之和没有实现,你可以自己写一下。
我试了一下,就献丑拿出来了,原理很简单,就是线性代数中的,把数学公式转化成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;
}