输入两个行、列数相同的矩阵(实际上是二维数组)A、B,以矩阵的方式分别输出A、B;求矩阵的和并输出.这是我编的,不过求最大值有问题,还有位置,#include "stdio.h"#include "math.h"#define N 3#define M
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/25 13:13:34
输入两个行、列数相同的矩阵(实际上是二维数组)A、B,以矩阵的方式分别输出A、B;求矩阵的和并输出.这是我编的,不过求最大值有问题,还有位置,#include "stdio.h"#include "math.h"#define N 3#define M
输入两个行、列数相同的矩阵(实际上是二维数组)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
输入两个行、列数相同的矩阵(实际上是二维数组)A、B,以矩阵的方式分别输出A、B;求矩阵的和并输出.这是我编的,不过求最大值有问题,还有位置,#include "stdio.h"#include "math.h"#define N 3#define M
回答求助.
你的程序实际上不错.有几个没注意到的地方要改一下:
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"就可以了.
其余未发现有什么问题.
有问题可续问……
自己看c语言书函数那一章