# define _CRT_SECURE_NO_WARNINGD
头文件:
# include<stdio.h>
# include<stdlib.h>
# include<string.h>
# include<stdarg.h>
# include<stdio.h>
# include<stdlib.h>
# include<string.h>
# include<stdarg.h>
1.使用可变参数,实现函数,求函数参数的平均值。
# include<stdarg.h>
int average(int n, ...)
{
va_list arg;
int sum = 0;
int i = 0;
va_start(arg,n);
for (i = 0; i < n; i++)
{
sum += va_arg(arg,int);
}
va_end(arg);
return sum / n;
}
int main()
{
int arr = average(5, 1, 2, 3, 4, 5 );
int ret = average(arr);
printf("%d\n", ret);
system("pause");
return 0;
}
2.使用可变参数,实现函数,求函数参数的最大值。
int Max(n, ...)
{
va_list arg;
int i = 0;
va_start(arg, n);
int max = va_arg(arg, int);
for (i = 0; i < n; i++)
{
int tmp = va_arg(arg, int);
if (max < tmp)
{
max = tmp;
}
}
va_end(arg);
return max;
}
int main()
{
int max = Max(4, 1, 2, 3, 4);
system("pause");
return 0;
}
3.模拟实现printf函数,可完成下面的功能
能完成下面函数的调用。
print("s ccc d.\n","hello",'b','i','t',100);
函数原型: //print(char *format, ...)
int print_num(int num)
{
if (num > 9)
{
print_num(num/10);
}
putchar(num % 10 + '0');
}
print(const char *format, ...)
{
int n = 0;
va_list arg;
va_start(arg,format);
while (*format)
{
switch (*format)
{
case's':
{
char *str = va_arg(arg, char *);
while (*str)
{
putchar(*str);
str++;
}
}
break;
case'c':
{
char ch = va_arg(arg, char);
putchar(ch);
}
break;
case'd':
{
int tmp = va_arg(arg, int);
print_num(tmp);
}
break;
default:
putchar(*format);
break;
}
format++;
}
va_end(arg);
}
int main()
{
print("s ccc d.\n", "hello", 'b', 'i', 't',100);
system("pause");
return 0;
}
# include<stdarg.h>
int average(int n, ...)
{
va_list arg;
int sum = 0;
int i = 0;
va_start(arg,n);
for (i = 0; i < n; i++)
{
sum += va_arg(arg,int);
}
va_end(arg);
return sum / n;
}
int main()
{
int arr = average(5, 1, 2, 3, 4, 5 );
int ret = average(arr);
printf("%d\n", ret);
system("pause");
return 0;
}
2.使用可变参数,实现函数,求函数参数的最大值。
int Max(n, ...)
{
va_list arg;
int i = 0;
va_start(arg, n);
int max = va_arg(arg, int);
for (i = 0; i < n; i++)
{
int tmp = va_arg(arg, int);
if (max < tmp)
{
max = tmp;
}
}
va_end(arg);
return max;
}
int main()
{
int max = Max(4, 1, 2, 3, 4);
system("pause");
return 0;
}
3.模拟实现printf函数,可完成下面的功能
能完成下面函数的调用。
print("s ccc d.\n","hello",'b','i','t',100);
函数原型: //print(char *format, ...)
int print_num(int num)
{
if (num > 9)
{
print_num(num/10);
}
putchar(num % 10 + '0');
}
print(const char *format, ...)
{
int n = 0;
va_list arg;
va_start(arg,format);
while (*format)
{
switch (*format)
{
case's':
{
char *str = va_arg(arg, char *);
while (*str)
{
putchar(*str);
str++;
}
}
break;
case'c':
{
char ch = va_arg(arg, char);
putchar(ch);
}
break;
case'd':
{
int tmp = va_arg(arg, int);
print_num(tmp);
}
break;
default:
putchar(*format);
break;
}
format++;
}
va_end(arg);
}
int main()
{
print("s ccc d.\n", "hello", 'b', 'i', 't',100);
system("pause");
return 0;
}
结果:
