龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

学点 C 语言(40): 函数 - 多参函数(2)

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
3. 指定数目的浮点数求和: 该函数参数一指定数目, 之后是列表. #include #include double sum(int num, double f1, ...) { va_list p; double out = f1; va_start(p, f1); while(--num) {

  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;

}

精彩图集

赞助商链接