数组a,b分别是n行m列和m行n列二维数组,编程求a*b放入c数组中。

作者&投稿:铎郭 (若有异议请与网页底部的电邮联系)
二维数组a是m行n列的数组,二维数组b是n行m列的数组,期中0<m,~


#include int main(){int x,i,j,m,n,a[20][20],b[20][20]; scanf("%d%d",&m,&n); for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); for(i=0;i<m;i++) for(j=0;j<n;j++) b[j][i]=a[i][j]; for(i=0;i<n;i++) {for(j=0;j<m;j++) printf("%4d",b[i][j]); printf("
"); } return 0;}

答案是C
答案是C

这是 b[j][k] * c[k][i] = a[j][i] 的程序。
你可以修改成 a*b=c 或 b*a=c; (矩阵乘法交换律不成立!)
#include<stdio.h>
/*---------------------
b[j][k] * c[k][i] = a[j][i]
*---------------------*/
void matrix(int **b,int **c, int **a, int nx, int ny, int nk)
{
int i,j,k;
for (j=0;j<ny;j++)for(i=0;i<nx;i++)a[j][i]= 0;
for(j=0;j<ny;j++){
for(i=0;i<nx;i++){
for(k=0;k<nk;k++)a[j][i]+= b[j][k]*c[k][i];
};
};
}

int main(){
int i,j,k,tmp;
int b_row,b_col;
int c_row,c_col;
int a_row,a_col;
int **b,**c,**a;
printf("please enter m n of matrix B\n");
scanf("%d %d",&b_row,&b_col);
c_row = b_col; // n
c_col = b_row; // m
a_row = b_row;
a_col = c_col;
a = (int **) malloc(sizeof(int *) * a_row);
for (j=0;j<a_row;j++){
a[j] = (int *) malloc(sizeof(int) * a_col);
}
b = (int **) malloc(sizeof(int *) * b_row);
for (j=0;j<b_row;j++){
b[j] = (int *) malloc(sizeof(int) * b_col);
}
c = (int **) malloc(sizeof(int *) * c_row);
for (j=0;j<c_row;j++){
c[j] = (int *) malloc(sizeof(int) * c_col);
}
if (!c[c_row-1]) {
printf("no enought memory\n");exit(0);
}

printf("Please input int matrix b[%d][%d]\n",b_row,b_col);
for (j=0;j<b_row;j++)
for (i=0;i<b_col;i++){
scanf("%d",&tmp);
b[j][i] = tmp;
}
printf("Please input int matrix a[%d][%d]\n",c_row,c_col);
for (j=0;j<c_row;j++)
for (i=0;i<c_col;i++){
scanf("%d",&tmp);
c[j][i] = tmp;
}
matrix( b ,c,a, a_col, a_row, b_col);
printf("results:\n");
for(j=0;j<a_row;j++)
{
for (i=0;i<a_col;i++) printf("%d ",a[j][i]);
printf("\n");
};

for(i=0;i<a_row;i++) free((void *)a[i]); free((void *)a);
for(i=0;i<b_row;i++) free((void *)b[i]); free((void *)b);
for(i=0;i<c_row;i++) free((void *)c[i]); free((void *)c);

return 0;
}


线性代数,A,B为n阶方阵,AB≠0,是否一定有r(A)+r(B)≥n,请给出具体过程...
设A,B为n阶方阵,且AB=0,证明:R(A)+R(B)小于等于n 因为AB=0,所以矩阵B的列向量都是线性方程组AX=0的解;则矩阵B的列向量组的秩,不大于方程组AX=0的基础解系的个数,也就是说矩阵B的列向量组可以由AX=0 的基础解系线性表示,所以R(B) <= n-R(A),故R(A)+R(B)小于等于n。

向量组A能由向量组B线性表出,向量组B不能由向量组A线性表出
我们都知道矩阵的秩其实就是独立方程组的个数,也就是线性无关方程组的个数。当方程组的个数小于未知数(列数)的个数时,方程组有无穷多解。AX=b,rA不等于r(A,b)时,无解。也就是b不能由A中的向量组线性表示。rA等于r(A,b)=n时,有唯一解。也就是A中的向量组线性无关,但是加上...

线性代数里向量组A和向量组B等价的充要条件的证明没看懂
首先,(A,B)表示矩阵A写在左边矩阵B写在右边,(B,A)表示矩阵B写在左边矩阵A写在右边。其次,虽然行中数值顺序有变化,但是这个矩阵的每一列的数值从上至下顺序未变。最后,用初等列变换求矩阵的秩,可以改变每一列的顺序,矩阵的秩不变。综上可知,R(A,B)=R(B,A)数值分析的主要分支致力...

