7.11.1
int hermite(int n, int x)
{
if(n <= 0)
return 1;
else if(n == 1)
return 2 * x;
else
return 2 * x * hermite(n - 1, x) - 2 * (n - 1) * hermite(n - 2, x);
}
7.11.2
循环写法
int gcd(int m, int n)
{
if(m < 0 || n < 0)
return 0;
int temp;
while(m % n)
{
temp = n;
n = m % n;
m = temp;
}
return n;
}
递归写法
int gcd(int m, int n)
{
if(m < 0 || n < 0)
return 0;
if(m % n)
return gcd(n, m % n);
else
return n;
}
7.11.3
int ascii_to_integer(char * string)
{
int num = 0;
while(*string)
{
if('0' <= *string && *string <= '9')
num += *string++ - '0';
else
return 0;
if(*string)
num *= 10;
}
return num;
}
7.11.4
int max_list(int num, ...)
{
va_list ap;
va_start(ap, num);
int i, big = 0, temp;
for(i = 0; (temp = va_arg(ap, int)) > 0 && i < num; i++)
{
if(temp > big)
big = temp;
}
va_end(ap);
return big;
}
7.11.5
void print(char * Format, ...)
{
va_list ap;
va_start(ap, Format);
char * str;
if(*Format != '%')
return;
switch(*++Format)
{
case 'd':
print_integer(va_arg(ap, int));
break;
case 'f':
print_float(va_arg(ap, double));//float会被提升为double型
break;
case 's':
str = va_arg(ap, char *);
while(*str)
putchar(*str++);
break;
case 'c':
putchar(va_arg(ap, int));//char会被提升为int型
break;
}
va_end(ap);
}
void print_integer(int n)
{
printf("%d\n", n);
}
void print_float(float n)
{
printf("%f\n", n);
}
7.11.6
借鉴了一位博主的写法
https://blog.csdn.net/m0_47821660/article/details/107500455?spm=1001.2014.3001.5502
void written_amount(unsigned int amount, char * buffer)
{
int Reserve[4], i;
for(i = 0; amount; i++, amount /= 10000)//以千为组将目标数分割到数组中
Reserve[i] = amount % 10000;
char * str;
int Units, Decade, Hundreds, Kilobit;//分别获取个十百千位
for(--i; i >= 0; i--)
{
Units = Reserve[i] % 10;
Reserve[i] /= 10;
Decade = Reserve[i] % 10;
Reserve[i] /= 10;
Hundreds = Reserve[i] % 10;
Reserve[i] /= 10;
Kilobit = Reserve[i] % 10;
switch(Kilobit)
{
case 0:
break;
case 1:
str = "一千";
while(*str)
*buffer++ = *str++;
break;
case 2:
str = "二千";
while(*str)
*buffer++ = *str++;
break;
case 3:
str = "三千";
while(*str)
*buffer++ = *str++;
break;
case 4:
str = "四千";
while(*str)
*buffer++ = *str++;
break;
case 5:
str = "五千";
while(*str)
*buffer++ = *str++;
break;
case 6:
str = "六千";
while(*str)
*buffer++ = *str++;
break;
case 7:
str = "七千";
while(*str)
*buffer++ = *str++;
break;
case 8:
str = "八千";
while(*str)
*buffer++ = *str++;
break;
case 9:
str = "九千";
while(*str)
*buffer++ = *str++;
break;
default:
return;
}
switch(Hundreds)
{
case 0:
break;
case 1:
str = "一百";
while(*str)
*buffer++ = *str++;
break;
case 2:
str = "二百";
while(*str)
*buffer++ = *str++;
break;
case 3:
str = "三百";
while(*str)
*buffer++ = *str++;
break;
case 4:
str = "四百";
while(*str)
*buffer++ = *str++;
break;
case 5:
str = "五百";
while(*str)
*buffer++ = *str++;
break;
case 6:
str = "六百";
while(*str)
*buffer++ = *str++;
break;
case 7:
str = "七百";
while(*str)
*buffer++ = *str++;
break;
case 8:
str = "八百";
while(*str)
*buffer++ = *str++;
break;
case 9:
str = "九百";
while(*str)
*buffer++ = *str++;
break;
default:
return;
}
switch(Decade)
{
case 0:
break;
case 1:
str = "一十";
while(*str)
*buffer++ = *str++;
break;
case 2:
str = "二十";
while(*str)
*buffer++ = *str++;
break;
case 3:
str = "三十";
while(*str)
*buffer++ = *str++;
break;
case 4:
str = "四十";
while(*str)
*buffer++ = *str++;
break;
case 5:
str = "五十";
while(*str)
*buffer++ = *str++;
break;
case 6:
str = "六十";
while(*str)
*buffer++ = *str++;
break;
case 7:
str = "七十";
while(*str)
*buffer++ = *str++;
break;
case 8:
str = "八十";
while(*str)
*buffer++ = *str++;
break;
case 9:
str = "九十";
while(*str)
*buffer++ = *str++;
break;
default:
return;
}
switch(Units)
{
case 0:
break;
case 1:
str = "一";
while(*str)
*buffer++ = *str++;
break;
case 2:
str = "二";
while(*str)
*buffer++ = *str++;
break;
case 3:
str = "三";
while(*str)
*buffer++ = *str++;
break;
case 4:
str = "四";
while(*str)
*buffer++ = *str++;
break;
case 5:
str = "五";
while(*str)
*buffer++ = *str++;
break;
case 6:
str = "六";
while(*str)
*buffer++ = *str++;
break;
case 7:
str = "七";
while(*str)
*buffer++ = *str++;
break;
case 8:
str = "八";
while(*str)
*buffer++ = *str++;
break;
case 9:
str = "九";
while(*str)
*buffer++ = *str++;
break;
default:
return;
}
switch(i)//表示每组的单位
{
case 0:
break;
case 1:
str = "万";
while(*str)
*buffer++ = *str++;
break;
case 2:
str = "亿";
while(*str)
*buffer++ = *str++;
break;
case 3:
str = "兆";
while(*str)
*buffer++ = *str++;
break;
default:
return;
}
*buffer = '\0';
}
}