zl程序教程

您现在的位置是:首页 >  后端

当前栏目

习题 5.7 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点)。

数组 元素 最大 没有 可能 位置 最小 习题
2023-09-14 09:06:56 时间

C++程序设计(第三版) 谭浩强 习题5.7 个人设计

习题 5.7 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点)。

代码块:

#include <iostream>
using namespace std;
int main()
{
    int n[3][3], i, j, m, p, c=0, min, max;
    for (i=0; i<3; i++){                                //输入一个3*3数组
        cout<<"Please enter row "<<i+1<<" numbers: ";
        for (j=0; j<3; cin>>n[i][j++]);
    }
    for (i=0; i<3; i++){
        for (j=0, max=n[i][j]; j<3; j++)
            if (n[i][j]>max){                           //判断出该行上最大的数,固定行号和列号
                max=n[i][j], m=i, p=j;
            }
        for (j=0, min=n[m][p]; j<3; j++)                //对比该列上的数,一旦有比固定的最大数还小的,中断循环
            if (n[j][p]<min) break;
        if (j==3){                                      //如果循环正常结束没有中断,输出鞍点,同时有鞍点则判断变量c为真
            c=1;
            cout<<"Result: "<<n[m][p]<<endl;
            cout<<"Row= "<<m+1<<" Column= "<<p+1<<endl;
        }
    }
    if (!c) cout<<"No match!"<<endl;                   //如果判断变量c值始终为初值,输出无鞍点
    system("pause");
    return 0;
}