条件判断是==,一个等号是赋值,恒成立。
这两个地方=改为==
有几个错误:
(1)应该先找每行的最大值,然后判断这个最大值在其所在的列中最小。
(2)if语句中,应该用==来判断,==是逻辑运算符,=是赋值运算符,你用错了
(3)找每行的最大值时,应该先初始化max,否则max会保留上一次运算的最大值,同理,最小值每次也需要初始化一下。
(4)判断鞍点那里,不应该用matrix[n][m]==matrix[i][m]来判断,应该是找到每行最大值所在的列m后,再在m列中找最小值所在的行n,最后判断n是否等于 i 即可。
修改后的运行结果:
代码修改如下:
#include <iostream>
using namespace std;
int main()
{
int matrix[5][5];
int max=0,min=0,m,n,k=0;
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
cin >> matrix[i][j];
}
}
//
for(int i=0;i<5;i++)
{
max = matrix[i][0]; //初始化max
m = 0;
for(int j=0;j<5;j++)
{
if(max < matrix[i][j])
{
max = matrix[i][j]; //找到每行的最大值
m = j; //m记录最大值所在的列
}
}
//找m列最小
min = matrix[0][m];
n = 0;
for(int j=0;j<5;j++)
{
if(min > matrix[j][m])
{
min = matrix[j][m];
n = j;
}
}
//如果n等于i,那么就是一个鞍点
if(n == i)
{
if(k==0)
cout << min;
else
cout <<" "<<min;
k=k+1;
}
}
if(k==0)
cout <<"not found"<<endl;
else
cout <<endl;
return 0;
}
你确定你的 if 语句中是在比较相等而不是赋值操作?
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!【以下回答由 GPT 生成】
根据你提供的问题描述,我无法确定你的代码中具体出了什么问题。但是我可以提供一些常见的错误和优化建议,希望能够帮到你。请将代码以markdown格式提供,我将尽力帮你解决问题。
解决方案:检查if语句的条件是否正确,确保满足条件时才执行if语句,否则执行else语句。可能需要调试代码来查看具体执行的逻辑。
可能的错误:第三个if语句不满足条件却输出了min
解决方案:检查第三个if语句的条件判断,确保只有满足条件时才输出min。可能需要打印中间变量来查看条件判断的结果是否正确。
优化建议:简化代码逻辑,提高可读性和可维护性
如果你能够提供代码,我可以根据具体情况提供更具体的解决方案。