用双重循环做就可以了
你题目的解答代码如下:
#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;
}