设A,B均为m×n矩阵,求证:r(A+B)≤r(A)+r(B).
【答案】:设m×n矩阵A,B及A+B的列向量组分别为α1,α2,…,αn ①β1,β2,…,βn ②γ1,γ2,…,γn ③其中γi=αi+βi(i=1,2,…n).又设A,B的秩分别为s,t,而且不妨设α1,α2,…,αs与β1,β2,…,βt,分别为向量组①与②的极大无关组.由于向量组...

矩阵A, B是非零矩阵,则r(A)+ r(B)= n
1、A,B都是n阶非零矩阵,所以r(A)>0,r(B)>0,再用不等式r(A)+r(B)-n0,r(B)>0,r(A)+r(B)<=n;2、在数学中,矩阵是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出;3、无限矩阵发生在行星理论和原子...

R(A, B)是什么意思?
AX=B,那么 R(A,B) 就是方程组的增广矩阵的秩。秩是线性代数术语,在线性代数中,一个矩阵A的列秩是 A的线性无关的纵列的极大数目。类似地,行秩是 A的线性无关的横行的极大数目。矩阵的列秩和行秩总是相等的,因此它们可以简单地称作矩阵 A的秩。通常表示为 rk(A) 或 rank A。

共轭转置和伴随矩阵都用A^*表示,请问它们是一样的概念么?
不一样。共轭转置的性质:(AB)* = B*A*,其中A为m行n列的矩阵,B为n行p列矩阵。(A*)* = A 若A为方阵,则det(A*) = (det A)*,且tr(A*) = (tr A)A是可逆矩阵, 当且仅当 A*可逆,且有inv(A*) = (inv(A))上式inv表示矩阵的逆。.A*的特征值是A的特征值的复共轭。<...

为什么a与b行等价则a的行向量与b的行向量等价
1L瞎说,这明显是线性代数的内容,和向量有什么关系。这个问题可以这样理解(也是证明过程)。我们用A、B代表两个矩阵,a1,a2,...an;b1,b2,...bn分别代表A、B的行向量组。由A、B行等价可知,A可以通过初等行变换变为B,即A的行向量组通过一系列的线性运算可得到B的行向量组,也即b1,b2,.....

matlab中向量和矩阵有什么区别?
s.*A标量s分别与数组A的元素之积 s*A标量s分别与矩阵A的元素之积 s.\/B, B.\\s标量s分别被数组B的元素除 s*inv(B)矩阵B的逆乘标量s A.^n数组A的每个元素的n次方 A^n A为方阵时,矩阵A的n次方 A+B数组对应元素的相加 A+B矩阵相加 A-B数组对应元素的相减 A-B矩阵相...

...证明:|E+AB|=|E+BA|,其中A为m行n列矩阵,B为n行m列矩阵,E为单位矩阵...
简单分析一下,答案如图所示

潜江市15286445454: 设二维数组A[1.. m,1.. n](即m行n列)按行存储在数组B[1.. m*n]中,则二维数组元素A[i,j], -
令官爱西: B A[i][j] 的前面有i-1行,而每行n个元素,所以 (i-1)*n, 第i行有j个元素,所以(i-1)*n + j ,但是计算机中,数组的下标是从0开始的,所以需要减一 最终结果就为(i-1)*n + j -1

潜江市15286445454: 输入一个正整数,判断该数是否为:素数、水仙花数、回文数. 矩阵a,b分别是n行m列,编程求a*b放入c中. -
令官爱西: 判断一个三位数是不是奇数,是不是素数,是不是水仙花数的程序如下:#include<stdio.h>#include<math.h> int main() { int n,a,b,c; scanf("%d",&n); if(n%2)printf("%d是一个奇数\n",n); else printf("%d不是一个奇数\n",n); for(a=2;a<=sqrt(n);...

潜江市15286445454: 如何遍历二维指针数组? -
令官爱西: 只要写个双重循环就可以实现,n维数据就可以用n重循环来实现.举一个2维的例子,可以借鉴一下,例如 int line =0;int a[2][2] = {1,2,3,4};for (int i = 0; i<2 ;++i){for (int j = 0; j<2 ;++j){cout << a[i][j] << ' ';line++;}cout << endl;}

潜江市15286445454: java 打印2行3列数组 用不同的方法 格式:a a a b b b -
令官爱西: 方法1: String attr[][] = {{"a" ,"b" ,"c"},{"a" ,"b" ,"c"}}; for(int i = 0;i<2;i++) { for(int j=0;j<3;j++) System.out.print(attr[i][j]); System.out.println(); }:

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网