用可变参数列表实现求n个数的平均值

va_list arg;声明一个va_list 类型的变量arg,它用于访问参数列表的未确定部分;

va_start(arg,val);第一个参数是va_list的变量名,第二个参数是不确定参数的前一个参                               数;

a_arg(arg,int);返回这个参数的值,并使用var_arg指向下一个可变参数,第一个参数是

va_list的变量名,第二个是不确定参数的类型

<span style="font-size:24px;">#include<stdio.h>
#include<stdarg.h>
double average(int val,...)
{
	va_list arg;
	double sum=0.0;
	va_start(arg,val);
	int i=0;
	for(i=0;i<val;i++)
	{
		sum+=va_arg(arg,int);
	}
	va_end(arg);
	return sum/val;
}
int main()
{
	double ret=average(5,1,2,3,4,5);
	printf("%f\n",ret);
	return 0;
}</span>

时间: 2024-10-29 05:11:53

用可变参数列表实现求n个数的平均值的相关文章

浅析可变参数列表的使用

在我们使用函数时,一般大多数情况下里面的参数都是给定的,而且我们一般使用时并不会超过三个参数,可是这并不排除不会出现三个以上的参数,比如说求平均值,求和等等一些可能出现三个以上参数的函数运算,这时我们的参数不再是固定的,而是随时会不断变化的.因此我们就需要一种方法来实现它们,这种方法就是C语言给我们提供的一种叫做可变参数列表的函数方法. 首先,可变参数列表是通过宏来定义的,而这些宏又在<stdarg.h>的头文件中,因此我们在使用时要先引用该头文件,在引用后我们需要其下三个宏的函数: void

可变参数列表的实现

在学习C语言的过程中,大家是不是和我一样,认为printf是一个神一样的函数?他可以接受不同数目,不同类型的参数,他到底是怎么实现的呢? 让我们去看一下它的源代码: printf源代码: int printf(const char *fmt,...) { int res; va_list arg; va_start(arg,fmt); res = vprintf(fmt,arg); va_end(arg); return res; } 它采用的是可变参数列表,可变参数列表主要有以下两个缺点: 1

【C语言】求多个数中的最大值(可变参数列表)

求多个数中的最大值要求用可变参数列表: 代码如下: <span style="font-size:18px;">#include<stdio.h> #include<stdarg.h> int Max(int n,...) { int i=0; int max=0; va_list arg; va_start(arg,n); for(i=0;i<n;i++) { int val=va_arg(arg,int); if (val>max)

用可变参数列表求平均值

<stdarg.h> //头文件 va_list arg  访问参数列表未确定部分 va_start(arg,val);//将 arg_ptr 设置为传递给该函数参数列表的第一个可选参数  arg是声明的变量名,val是已确定参数列表最后一个参数 va_arg(arg,int);//从 arg_ptr给出的位置检索 type 的值,并将 arg_ptr 指向列表中的下一个参数,使用 type 的范围确定下一个参数开始的位置.int是下一个参数的类型 va_end(arg);//重置指向 NUL

可变参数列表

函数原型:列出了函数期望收到的参数数目及类型,但是它只能显示"固定数目"的参数. 可变参数列表:让一个函数在不同的时刻接受"不同数目"的参数.可变参数列表是通过宏来实现的,这些宏都在stdarg.h这个头文件中,所以使用可变参数列表时要引用头文件#include<stdarg>. 例如:求寻找一组整数中最小的值,因为整数的个数不确定,所以函数在传参的时候也是不确定的,因此需要用到可变参数列表: 利用可变参数列表求最小值:来看看可变参数列表的形式: int

可变参数列表的例题

1.使用可变参数列表实现任意个数求平均值. #include<stdio.h> #include<stdarg.h> float average(int val,...) { int i=0; float sum=0.0; float ave=0.0; va_list arg; va_start(arg,val); for(i=0;i<val;i++) { sum+=va_arg(arg,int); } va_end(arg); ave=sum/val; return ave

【C语言】可变参数列表。

(1)先看一个求平均值的函数 #include <stdio.h> double average(int val,int v1,int v2,int v3,int v4,int v5) { double sum = v1; if(val >= 2) sum += v2; if(val >= 3) sum += v3; if(val >= 4) sum += v4; if(val >= 5) sum += v5; return sum/val; } int main ()

(C语言)可变参数列表

C函数要在程序中用到以下这些宏: void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list arg_ptr, type ); void va_end( va_list arg_ptr ); va_list:用来保存宏va_start.va_arg和va_end所需信息的一种类型.为了访问变长参数列表中的参数,必须声明 va_list类型的一个对象       定义: typedef char *  va_list; va

java可变参数列表的实现

参数就是我们调用一个方法时需要传入得数据,在方法中可能需要参数协助处理数据或者对参数进行解析处理以达到我们希望得到的数据和结果. 平常我们在写一个方法时,我们能确定需要传入什么样的参数以及参数的个数,这样我们在实现这个方法的时候在确定参数的时候都会有明确的目标.但是有时候会有这种特殊情况,我们并不知道我们将要传入几个参数,或者说我们并不确定外部会传入多少参数.在这种情况下,我们就要用到可变参数列表.下面是可变参数方法的实现方法. 1.传入数组对象或者集合,这里只对传入数组对象进行简单说明,集合的