用可变参数函数求和、最大值和最小值的 C 程序

假设我们要制作一些可以接受多个参数的函数,没有固定数量的参数。我们要做三个函数sum(),max()和min(),它们可以分别计算数字的总和,数字的最大值和给定数字的最小值。这些函数中的每一个都将参数数量作为它们的第一个参数。要定义这种类型的函数,我们需要在函数参数中使用省略号 (...) 三个点。要使用它,我们必须包含stdarg.h头文件。这种类型的函数称为可变参数函数。要访问变量参数,我们可能会注意到四种不同的事情 -

  • va_list :这存储所有给定的参数

  • va_start : 这将开始访问变量参数 ap 变量

  • va_arg :这用于检索给定类型的下一个参数

  • va_end :这结束访问变量参数列表

所以,如果我们调用像 -;

  • 总和(5, 5, 2, 8, 9, 3)

  • 最大(3, 5, 9, 2)

  • 分钟(6, 8, 5, 2, 6, 7, 9)

那么输出将是 27(所有五个数字的总和)、9(给定三个数字的最大值)、2(给定六个数字的最小值)。

示例

让我们看看以下实现以获得更好的理解 -

#include <stdio.h>

#include <stdarg.h>

int sum (int cnt,...) {

    va_list ap;

    int i, n;

    va_start(ap, cnt);

    n = 0;

    for (i=0;i<cnt;i++){

        n += va_arg(ap, int);

     }

    va_end(ap);

    return n;

}

int min(int cnt,...) {

    va_list ap;

    int i, current, minimum;

    va_start(ap, cnt);

    minimum = 99999;

    for (i=0;i<cnt;i++){

        current = va_arg(ap, int);

        if (current < minimum)

            minimum = current;

    }

    va_end(ap);

    return minimum;

}

int max(int cnt,...) {

    va_list ap;

    int i, current, maximum;

    va_start(ap, cnt);

    maximum = 0;

    for (i=0;i<cnt;i++){

        current = va_arg(ap, int);  

        if (current > maximum)

            maximum = current;

    }

    va_end(ap);

    return maximum;

}

int main(){

    printf("%d\n",sum(5, 5, 2, 8, 9, 3));

    printf("%d\n",max(3, 5, 9, 2));

    printf("%d\n",min(6, 8, 5, 2, 6, 7, 9));

}

输入

sum(5, 5, 2, 8, 9, 3)

max(3, 5, 9, 2)

min(6, 8, 5, 2, 6, 7, 9)

输出结果
27

9

2

以上是 用可变参数函数求和、最大值和最小值的 C 程序 的全部内容, 来源链接: utcz.com/z/343699.html

回到顶部