方法中,直接双重循环遍历判断。
用一个变量记录最大值,一个变量记录最大值对应的下标。
二维数组在主函数中定义,然后作为参数传到其他函数中。
代码如下:
#include <iostream>
using namespace std;
void Input_sz(int a[][5]);
void Sum_sz(int a[][5]);
void Max_sz(int a[][5]);
int main()
{
int a[5][5];
Input_sz(a);
Sum_sz(a);
Max_sz(a);
return 0;
}
void Input_sz(int a[][5])
{
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
cin >> a[i][j];
}
void Sum_sz(int a[][5])
{
int i,sum=0;
for (i = 0; i < 5; i++)
sum += a[i][i];
cout<< "主对角线各元素之和:"<< sum << endl;
}
void Max_sz(int a[][5])
{
int x=0,y=0;
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
{
if (a[i][j]>a[y][x])
{
y=i;
x=j;
}
}
cout << "最大的数:"<<a[y][x]<< " 所在行号:" << y << "所在列号:" << x << endl;
}
你题目的解答代码如下:
#include <iostream>
using namespace std;
void Input_sz(int a[][5])
{
int i,j;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
cin >> a[i][j];
}
}
}
void Sum_sz(int a[][5])
{
int i,sum=0;
for (i = 0; i < 5; i++)
{
sum += a[i][i];
}
cout << "对角线之和:" << sum << endl;
}
void Max_sz(int a[][5])
{
int i,j,x=0,y=0;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
if (a[i][j]>a[y][x])
{
y=i;
x=j;
}
}
}
cout << "最大值:" << a[y][x] << " 行下标:" << y << " 列下标:" << x << endl;
}
int main()
{
int a[5][5];
Input_sz(a);
Sum_sz(a);
Max_sz(a);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!