1.使用可变参数,实现函数,求函数参数的平均值。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include <stdarg.h>
int average(int num, ...)//第一个参数传的是参数的个数,后面三个点代表可变参数列表
{
int sum = 0;
va_list arg; //定义一个va_list类型的变量
va_start(arg, num); //宏 va_start
for (int i = 0; i < num; i++)
{
sum += va_arg(arg, int); //宏 va_arg
}
va_end(arg); //宏 va_end
return sum / num;
}
int main()
{
int aver = 0;
aver = average(5,2,4,6,8,10); //第一参数为个数,之后的数为被平均的数
printf("%d\n", aver);
system("pause");
return 0;
}
2.使用可变参数,实现函数,求函数参数的最大值。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdarg.h>
#include <windows.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)
{
max = val;
}
}
va_end(arg);
return max;
}
int main()
{
int ret = Max(10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
printf("%d\n", ret);
system("pause");
return 0;
}
3.模拟实现printf函数,可完成下面的功能
//
//能完成下面函数的调用。
//print("s ccc d.\n","hello",'b','i','t',100);
//函数原型:
//print(char *format, ...)
//
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
#include<stdarg.h>
void print(char *format, ...)
{
va_list arg;
va_start(arg, format);
printf("%s ", va_arg(arg, char*));
printf("%c", va_arg(arg, char));
printf("%c", va_arg(arg, char));
printf("%c ", va_arg(arg, char));
printf("%d", va_arg(arg, int));
printf("\n");
va_end(arg);
}
int main()
{
print("s ccc d.\n", "hello", 'b', 'i', 't', 100);
system("pause");
return 0;
}