求平均值:
#include<stdio.h> #include<Windows.h> int average(int n,...){ va_list arg; //声明变量用于访问参数列表的为确定部分 int i=0; int sum=0; va_start(arg,n); //用来初始化,第一个参数是va_list变量名,第二个参数是省略号前最后一个有名字的参数,初始化过程,是把arg变量设置为指向可变参数部分的第一个参数 for(;i<n;i++){ sum+=va_arg(arg,int); } return sum/n; va_end(arg); //访问最后一个参数之后调用arg清零 } int main() { int a=1; int b=2; int c=3; int avg1=average(2,a,b); int avg2=average(3,a,b,c); printf("%d\n",avg1); printf("%d\n",avg2); system("pause"); return 0; }
求最大值:
#include<stdio.h> #include<windows.h> int is_max(int n,...) { va_list arg; va_start(arg, n); int max = va_arg(arg, int); //取出第一个参数 n--; while (n--){ int data = va_arg(arg, int);//取出第二个参数 if (max < data) max = data; } return max; va_end(arg); } int main(){ int a = 4; int b = 10; int c = 19; int ret1 = is_max(2,b,a); int ret2 = is_max(3,b,c,a); printf("%d\n",ret1); printf("%d\n", ret2); system("pause"); return 0; }