飞利浦·斯塔克|C语言-二维数组条件筛选

飞利浦·斯塔克|C语言-二维数组条件筛选


①目标
求一个二维数组(矩阵)周边元素的平均值?
首先筛选周边元素 , 行标列标 , 不是含0就是含4 。
再求平均值av 。
a[0
[0
a[0
[1
a[0
[2
a[0
[3
a[0
[4

a[1
[0
a[1
[1
a[1
[2
a[1
[3
a[1
[4

a[2
[0
a[2
[1
a[2
[2
a[2
[3
a[2
[4

a[3
[0
a[3
[1
a[3
[2
a[3
[3
a[3
[4

a[4
[0
a[4
[1
a[4
[2
a[4
[3
a[4
[4


②命令行
#include< stdio.h>
#include< stdlib.h>
#define N 5
~
③定义函数
double fun(int w[
[N
)
{
int ijk=0;
double s=0.0;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
/*筛选二维数组中满足条件的元素 , 一般用遍历*/
if(i==0||j==0||i==N-1||j==N-1)
/*行标列标 , 不是含0就是含N-1*/
{s=s+w[i
[j
;k++;
/*累加并计数 , 为平均值做准备*/
return s/k;

~
④主函数(调用)
void main()
{
FILE *wf;
/*不知道此处为何要指向文件的指针 , 我删了也可以执行 。 */
int a[N
[N
=
{0123401234012340123401234;
int ij;
double s;
system(\"CLS\");
/*清屏 , 虽然不知道这里为什么要清屏 , 期待大神解读*/
【飞利浦·斯塔克|C语言-二维数组条件筛选】printf(\"The array\\");
for(i=0;i<N;i++)
{
for(i=0;i<N;i++){printf(\"%4d\"a[i
[j
);
/*注意此处嵌套 , \在外层for循环中 , 不在内层for循环中 , 意味着每一行一个回车 , 如果内层表示每一个元素一个回车 。 */
printf(\"\\");

av=fun(a);
printf(\"The result\\");
printf(\"The average is:%lf\\"av);

wf=fopen(\"out.dat\"\"w\");
/*打开文件 , 文件使用方式为write写*/
fprintf(wf\"%lf\"av);
/*把平均值av按%lf格式 , 输出到wf所指的文件中*/
fclose(wf);
/*关闭文件 。
觉得最后三句文件操作有点多余 , 我试了 , 删了也没问题 , 期待大神解读*/