1.阶乘n
#include
long fac(int n)
{
long f;
if(n==0) f=1;
else f=n*fac(n-1);
return (f);
}
main()
{
int n;
long y;
printf("\ninput a ieteger number:\n" );
scanf("%d",&n) ;
if (n<0)
printf("data error\n");
else
{
y=fac(n);
printf("%d!=%ld",n,y);
}
}
2.求组合数 (25分)
本题要求编写程序,根据公式C
n
m
=
m!(n−m)!
n!
算出从n个不同元素中取出m个元素(m≤n)的组合数。
建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。
输入格式:
输入在一行中给出两个正整数m和n(m≤n),以空格分隔。
输出格式:
按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。
输入样例:
2 7
输出样例:
result = 21
#include
int sushu(int n )
{int flag=1;
for(int i=2;i<n;i++)
{
if(n%i==0)
{
flag=0;
break;
}
}
return flag;
}
main()
{
int n,k,sum=0,c=0;
scanf("%d%d",&n,&k);
for(int i=n;i>1;i--)
{
if(sushu(i))
{
c++;
sum+=i;
printf("%d",i);
if(c==k||i==2)
{
printf("=%d",sum);
break;
}
else
printf("+");
}
}
3.递归求Fabonacci数列 (15分)
本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:
f(n)=f(n−2)+f(n−1) (n≥2),其中f(0)=0,f(1)=1。
函数接口定义:
int f( int n );
函数f应返回第n个Fabonacci数。题目保证输入输出在长整型范围内。建议用递归实现。
裁判测试程序样例:
#include
int f( int n );
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", f(n));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
6
输出样例:
8
#include
int fei(int n)
{
int f;
if(n==1)
{
f=1;
}
else if(n==2)
{
f=1;
}
else
{
f=fei(n-1)+fei(n-2);
}
return f;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",fei(n));
return 0;
}
4.递归计算Ackermenn函数 (20分)
本题要求实现Ackermenn函数的计算,其函数定义如下:
函数接口定义:
int Ack( int m, int n );
其中m和n是用户传入的非负整数。函数Ack返回Ackermenn函数的相应值。题目保证输入输出都在长整型
范围内。
裁判测试程序样例:
#include
int Ack( int m, int n );
int main()
{
int m, n;
scanf("%d %d", &m, &n);
printf("%d\n", Ack(m, n));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
2 3
输出样例:
9
#include
int Ack( int m, int n );
int main()
{
int m, n;
scanf("%d %d", &m, &n);
printf("%d\n", Ack(m, n));
return 0;
}
/* 你的代码将被嵌在这里 */
int Ack( int m, int n )
{
int f;
if(m==0)
f=n+1;
if(n==0&&m>0)
f=Ack(m-1, 1);
else if(m>0&&n>0)
f=Ack(m-1, Ack(m, n-1));
return f;
}
5.递归实现指数函数 (20分)
本题要求实现一个计算x
n
(n≥1)的函数。
函数接口定义:
double calc_pow( double x, int n );
函数calc_pow应返回x的n次幂的值。建议用递归实现。题目保证结果在双精度范围内。
裁判测试程序样例:
#include
double calc_pow( double x, int n );
int main()
{
double x;
int n;
scanf("%lf %d", &x, &n);
printf("%.0f\n", calc_pow(x, n));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
2 3
输出样例:
8
#include
int Ack( int m, int n );
int main()
{
int m, n;
scanf("%d %d", &m, &n);
printf("%d\n", Ack(m, n));
return 0;
}
/* 你的代码将被嵌在这里 */
int Ack( int m, int n )
{
int f;
if(m==0)
f=n+1;
if(n==0&&m>0)
f=Ack(m-1, 1);
else if(m>0&&n>0)
f=Ack(m-1, Ack(m, n-1));
return f;
}