注册 登录
编程论坛 C语言论坛

本题要求编写程序,求一个给定的m×n矩阵的最大值以及位置。题目保证最大值惟一

li1346819486 发布于 2019-11-19 20:51, 7454 次点击
输入格式:
输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间以空格分隔。
输出格式:
输出在第一行中输出最大值,在第二行中按照“行下标 列下标”(下标从0开始)的格式输出最大值的位置。

#include<stdio.h>
int main()
{
    int m,n,i,j,sum;
    scanf("%d %d",&m,&n);
    int a[m][n];
    int b[i];
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&a[m][n]);
        }
    }
    for(i=0;i<m;i++)
    {
        for(j=0;j<n-1;j++)
        {
            if(a[i][j]>a[i][j+1])
            b[i]=a[i][j];
            else
            b[i]=a[i][j+1];
        }
    }
    for(i=0;i<m-1;i++)
    {
        if(b[i]>b[i+1])
        sum=b[i];
        else
        sum=b[i+1];
    }
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            if(sum==a[i][j])
            printf("%d\n%d %d\n",sum,i,j);
        }
    }
    return 0;
}
这个程序哪里错了,求助大神。
不能正确输出
2 回复
#2
rjsp2019-11-20 08:51
在第二行中按照“行下标 列下标”(下标从0开始)的格式输出最大值的位置
最大值不止一个怎么办?

如果只输出第一个最大的值的位置
程序代码:
#include <stdio.h>

int main( void )
{
    size_t m,n;
    int a[6][6];
    scanf( "%zu%zu", &m, &n );
    for( size_t i=0; i!=m; ++i )
        for( size_t j=0; j!=n; ++j )
            scanf( "%d", &a[i][j] );

    size_t r=0, c=0;
    for( size_t i=0; i!=m; ++i )
        for( size_t j=0; j!=n; ++j )
            if( a[r][c] < a[i][j] )
                r=i, c=j;
    printf( "%d\n%zu %zu\n", a[r][c], r, c );
}

#3
自学的数学2019-11-20 10:37
程序代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
  int i,m,n,*array;
  printf("请输入矩阵行数:");
  scanf("%d",&m);
  printf("请输入矩阵列数:");
  scanf("%d",&n);
  array=(int*)malloc(m*n*sizeof(int));
  printf("请输入该%d*%d矩阵:\n",m,n);
  for(i=0;i<m*n;i++)
  scanf("%d",&array[i]);
  int max=array[0];
  int index=0;
  for(i=1;i<m*n;i++)
  {
    if(max<array[i])
      {
        max=array[i];
       index=i;
    }
  }
  printf("您输入的矩阵中的最大值为:%d\n",max);
  printf("它所在的行号和列号分别是:%d,%d\n",(index/n)+1,(index%n)+1);
  return 0;
}


[此贴子已经被作者于2019-11-20 10:45编辑过]

1