作业帮 > 综合 > 作业

输入两个行、列数相同的矩阵(实际上是二维数组)A、B,以矩阵的方式分别输出A、B;求矩阵的和并输出.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/13 06:27:29
输入两个行、列数相同的矩阵(实际上是二维数组)A、B,以矩阵的方式分别输出A、B;求矩阵的和并输出.
这是我编的,不过求最大值有问题,还有位置,
#include "stdio.h"
#include "math.h"
#define N 3
#define M 3
void Myin_out_put(int a[N][M],int b[N][M] )
{
\x05int i,j;
\x05printf("please input arry a numbers:\n");
\x05for(i=0;i
回答求助.
你的程序实际上不错.有几个没注意到的地方要改一下:
1.FindMax(int (*a)[M],int (*b)[M],...)中的这两个形参是指向有M个元素的指针,而你在本函数体的算法上却出错了:*(*(a+i*M+j))应该改为*(*(a+i)+j)才对,当然包括*(*(b+i*M+j))改为*(*(b+i)+j).a+i是第i行的指针,它的内容*(a+i)就是指向本行第0个元素的指针,*(a+i)+j就指向了这一行的第j个元素,而最后*(*(a+i)+j)就是这个元素的值.你用的算法*(*(a+i*M+j))我没太看懂,似乎是在把二维数组降为一维来计算位置;这也是可以的,但这样的话函数形参就不能是(*p)[M]而应该是*p,在调用时要把A强制转换一直才能赋给p.
2.绝对值的问题出在主函数中的输出语句.你声明的FMAXA、FMAXB变量是double型,但printf()函数中的控制符却是"%d",由于类型不配,输出永远是0,My_fabs_max()的计算并没有错.把相应的printf()函数的控制符改为"%f"或"%g"就可以了.
其余未发现有什么问题.
有问题可续问……
再问: 在这个void Sumarry(函数中求和用*(*(c+i)+j)=*(*(a+i)+j)+*(*(b+i)+j);为什么不行的?对于FindMax中的*(*(a+i*M+j)),我原来是用*(a+i*M+j)的,后来不行,我以为它输出的是地址就改为*(*(a+i*M+j))了,我刚查了一下课本,应该是*(a+i*M+j)的,这个算法确实是把二维数组降为一维来计算位置的,但结果不行;你说的函数形参就不能是(*p)[M]而应该是*p,若改为*p的话,那*pmaxA=a[0][0];*pmaxB=b[0][0];这两个就有错了,为什么?
再答: 1.(*p)[X]和p[][X]不是一个概念啊:前者是指向X个元素数组的指针,后者是一个双维数组,p是这个双维数组的首地址(就是p[0][0]的地址)。Sumarry()的形参是后者,是一个双维数组,而FindMax()和My_fabs_max()的形参是前者,是一个指针。指针是个变量,当它指向数组时就可以操作数组;数组的首地址可心当指针用,但它是指针常量,没有指针变量的优势;具体说就是形参是(*p)[X]时,可以用p[][]的形式来操作它指向的数组,而形参是p[][]时,却无法用操作指针的办法来访问数组。 2.如果降为一维数组,*(a+i*M+j)这个逻辑是正确的,你原来写的*(*(a+i*M+j))就不太懂了。 3.若改为*p的话,那*pmaxA=a[0][0];*pmaxB=b[0][0];这两个就有错了——既然降为一维数组了,还哪儿来的a[0][0]和b[0][0]?只有a[0]和b[0]了……
输入两个行、列数相同的矩阵(实际上是二维数组)A、B,以矩阵的方式分别输出A、B;求矩阵的和并输出. C++中输入矩阵的行和列,A矩阵元素是行+列,B矩阵元素是行-列,输出A矩阵B矩阵.C矩阵为A乘以B.输出C矩阵 矩阵行和列的元素交换,存到另一二维数组,分别输出前后矩阵,求出两个矩阵中相同元素的数目是多少? 将一个矩阵行和列的元素交换,存到另一个二维数组中,并分别输出前后两个矩阵,同时求出两个矩阵中相同元素的数目是多少?(假设 定义两个相同大小的矩阵,输入矩阵A的所有元素,将矩阵A复制到矩阵B,然后输出矩阵B 将一个3*2的二维数组A表示矩阵(如下图)转置存入B中,再按矩阵的形式输出A和B 求A矩阵的转置矩阵B输入两个正整数m和n,而后通过使用指针配合new运算符生成一个m行n列的二维动态数组A以及另一个n行 已知A是一个3行4列的矩阵.B是一个4行5列的矩阵.编程求A×B所得到的新矩阵C.并输出矩阵C 这个题目啥意思这是一道PASCAL编程题,我看不懂题目的意思,输入矩阵a(m行n列)和矩阵b(n行h列),计算并输出c= 输入一个20行20列的矩阵a,求该矩阵中的最大值及最小值并输出 编写一个程序,求矩阵A,B的和,结果存入矩阵C中,并按矩阵形式输出. VB随机产生一个3*4矩阵和4*3矩阵,矩阵元素为0-10的整型数,分别存入b和c数组,求两矩阵的乘积并屏幕输出