Array.c,RUN
#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;
}