作业帮 > 综合 > 作业

找出一个二维数组中 的鞍点

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/05/28 07:50:10
找出一个二维数组中 的鞍点
#include
int main()
{
\x09int a[3][4],i,j,max,t,c;
\x09for(i=0;i
找出一个二维数组中 的鞍点
说一下为什么没有鞍点的时候不会输出“没有鞍点”的信息,因为最外层的for()循环使用了i作为计数变量,而最后的一个for循环你又用i作为计数变量,这样的话,假设进入循环的时候i=1,那么下一次循环开始的时候i应当等于2才对,可你你在最后一个for()循环中使i从0增到了2,因此i在每次循环结束的售后都等于2,显然进入了死循环,解决的方法是另外增加一个计数变量k 用在最后一个for循环中.
修改后的代码如下:
#include
int main()
{
\x09int a[3][4],i,j,max,t,k,c;
\x09for(i=0;i
再问: 为什么这样一改 鞍点找不出来了??
再答: 在找第一行的鞍点的时候 max=4(4是改行的最大值)t=3 (因为a[0][3]=4) ,所以你接下来判断这个到底是不是鞍点,也就是判断max=4在t=3这一列上是否是最小值,假如是,那么它是鞍点,可是,你没有保存住这个信息,因此下一次循环要找第二行的鞍点 max=8,这时max把上面的max=4覆盖了,而上面的max=4又恰好是鞍点,所以整个程序出来的时候,max等于最后一行的最大值的,如果这个最大值恰好是这一列的最小值,那么会输出这个值,如果不是,会输出"没有鞍点"的信息,但是你其实是要判断每一行是否有鞍点,并不是只判断最后一行是否有鞍点,因此你需要在判断完每一行的时候就输出是否有鞍点的信息。 代码改成这样就OK了,上次的错误很sorry啊: #include int main() { int a[3][4]={5,2,3,4, 6,6,7,3, 7,9,6,5},i,j,max,t,k,c; int flag=0; for(i=0;i