c语言 求二维数组的鞍点
答案:2 信息版本:手机版
解决时间 2019-10-07 01:12
已解决
2019-10-06 04:57
如图问题1、对于最后两个if语句不理解 为什么其判断条件要那么写?请解释!
问题2 变量k是做什么的?他和max_k,min_k,中的k有关系吗?
最佳答案
2019-10-06 05:51
for(i=0;i<3;i++) //外层循环i是行标
{
max=a[i][0]; //定义max为该行最大元素的值,并初始化为该行首元
max_k=0; //定义max_k为该行最大元素的列标,并初始化指向首元
for(j=1;j<3;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
max_k=j;
}
} //该循环结束后会找出i行最大元素的值max和下标max_k
min=a[0][max_k]; //定义min为第max_k列的最大值,并初始化为列首的值
min_k=0; //定义min_k为第max_k列的最大值行标,并初始化指向列首
for(k=1;k<3;k++)
{
if(a[k][max_k]
{
min=a[k][max_k];
min_k=k;
}
} //该循环结束后会找出第max_k列的最小元素的值min和行标min_k,循环计数器k代表行标
if(i==min_k)
{
flag=1; //置鞍点存在标识为true
printf("在%2d行,%2d列,鞍点是:%f\n",min_k+1,max_k+1;a[min_k][max_k]); //输出鞍点
}
}
if(!flag) //如果标识为false,则鞍点不存在
{
printf("找不到鞍点\n");
}
全部回答
1楼
2019-10-06 06:41
#include<stdio.h>
int main()
{
int a[4][5],i,j,i1,j1=0,max,s=1;
int i2;
for(i=0;i<=3;i++)
{
for(j=0;j<=4;j++)
scanf("%d",&a[i][j]);
}
printf("输入的数组:\n");
for(i=0;i<=3;i++)
{
for(j=0;j<=4;j++)
printf("%5d",a[i][j]);
printf("\n");
}
printf("\n");
for(i=0;i<=3;i++)
{
i1=i;
max=a[i1][j1];
for(j=1;j<=4;j++)
{
if(max<a[i][j])
{
max=a[i][j];
j1=j;
}
}
for(i2=0;i2<=3;i2++)
if(max>a[i2][j1])break;
if(i2>3)
{
printf("a[%d][%d]=%d\n",i1,j1,max);
s=0;
}
}
if(s)
printf("不存在鞍点.\n");
return 0;
}
说明:我定义了一个整形变量i2。
循环体里最好不要出现循环变量,因为随时会改变循环
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