#include <stdio.h>
#include <stdarg.h>
int sum(int n_values, ...)
{
va_list var_arg;
int count;
int sum = 0;
va_start(var_arg, n_values);
for (count = 0; count < n_values; ++count)
{
sum += va_arg(var_arg, int);
}
va_end(var_arg);
return sum;
}
int main()
{
printf("%d\n", sum(3, 1, 2, 3, 4, 5));
}
#include <stdio.h>
#include <stdarg.h>
//求最大参数,以负数为结束标识
int max_para(int first_arg, ...)
{
va_list var_arg;
int max = 0;
if (first_arg >= 0)
{
int this_arg = first_arg;
max = first_arg;
va_start(var_arg, first_arg);
while ((this_arg = va_arg(var_arg, int)) >= 0)
if (this_arg > max)
max = this_arg;
va_end(var_arg);
}
return max;
}
int main()
{
printf("%d\n", max_para(10, 10, 20, 30, -1));
}
#include <stdio.h>
#include <stdarg.h>
//实现printf函数,输出char和char *
void my_printf(char *format, ...)
{
va_list arg;
char ch;
char *src;
va_start(arg, format);
while ((ch = *format++) != '\0')
{
if (ch != '%')
{
putchar(ch);
continue;
}
switch(*format != '\0' ? *format++ : '\0')
{
/*
case 'd':
printf_integer(va_arg(arg, int));
break;
case 'f':
printf_float(va_arg(arg, float));
break;
*/
case 'c':
putchar(va_arg(arg, char));
break;
case 's':
src = va_arg(arg, char *);
while (*src != '\0')
putchar(*src++);
break;
}
}
}
int main()
{
my_printf("%c%c %c\n", 'A', 'B', 'C');
my_printf("%s%s %s\n", "hello ", "world", "!");
}