请高手帮忙详细解释一下下面的一个C语言程序!谢谢。要详细。

2024年11月14日 15:27
有2个网友回答
网友(1):

那我就尽可能的详细咯~

#include //调用stdio.h库文件
#define n 4
#define m 4 //宏定义 m=n=4
int fun(int a[n][m]) //声明函数 参数为一个二维数组
{
int sum=0,j,i; //sum为返回值 i,j为循环变量
for(i=0,j=0;jsum+=a[i][j];
for(i=0,j=0;isum+=a[i][j];
for(i=n-1,j=0;jsum+=a[i][j];
for(i=0,j=m-1;isum+=a[i][j];
sum-=a[0][0];sum-=a[0][m-1]; //这四个代码是用来减去上面sum-=a[n-1][m-1];sum-=a[n-1][0]; //计算的时候的4个重复值

return sum; //返回计算结果
}
int main() //测试主函数
{
int i,j,a[n][m]={0},k;

printf("请输入%d行,%d列元素:\n",n,m);
for(i=0;i{
printf("请输入第%d行:\n ",i);
for(j=0;jscanf("%d",&a[i][j]);
putchar('\0');
}
printf("周边元素之和:%d",fun(a));scanf("%d",&k);
}

PS:数组的排列例如a[3][2]:
a[0][0] a[0][1]
a[1][0] a[1][1]
a[2][0] a[2][1]

网友(2):

#include
#define n 4 //定义行值为4
#define m 4 //定义列值为4

int fun(int a[n][m])
{
int sum=0,j,i;

for(i=0,j=0;jsum+=a[i][j]; //并将各值加入sum
for(i=0,j=0;isum+=a[i][j]; //并将各值加入sum
for(i=n-1,j=0;jsum+=a[i][j]; //并将各值加入sum
for(i=0,j=m-1;isum+=a[i][j]; //并将各值加入sum
sum-=a[0][0];sum-=a[0][m-1]; /***由于四个边角的值重复加了一次***/
sum-=a[n-1][m-1];sum-=a[n-1][0]; /***所以需要再分别减去***/
return sum; //返回周边元素之和
}
int main()
{
int i,j,a[n][m]={0},k;

printf("请输入%d行,%d列元素:\n",n,m);
for(i=0;i{
printf("请输入第%d行:\n ",i);
for(j=0;jscanf("%d",&a[i][j]); //按行为单位循环输入各个元素的值
putchar('\0');
}
printf("周边元素之和:%d",fun(a));scanf("%d",&k);
}