HLYYBF 2021-09-13 10:20 采纳率: 92.9%
浏览 63
已结题

找出一个二维数组的鞍数,但不知道为什么程序运行结果总是不对

#include<stdio.h>
int main() {
int a[3][3],i,j,hang,lie,max,d; //定义2维数组
for(i=0; i<=2; i++)
for(j=0; j<=2; j++)
scanf("%d",&a[i][j]);//给数组赋值
for(i=0; i<=2; i++) {
max=a[i][0];
hang=i,lie=0;
for(j=0; j<=2; j++) {
if(a[i][j]>max) {
max=a[i][j];
hang=i,lie=j; //确定出每行的最大值
}
d=0;
for(i=0; i<=2; i++)
if(max>a[i][lie])
d=1; //判断此元素是否为该列最小值
if(d==0)
printf("%d为鞍数\n%d为行数\n%d为列数\n",max,hang,lie);//输出 结果
}
}
if(d)
printf("没有鞍数\n");//输出结果
return 0;
}

  • 写回答

4条回答 默认 最新

  • Radar_LFM 新星创作者: 嵌入式与硬件开发技术领域 2021-09-13 16:25
    关注
    #include<iostream>
    using namespace std;
    
    /* 求一个n×m数组中的马鞍数,并输出它的位置。
    马鞍数:指矩阵n*m中,在行上最小而在列上最大的数 */
    #define N 100
    int main()
    {
        int n, m;        // 行数和列数
        int a[N][N];    // 二维数组
        int value, row, col;    // 马鞍数及其所在行号和列号
        int flag = 0;            // 马鞍数是否存在的标志,0表示不存在,1表示存在
        cout << "请分别输入数组的行数和列数:";
        cin >> n >> m;
        for (int i = 0;i < n;i++)
            for (int j = 0;j < m;j++)
                cin >> a[i][j];
        for (int i = 0;i < n;i++)
        {
            int min = a[i][0];
            row = i;
            col = 0;
            for (int j = 1;j < m;j++)
            {
                if (a[i][j] < min)
                {
                    min = a[i][j];
                    col = j;
                }
            }
            int max = a[0][col];
            for (int k = 0;k < n;k++)
            {
                if (a[k][col]>max)
                {
                    max = a[k][col];
                }
            }
            if (max == min)
            {
                flag = 1;
                value = max;
                cout << "马鞍数为:" << value << " ";
                cout << "在数组中的位置是:" << i + 1 << "行" << col + 1 << "列" << endl;
            }
        }
    
        if (!flag)
            cout << "该数组不存在马鞍数!" << endl;
        system("pause");
        return 0;
    }
    

    思路:先找到一行中的最小值,确定了最小值以及所在列号,在从该列找最大值,如果在这一列中找到的最大值与之前找到的最小值相等,就说明这个数为马鞍数,确定所在行数和列数

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月23日
  • 已采纳回答 9月15日
  • 创建了问题 9月13日