读书人

求鞍点程序执行不了?什么原因?解决方

发布时间: 2012-03-03 15:33:03 作者: rapoo

求鞍点程序执行不了?什么原因?
二维数组的鞍点即该位置上的元素在该行最大,在该列最小!请问下面这个程序有什么错误执行不了:编译成功 但是输入明显有鞍点的二维数组却 没有反应!!
#include "stdio.h "
void main()
{
int a[5][5],i,j,max;
for(i=0;i <=4;i++)
{
for(j=0;j <=4;j++)
scanf( "%d, ",&a[i][j]);
}
for(i=0;i <=4;i++)
max=a[i][0];
{
for(j=0;j <=4;j++)
{
if(a[i][j]> max)
max=a[i][j];
}
for(i=0;i <=4;i++)
if(a[i][j] <max)
printf( "%d ",a[i][j]);
}
}

[解决办法]
for(i=0;i <=4;i++)
max=a[i][0];
////////////////////
应该把大括号写在max的前面。否则整个for循环就只执行这一句。

for(i=0;i <=4;i++)
if(a[i][j] <max)
printf( "%d ",a[i][j]);
//////////////////////////
注意不要再用i了,否则整个大循环就会只执行一次。

if(a[i][j] <max)
printf( "%d ",a[i][j]);
////////////////////////
你不是要输出鞍点么?怎么都输出比鞍点小的数呢?另外这个查找方法也有点问题,你无法判断它究竟是不是鞍点。
还有.....不列举了。
修改如下:

#include "stdio.h "
void main()
{
int a[5][5],i,j,max,tempj;
bool flag;
for(i=0;i <=4;i++)
{
for(j=0;j <=4;j++)
scanf( "%d ",&a[i][j]);
}
for(i=0;i <=4;i++)
{
max=a[i][0];
tempj = 0;
flag = true;

for(j=0;j <=4;j++)
{
if(a[i][j]> max)
{
max = a[i][j];
tempj = j;
}
}
for(int k=0;k <=4;k++)
{
if(a[k][tempj] <max)
{
flag = false;
break;
}
}
if(flag)
{
printf( "%d ", max);
}
}
}

读书人网 >C语言

热点推荐