#include
#include
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);
}
int main()
{
int n,x;
n=3;
x=2;
printf("%d",hermite(n,x));
return 0;
}
#include
#include
int gcd(int m,int n)
{
if(m <= 0 || n <= 0)
return 0;
if(m % n ==0)
return n;
else
return gcd(n,m%n);
}
int main()
{
int m,n;
m=99;
n=77;
printf("%d",gcd(m,n));
return 0;
}
#include
#include
int ascii_to_integer(char *string)
{
int res=0;
while(*string != '\0')
{
if(*string < '0' || *string > '9')
return 0;
else
{
res = res * 10 + *string - '0';
}
string++;
}
return res;
}
int main()
{
char str[]="4342121";
puts(str);
printf("%d",ascii_to_integer(str));
return 0;
}
#include
#include
#include
int max_list(int first,...)
{
va_list var_arg;
int max=first,temp;
va_start(var_arg,first);
while((temp=va_arg(var_arg,int))>=0)
{
if(temp>max)
max=temp;
}
va_end(var_arg);
return max;
}
int main()
{
printf("%d",max_list(1,2,101,56,54,3,6,-1));
return 0;
}
#include
#include
#include
void my_printf(char *format,...)
{
va_list arg;
char ch;
char *str;
va_start(arg,format);
while((ch = *format++) != '\0')
{
//遇到普通字符直接输出
if(ch != '%')
{
putchar(ch);
continue;
}
//遇到格式码,根据格式码读取后面的参数
switch(*format != '\0' ? *format++ : '\0')
{
case 'd':
//pritn_integer(va_arg(arg,int));
printf("%d",va_arg(arg,int));
break;
case 'f':
//print_float(va_arg(arg,float));
printf("%f",(float)va_arg(arg,double));
break;
case 'c':
putchar(va_arg(arg,int));
break;
case 's':
str=va_arg(arg,char *);
while(*str!='\0')
putchar(*str++);
break;
}
}
}
int main()
{
int a=81;
float b=3.14;
char c='s';
char *d="robot";
my_printf("%d %f %c %s\n",a,b,c,d);
return 0;
}
这里 float 型和 char 型在使用 va_arg 时指明的类型分别是 double 和 int,因为在看不到函数原型声明的参数类型时,会进行默认参数提升,具体见这篇文章
https://blog.csdn.net/qq_27833589/article/details/103218339
#include
#include
#include
char *digits[]={"","ONE ","TWO ","THREE ","FOUR ","FIVE ","SIX ","SEVEN ","EIGHT ","NINE ","TEN ",
"ELEVEN ","TWELVE ","THIRTEEN ","FOURTEEN ","FIFTEEN ","SIXTEEN ","SEVENTEEN ","EIGHTEEN ","NINETEEN "};
char *tens[]={"","","TWENTY ","THIRTY ","FORTY ","FIFTY ","SIXTY ","SEVENTY ","EIGHTY ","NINETY "};
char *magnitudes[]={"","THOUSAND ","MILLION ","BILLION "};
void written_three(unsigned int amount,char *buffer,char **magnitudes)
{
int value;
value=amount/1000;
if(value != 0)
written_three(value,buffer,magnitudes+1);
amount %= 1000;
if(amount != 0)
{
value = amount / 100;
if(value != 0)
{
strcat(buffer,digits[value]);
strcat(buffer,"HUNDRED ");
//printf("%s HUNDRED ",digits[value]);
}
value = amount % 100;
if(value < 20)
strcat(buffer,digits[value]);
//printf("%s ",digits[value]);
else
{
strcat(buffer,tens[value/10]);
strcat(buffer,digits[value%10]);
//printf("%s %s ",tens[value/10],digits[value%10]);
}
strcat(buffer,*magnitudes);
//printf("%s ",*magnitudes);
}
}
void written_amount(unsigned int amount, char *buffer)
{
if(amount == 0)
//printf("ZERO\n");
strcpy(buffer,"ZERO");
else
{
*buffer='\0';//一开始错误写成了 buffer='\0',这里把buffer赋为空字符串开始往后面添加字符串
written_three(amount,buffer,magnitudes);
}
}
int main()
{
char buffer[500];
written_amount(975034105,buffer);
puts(buffer);
return 0;
}