Array.cRUN

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>


/*
示范数组作为函数参数的用法,必须传递数组的长度
1. 一维数组比较常见,数组参数形式
void Test(Type arr[], int len);
void Test(Type *arr, int len);
如果输入数组不能在函数中被修改
void Test(const Type arr[], int len);
void Test(const Type *arr, int len);

2.二维或者高维数组不常见,需要列出除了第一维之后的所有维度
比如用arr[10][3]表示10个3维向量,arr[i]表示第i个向量:(arr[i][0], arr[i][1], arr[i][2])
void Test(Type arr[][3], int len);
void Test(Type *arr[3], int len);
如果输入数组不能在函数中被修改
void Test(const Type arr[][3], int len);
void Test(const Type *arr[3], int len);

*/


void InputArray(int arr[], int len)
{
    for (int i = 0; i < len; i++)
    {
        scanf_s("%d", &arr[i]);
    }
}


void ShowArray(const int arr[], int len)
{
	for (int i = 0; i < len; i++)
	{
		printf("%d\n", arr[i]);
	}
}


int AverageArray(const int arr[], int len)
{
	int sum = 0;
	for (int i = 0; i < len; i++)
	{
		sum = sum + arr[i];
	}

	return sum;
}


//有序数组数字数字n,保持继续有序,并返回数组长度
//如果不存在,直接返回,否则,将数组后续数字往前移动一个位置
int Delete_FromArray(int arr[], int len, int n)
{
	int index = 0;
	for (int i = 0; i < len; i++)
	{
		if (arr[i] == n)
		{
			for (int index = i; index < len - 1; index++)
				arr[index] = arr[index + 1];

			return len - 1;
		}
	}
	return len;
}


void Test_Delete()
{
	int arr[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
	int len = 9;
	ShowArray(arr, len);

	len = Delete_FromArray(arr, len, 5);
	ShowArray(arr, len);
}

//计算点points的中心,结果存入数组center中
//二维数组作为参数的示例。注意数组的第一维都是需要参数输入或者约定的
void ComputingCenter(const double points[][3], int n, double center[])
{
	center[0] = 0, center[1] = 0, center[2] = 0;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			center[j] += points[i][j];
		}
	}
	for (int j = 0; j < 3; j++)
	{
		center[j] /= n;
	}

}

void Test_Centre()
{
	double points[][3] = { {1.0, 1.0, 1.0}, {2.0, 2.0, 2.0} };
	double center[3];
	ComputingCenter(points, 2, center);
}


#define ArraySize 10
int main()
{
	Test_Centre();

	Test_Delete();

	int arr[ArraySize];

	InputArray(arr, ArraySize);
	ShowArray(arr, ArraySize);

	int avg = AverageArray(arr, ArraySize);
	printf("Average is %d.\n", avg);

    return 0;
}