代码功能是在一个矩阵中的小矩阵中找到小矩阵中的最大值,而且这个小矩阵的边长为k,大矩阵的边长为m和n,小矩阵会在大矩阵中移动,步长为1.将每个小矩阵中的最大值再重新编排成一个新矩阵,输出辛矩阵并输出其边长。dev上能运行,但是考试网上说段错误,不知道哪错了。。。
#include<stdio.h>
int sum(int **p);
int main()
{
int m,n,k,b,c,d,sep1,sep2,e,k1,k2,*p[3];
scanf("%d %d %d",&m,&n,&k);
int a[5][5];
sep1=m-2;
sep2=n-2;
for(b=0;b<m;b++)
{
for(c=0;c<n;c++)
{
scanf("%d",&d);
a[b][c]=d;
}
}
int f[sep1][sep2],sum1[sep1][sep2];
for(b=0;b<sep1;b++)
{
for(c=0;c<sep2;c++)
{
for(e=b,k1=0;e<b+3,k1<3;e++,k1++)
{
for(d=c,k2=0;d<c+3,k2<3;d++,k2++)
{
f[k1][k2]=a[e][d];
}
p[k1]=f[k1];
}
sum1[b][c]=sum(p);
}
}
printf("%d %d",sep1,sep2);
printf("\n");
for(b=0;b<sep1;b++)
{
for(c=0;c<sep2;c++)
{
printf("%d “,sum1[b][c]);
}
printf(”\n");
}
}
int sum(int **p)
{
int nb,nc,b;
b=p[0][0];
for(nb=0;nb<3;nb++)
{
for(nc=0;nc<3;nc++)
{
if(b<p[nb][nc])
{
b=p[nb][nc];
}
}
}
return b;
}