代码如下
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct Max_Element
{
int row;
int col;
double date;
};
void Max_Element_Find(struct Max_Element maxA,double *A,int n)
{
int i,j;
//maxA.date = 0.0;
for(i=0;i<n;i++)//找出A中非对角线元素中绝对值最大的元素
{
for(j=0;j<n;j++)
{
if(j!=i)
if(fabs(A[i*n+j])>maxA.date)
{
maxA.date = fabs(A[i*n+j]);
maxA.row = i;
maxA.col = j;
}
}
}
}
int main()
{
int i,j,n;
scanf("%d",&n);
double *A = (double*)malloc(sizeof(double)*(n*n));
for(i=0;i<n*n;i++)
{
scanf("%lf",&A[i]);
}
struct Max_Element maxA={0,1,0.0};
Max_Element_Find(maxA,A,n);
printf("%lf %d %d\n",maxA.date,maxA.row,maxA.col);
free(A);
return 0;
}
程序能够运行,但是发现运行的结果maxA的值并没有改变,在调试时发现maxA中的值改变了,但是输出时没有改变,这是怎么回事?
程序功能:找出A中非对角线元素中绝对值最大的元素。
测试数据,n=2, A={1,2,3,4},用的编译器是NetBeans。求大神解答,谢谢啦!
改了之后又出现了这样的错误
由于maxA是个指针,你应该用maxA->date,下面也一样
改了之后又出现了这样的错误
直接把我发的复制过去就好
该怎样改啊
追答好吧,看到你已经改好了。。。
原来是这样啊,这个程序该怎样改呢?
追答将函数定义 void Max_Element_Find(struct Max_Element maxA,double *A,int n)
改成 void Max_Element_Find(struct Max_Element& maxA,double *A,int n)
改了之后又出现了这样的错误
将引用写在左边void Max_Element_Find(struct Max_Element& maxA,double *A,int n)
该怎样改啊