double my_average(int num, ...){
assert(num > 0);
va_list arg;
int i = 0;
int sum = 0;
va_start(arg, num);
for (i = 0; i < num; i++){
sum += va_arg(arg, int);
}
va_end(arg);
return sum*1.0 / num;
}
int get_max(int num, ...){
assert(num>0);
va_list arg;
int i = 0;
va_start(arg, num);
int max = va_arg(arg, int);
for (i = 1; i < num; i++){
int other = va_arg(arg, int);
max = (max > other ? max : other);
}
va_end(arg);
return max;
}
//4.1.模拟实现printf函数,可完成下面的功能
//能完成下面函数的调用。
//print("s ccc d\n","hello",'b','i','t',100);
//函数原型:
//print(char *format, ...)
void print_int(int num){
if (num > 9){
print_int(num / 10);
}
putchar(num%10+'0');
}
void my_print(char* format,...){//s ccc d\n
va_list arg;
va_start(arg, format);
while (*format){
switch (*format){
case 's':
{
char* str = va_arg(arg, char*);
while(*str){
putchar(*str++);
}
}
break;
case 'c':
{
char ch = va_arg(arg, char);
putchar(ch);
}
break;
case 'd':
{
int num = va_arg(arg, int);
print_int(num);
}
break;
default:
putchar(*format);
break;
}
format++;
}
}