【正确答案】为操作方便,实际算法将二维数组A[m][n]的m,n改为1≤m≤10,1≤n≤10。
算法由主函数和求数组靠边元素之和、输出数组全部元素、输出数组全部靠边元素四个函数组成。
程序如下:
#include<stdio.h>
#define M 10
#define N 10
int sumj zzbys(int a[M][N],int m,int n)/*求数组A靠边元素之和*/
{
int i,j,sum=0;
if((m==0)&&(n==0))
return(a[0][0]);
else
{
for(i=0;i<m;i++)
{
for(j=0;j<n;J++)
{/*根据数组中靠边元素下标特征,筛选数组全部靠边元素,并累加m/
if((i==0)‖(i==m-1)‖(J==0)‖(j==n-1))
sum=sum+a[i][j]; /*累加靠边元素*/
}
}
return(sum);
}
}
void print1(int a[M][N],int m,int n) /*输出数组a[M][N]全部元素*/
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;J++)
printf("/%d",a[i][j]); /*"/%d"中有2个空格*/
printf("\n");
}
printf("\n");
}
void print2(int a[M][N],int m,int n) /*输出数组a[M][N]全部靠边元素*/
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
if((i==0)‖(i==m-1)‖(j==8)‖(j==n-1))
printf("/%d",a[i][j]); /*"/%d"中有2个空格*/
else
{
printf(" "); /*" "中有3个空格*/
}
printf("\n");
}
printf(”\n”);
}
main()
{
int t[M][N]={{1,1,1,1,1,1,1,1,1,1},/*预置数组元素*/
{2,2,2,2,2,2,2,2,2,2},
{3,3,3,3,3,3,3,3,3,3},
{4,4,4,4,4,4,4,4,4,4},
{5,5,5,5,5,5,5,5,5,5},
{6,6,6,6,6,6,6,6,6,6},
{7,7,7,7,7,7,7,7,7,7},
{8,8,8,8,8,8,8,8,8,8},
{9,9,9,9,9,9,9,9,9,9},
{0,0,0,0,0,0,0,0,0,0}};
int a,b;
scanf("/%d",&a);
scanf("/%d",&b);
printl(t,a,b);
print2(t,a,b);
printf(”/%d\n”,sumj zzbys(t,a,b));
输出结果为:
5 5(回车)
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
1 1 1 1 1
2 2
3 3
4 4
5 5 5 5 5
48
【答案解析】