#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <stdarg.h>
#include "func_test.h"
/*递归函数将输入的整数转换为字符串形势*/
void binary_to_ascii(u32 value)
{
u32 quotient;
quotient = value / 10;
if(quotient != 0)
binary_to_ascii(quotient);
putchar( value % 10 + '0');
}
/*可变参数的函数,计算平均值*/
float average(int n_values, ... )
{
va_list var_arg;
int count;
float sum = 0;
/*从va_start开始访问可变参数*/
va_start( var_arg , n_values );
/*添加取自可变参数列表的值*/
for( count = 0; count < n_values; count += 1)
{
sum += va_arg(var_arg , int);
}
/*完成处理可变参数*/
va_end( var_arg );
return sum / n_values;
}
/*递归函数求厄米多项式*/
int hermite(int n , int x)
{
if(n <= 0)
{
return 1;
}
if(n == 1)
{
return 2*x;
}
if(n >= 2)
{
return (2*x*hermite(n-1 , x) - 2*(n-1)*hermite(n-2,x));
}
}
/*求两个数的最大公约数*/
int gcd(int M , int N)
{
int R = 0;
if((M <= 0) || (N <= 0))
{
return 0;
}
R = M % N;
if(R == 0)
{
return N;
}
else if(R > 0)
{
return gcd(N , R);
}
}
/*ascii to integer,字符串转换为整数*/
int ascii_to_integer( char *string )
{
u32 result = 0;
while(*string != '\0')
{
if(*string >= '0' && *string <= '9')
{
result = result * 10 + (*string - '0');
string++;
}
else
{
return 0;
}
}
return result;
}
/*编写名为max_list的函数,用于检查任意数目的整形参数并返回它们中的最大值*/
int max_list(n_values , ...)
{
va_list var_arg;
int max = 0;
int temp = 0;
u32 i = 0;
va_start(var_arg , n_values);
for(i = 0; i < n_values; i++ )
{
temp = va_arg(var_arg,int);
if(temp >= max)
{
max = temp;
}
}
va_end(var_arg);
return max;
}
int main(void)
{
// binary_to_ascii(15643);
// printf("The sum is :%f\n",average(4,8,6,4,8));
// printf("The hermite value is :%d\n",hermite(4,8));
// printf("The gcd value is :%d\n",gcd(78,96));
// printf("The ascii to integer is :%d\n",ascii_to_integer("1678"));
printf("The max num is :%d\n",max_list(6,1,3,5,2,17,9));
getch();
return 0;
}
递归函数及可变参数的几个经典编程练习
最新推荐文章于 2022-10-27 17:32:48 发布