开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第18天,点击查看活动详情
计算机二级C语言程序设计题
题目:
请编写函数fun(),函数的功能是:求出二维数组周边的元素之和,作为函数值返回。二维数组中的值在主函数中赋予。
例如:若二维数组中的值为
1 3 5 7 9
2 9 9 9 4
6 9 9 9 8
1 3 5 7 0
则函数值为61。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define M 4
#define N 5
int fun(int a[M][N])
{
?
}
main()
{
void NONO();
int aa[M][N]={ {1,3,5,7,9},
{2,9,9,9,4},
{6,9,9,9,8},
{1,3,5,7,0} };
int i, j, y;
printf ("The original data is:\n");
for(i=0; i<M; i++)
{
for(j=0; j<N; j++)
{
printf("%6d ", aa[i][j]);
}
printf("\n");
}
y=fun(aa);
printf("\nThe sum:%d", y);
printf("\n\n");
NONO();
system("pause");
}
void NONO()
{/* 本函数用于打开文件,输入测试数据,
调用函数,输出数据,关闭文件。*/
int i, j, k, y, aa[M][N];
FILE *rf, *wf;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(k=0; k<8; k++)
{
for(i=0; i<M; i++)
{
for(j=0; j<N; j++)
{
fscanf(rf, "%d", &aa[i][j]);
}
}
y=fun(aa);
fprintf(wf, "%d\n", y);
}
fclose(rf);
fclose(wf);
解题思路:
周边元素的下标一定有一个是0或M-1或N-1,即下标中只要有一个为0或M-1或N-1,则他一定是周边元素,对周边元素进行累加计算总和
参考答案:
{
int i, j, sum=0;
for(i=0; i<M; i++)
{
for(j=0; j<N; j++)
{
if(i==0 || i==M-1 || j==0 || j==N-1) /*只要下标中有一个为0或M-1或N-1,则它一定是周边元素*/
{
sum=sum+a[i][j]; /*将周边元素相加*/
}
}
}
return sum;
}
结果如下:
补充:
二维数组包含的元素的个数是:行长度列长度,其中每个元素占据的字节数是sizeof(数据类型),故二维数组占据的内在字节数是行长度列长度*sizeof(数据类型)不能引用整个二维数组,只能引用单个数组元素,再使用数组遍历的形式引用数组的每个元素二维数组引用基本格式:数组名[行标][列标] 行标和列标都是从0开始,最大下标为 行(列)标长度-1;数组元素可以出现在任意表达式中,和普通变量作用相同。