c++函数调用 二维数组对角线求和

#include
using namespace std;
int main()
{
double sum_2diagonal(double* arry_2d,unsigned int m,unsigned int n);
int i,j;
double summ;
unsigned int x,y;
double arry[100][100];
cin>>x>>y;
for(i=0;i for(j=0;j {
cin>>arry[i][j];
}
summ=sum_2diagonal(arry,x,y);
cout<<summ;
return 0;
}

double sum_2diagonal(double (*arry_2d)[100][100] ,unsigned int m,unsigned int n)
{
int i,j;
double sum=0,t=0;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
if(i=j)
{ sum=sum+((*arry_2d)[i][j]);
}

}
return sum;

}

问题是什么呢?还是有什么错误?

 for(i=0;i for(j=0;j {  //这是什么鬼
cin>>arry[i][j];
}
summ=sum_2diagonal(arry,x,y);
cout<<summ;
return 0;
}
  • 1.你要问什么?
  • 2.sum_2diagonal可以简化
double sum_2diagonal(double arry_2d[][100], unsigned int m, unsigned int n)
{
    int n0 = (m>n) ? n : m;
    int i;
    double sum = 0, t = 0;
    for (i = 0; i < n0; i++)
        sum += (arry_2d[i][i]);
    return sum;
}

虽然不知道你要表达什么,但是我感觉你计算对角线的和的时候指针用错了

sum_2diagonal这个函数参数传错了,直接double *arry_2d即可。

中间那个for循环没复制全,sum_2diagonal的数组指针的参数不需要指定数组的大小。