有没有会的人可以看一下这个吗

img

用双重循环做就可以了
你题目的解答代码如下:

#include <stdio.h>

int main()
{
    int m,n,i,j,k,a,b,c,d,g;
    int sum, max;
    scanf("%d%d",&m,&n);
    int arr[m][n];
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
            scanf("%d",&arr[i][j]);
    scanf("%d",&g);
    for(k=0;k<g;k++)
    {
        scanf("%d%d%d%d",&a,&b,&c,&d);
        sum = 0;
        max = -9999999;
        for(i=0;i<m;i++)
            for(j=0;j<n;j++)
            {
                if(i>=a-1 && i<=c-1 && j>=b-1 && j<=d-1)
                    sum += arr[i][j];
                else
                    if(arr[i][j] > max)
                        max = arr[i][j];
            }
        printf("%d %d\n",sum,max);
    }
    return 0;
}

如有帮助,望采纳!谢谢!

定义二维矩阵,根据左上右下坐标知道子矩阵的范围,循环遍历整个数组,在子矩阵的,计算和,否则计算最大值

#include <stdio.h>
int main()
{
    int a[10][10];
    int m,n,i,j,k,t;
    int a,b,c,d;
    int sum=0,max = 0;
    scanf("%d%d",&m,&n);
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);
    scanf("%d",&k);
    for(t=0;t<k;t++)
    {
    scanf("%d%d%d%d",&a,&b,&c,&d);
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
        {
            if(i>=a-1 && i<= c-1 && j>=b-1 && j<= d-1)
                  sum += a[i][j];
            else  if(a[i][j] > max)
                  max = a[i][j];    
        }
      printf("%d %d\n",sum,max);
    }
    return 0;
}