问答详情
源自:2-4 基本数据类型

求一个二维数组的鞍点(该行最大,该列最小的元素)

大一萌新求改错

#include<stdio.h>
int main()
{
int x,y;
printf("请告诉我你想输入的数组有几行几列\n");
scanf("%d,%d",&x,&y);
printf("\n");
printf("请输入这个数组\n");
int a[x][y]={0},i,j;
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
scanf("%d",&a[i][j]);
} }
int p[x]={0},q[y]={0};
for(i=0;i<x;i++)
p[i]=a[i][0];
for(j=0;j<y;j++)
q[j]=a[0][j];
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
if(a[i][j]>p[i])
p[i]=a[i][j];
} }
for(j=0;j<y;j++)
{
for(i=0;i<x;i++)
{
if(a[i][j]<q[j])
q[j]=a[i][j];
} }
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
if(p[i]==q[j])
printf("%d\n",p[i]); } }
return 0;
}5a32744400019bdd11520864.jpg

提问者:小明23333 2017-12-14 20:54

个回答

  • 慕工程3150685
    2017-12-15 17:25:09
    已采纳

    #include <stdio.h>
    int a[105][105];
    int main(){
        int n;
        while (~scanf("%d",&n)){
            for (int i=0;i<n;i++)
                for (int j=0;j<n;j++)
                    scanf("%d",&a[i][j]);
    int k=0;
            for (int i=0;i<n;i++){
                for (int j=0;j<n;j++){
                    int flag=0;
                    for (int ii=0;ii<n;ii++){                    if (ii==i) continue;
                        if (a[ii][j]<a[i][j]){
                            flag=1;
                            break;
                        }
                    }
                    for (int jj=0;jj<n;jj++){
                        if (jj==j) continue;
                        if (a[i][jj]>a[i][j]){
                            flag=1;
                            break;
                        }
                    }
                    if (flag==0){
                        printf("%d %d\n",i,j);
    k++;
                    }
                }
            }
    if (!k) printf("NO\n");
        }
        return 0;
    }