// max_List.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
int get_max(int n_values, ...)
{
va_list var_arg;
int count = 0;
int max = 0;
va_start(var_arg, n_values);
for(int i=0; i<n_values; i += 1)
{
int cur = va_arg(var_arg, int);
if(cur > max)
max = cur;
}
va_end(var_arg);
return max;
}
//第一个参数表示数据的个数
void print_integer(int n_values, ...)
{
va_list var_arg;
va_start(var_arg, n_values);
for(int i=0; i<n_values; i+=1)
{
printf("%d ",va_arg(var_arg, int));
}
va_end(var_arg);
}
//第一个参数表示数据的个数
void print_float(int n_values, ...)
{
va_list var_arg;
va_start(var_arg, n_values);
for(int i=0; i<n_values; i+=1)
{
//在这里注意类型提升
printf("%lf ",(float)va_arg(var_arg, double));
}
va_end(var_arg);
}
void pInt(int i)
{
printf("%d", i);
}
void pFoat(double f)
{
printf("%lf",(float)f);
}
void print_fmt(const char* fmt,...)
{
va_list var_arg;
va_start(var_arg, fmt);
const char *p = NULL;
const char *q = NULL;
const char *temp =NULL;
for(p=fmt; p<&fmt[strlen(fmt)]; p++)
{
if(*p == '%')
{
switch(*++p)
{
case 'c':
putchar(va_arg(var_arg, char));
break;
case 's':
for(temp=va_arg(var_arg,char*),q=temp; q<temp+strlen(temp); q++ )
putchar(*q);
break;
case 'd':
pInt(va_arg(var_arg,int));
break;
case 'f':
pFoat(va_arg(var_arg,double));
break;
}
}
if(*p == ' ')
putchar(' ');
}
va_end(var_arg);
}
int _tmain(int argc, _TCHAR* argv[])
{
int max = get_max(4,1,2,3,4);
print_float(3,1.01, 2.0, 3.0);
float f = 12.0;
printf("\n\n\n\n");
print_fmt("%d %f",max,f);
return 0;
}