C-函数和数组

时间:2020-02-23 14:31:55  来源:igfitidea点击:

在本教程中,我们将学习如何使用C编程语言在函数中传递和使用数组。

我们知道,当我们要使用一个变量名称存储相同数据类型的数据时,我们会使用数组。

函数声明以接受一维数组

要接受一维数组,我们的函数声明将如下所示。

returnType functionName(type arr[], type size);

例:

float findAverage(int arr[], int size);

在上面的函数声明中,我们有一个名为findAverage的函数。
第一个参数的类型为" int",并采用一维整数数组。
类型为int的第二个参数用于表示数组的大小,即元素数。
此函数的返回类型设置为float,因此它将返回浮点值。

将一维数组传递给函数

要传递一维数组,我们只需将数组变量的名称写为函数参数即可。

例如,如果我们要在5篇论文中存储一个学生的成绩,则可以创建一个大小为5的整数数组,然后执行" int",并为其命名,例如"分数"。

int score[5] = {90, 80, 70, 75, 85};

注意!在上面的示例中,我们假设每篇论文的总分是100,而分数将是一个整数值。

现在说,我们想通过创建一个函数" findAverage()"来找到学生的平均分数,该函数采用一个整数数组并返回一个浮点值。

在下面的示例中,我们将类型为" int"且名称为" score"的一维数组传递给" findAverage()"函数。

int score[5] = {90, 80, 70, 75, 85};
int papers = 5;
float avg = findAverage(score, papers);

完整的代码如下。

#include <stdio.h>

float findAverage(int [], int);

int main(void) {
  int score[5] = {90, 80, 70, 75, 85};
  int papers = 5;
  float avg = findAverage(score, papers);
  printf("Average: %f\n", avg);
  return 0;
}

float findAverage(int arr[], int size) {
  //variables
  int
    i;
  float
    sum = 0,
    avg = 0;

  //find total
  for (i = 0; i < size; i++) {
    sum += arr[i];
  }
  
  //find average
  avg = sum/size;
  
  //return average
  return avg;
}
Average: 80.000000

接受二维数组的函数声明

要接受二维数组,我们的函数声明将如下所示。

returnType functionName(type arr[][C], type rows, type cols);

例:

void printAverage(int arr[][C], int rows, int cols);

在上面的示例中,我们有一个名为printAverage的函数。
第一个参数是一个二维数组,因为我们使用两个方括号来表示行数和列数。

重要的是指定第二维的大小,即列数。
因此,在上面的函数声明中,我们传递了一个常量C。

第二个和第三个参数" int rows"和" int cols"分别表示数组" arr"中的行数和列数。

上面的函数没有返回任何值,因此,返回类型设置为void

将二维数组传递给函数

要将二维数组传递给函数,我们要做的就是编写数组名称。

假设某位学生每天进行3次测试,共5天,我们希望打印出每天的平均分数。

因此,我们将首先创建一个二维数组,假设为" score",它将有5行表示5天,有3列表示3个测试。

int score[5][3] = {
  {60, 70, 80},
  {90, 50, 70},
  {80, 75, 75},
  {90, 85, 81},
  {60, 75, 80}
};

因此,如果我们要将二维数组score传递给函数printAverage,我们必须编写以下内容。

printArray(score, ROWS, COLS);

完整的代码如下所示。

#include <stdio.h>

void printAverage(int [][3], int, int);

int main(void) {
  //variables
  int
    ROWS = 5,
    COLS = 3;
    
  int score[5][3] = {
    {60, 70, 80},
    {90, 50, 70},
    {80, 75, 75},
    {90, 85, 81},
    {60, 75, 80}
  };
  
  printAverage(score, ROWS, COLS);
  
  return 0;
}

void printAverage(int arr[][3], int rows, int cols) {
  //variables
  int
    r, c;
  float
    sum, avg;

  //find average and print it
  for (r = 0; r < rows; r++) {
    sum = 0;
    for (c = 0; c < cols; c++) {
      sum += arr[r][c];
    }
    avg = sum/cols;
    printf("Average on Day #%d = %f\n", (r + 1), avg);
  }
}
Average on Day #1 = 70.000000
Average on Day #2 = 70.000000
Average on Day #3 = 76.666664
Average on Day #4 = 85.333336
Average on Day #5 = 71.666664