学点 C 语言(40): 函数 - 多参函数(2)
3. 指定数目的浮点数求和:
该函数参数一指定数目, 之后是列表.
#include
#include
double sum(int num, double f1, ...)
{
va_list p;
double out = f1;
va_start(p, f1);
while(--num)
{
f1 = va_arg(p, double);
out += f1;
}
va_end(p);
return(out);
}
int main(void)
{
printf("%gn", sum(3, 1.1, 2.2, 3.3)); /* 6.6 */
printf("%gn", sum(2, 1.1, 2.2, 3.3)); /* 3.3 */
getchar();
return 0;
}
4. 整数与浮点数求和:
本例模拟了 printf 函数的样式, 但只支持整数与浮点数.
#include
#include
double sum(char *str, ...)
{
va_list List;
double out = 0.0;
va_start(List, str);
while (*str)
{
if (*str == '%')
{
switch (*(++str)) {
case 'd': out += va_arg(List, int); break;
case 'f': out += va_arg(List, double); break;
}
}
str++;
}
va_end(List);
return(out);
}
int main(void)
{
double d = sum("%d,%f,%d,%f", 1, 1.1, 2, 2.2);
printf("%gn", d); /* 6.3 */
getchar();
return 0;
}





