计算机二级C语言程序设计题

126 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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;
}

结果如下:

1.png

补充:

二维数组包含的元素的个数是:行长度列长度,其中每个元素占据的字节数是sizeof(数据类型),故二维数组占据的内在字节数是行长度列长度*sizeof(数据类型)不能引用整个二维数组,只能引用单个数组元素,再使用数组遍历的形式引用数组的每个元素二维数组引用基本格式:数组名[行标][列标] 行标和列标都是从0开始,最大下标为 行(列)标长度-1;数组元素可以出现在任意表达式中,和普通变量作用相同。