任务描述
本关任务:请编写函数fun(),函数的功能是:求出某个二维数组(如5行5列)的周边元素值之和,作为函数值返回。
测试说明
平台会对你编写的代码进行测试:
输入:第一行为一个整数n,代表数组维数。第二行开始为二维数组赋值。 输出:周边元素之和。
测试输入: 3 1 2 3 4 5 6 7 8 9 预期输出: 40
源程序如下:
#define N 10//宏定义N=10
#include <stdio.h>
int fun(int a[N][N],int n)
{
int i,j,sum = 0;
for (i = 0; i < n; i++)//控制行变量遍历
for (j = 0; j < n; j++)//控制列变量遍历
if (i == 0 || i == (n-1) || j == 0 || j == (n-1))//判断是否为周边元素
sum += a[i][j];//进行求和运算
return sum;
}
void main()
{
int number[N][N];//定义二维数组并赋初值
int i, j, n=3;//定义循环变量
int sum = 0;//定义加和变量,并初始化赋值为0
printf("请输入一个二维数组的维度:\n");
scanf("%d",&n);
for (i = 0; i < n; i++)//控制行变量遍历
for (j = 0; j < n; j++)//控制列变量遍历
scanf("%d",&number[i][j]);
sum = fun(number,n);
printf("%d", sum);//输出和
}
请输入一个二维数组的维度:3
1 2 3 4 5 6 7 8 9
周边元素之和为:40
#include <stdio.h>
#define N 10
int fun(int a[N][N], int n);
int main()
{
int a[N][N];
int n,i,j;
scanf("%d", &n);
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
scanf("%d", &a[i][j]);
}
}
printf("%d", fun(a,n));
}
int fun(int a[N][N], int n)
{
int s = 0, i;
for(i = 0; i < n; i++)
s += a[0][i] + a[n-1][i];
for(i = 1; i < n-1; i++)
s += a[i][0] + a[i][n-1];
return s;
}
这题,主要是周围元素的判定,找出规律,第一行和最后一行,第一列和最后一列,根据这个写循环判定即可
代码如下,如有帮助,请采纳一下,谢谢。
#include <stdio.h>
#define N 10
int fun(int a[N][N],int n)
{
if (n > N)
{
n = N;
}
int sum = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n;j++)
{
if (i == 0 || j == 0 || i == n-1 || j == n-1)
{
sum += a[i][j];
}
}
}
return sum;
}
int main()
{
printf("请输入n:");
int n;
scanf("%d",&n);
printf("请输入数据:");
int a[N][N] = {0};
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("%d\n",fun(a,n));
getchar();
getchar();
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632