函数作业:
4.4,写一个将整数转换成字符串的函数。 源程序: #include
for(j=0;j<=i/2;j++)
{temp=c[j];c[j]=c[i-j-1];c[i-j-1]=temp;} for(j=0;j
运行结果:
123
1 2 3
Press any key to continue
4.5写出计算Ackermann函数Ack(m,n)的递归计算函数,对于m>=0,n>=0, Ack(m,n)定义为 Ack(0,n)=n+1
Ack(m,0)= Ack(m-1,1)
Ack(m,n)= Ack(m-1,Ack(m,n-1)), m>0, n>0 源程序: #include
if(m==0)
return (n+1); else if(n==0)
return ack(m-1,1); else
return ack(m-1,ack(m,n-1)); }
void main() {int m,n;
printf(\scanf(\%d\
printf(\
4.6分别写出Hermite多项式Hn(x)之值的递推和递归函数,Hn(x)定义如下: H0(x)=1 H1(x)=2*x;
Hn(x)=2*x* Hn-1(x)-2*(n-1) Hn-2(x), x>1 源程序: #include
if(n==0) return 1; if(n==1) return (2*x);
if(x>1)
return (2*x*hermite(n-1,x)-2*(n-1)*hermite(n-2,x)); }
void main()
{int n,x;
printf(\scanf(\%d\
printf(\
运行结果:
input n,x:5 5
hermite(5,5)=80600
Press any key to continue
实验五:
1.某数列为K(n)的定义为:求该数列的第六项k(6)。 k(n)=1 n=1 k(n-1)×2 n为偶数 k(n-1)×3 n为奇数 源程序: #include
else if(n%2==0) m=k(n-1)*2; else m=k(n-1)*3; return (m); }
void main( ) {int i;
int j;
printf(\scanf(\
if(i<=0)printf(\else
{j=k(i); printf(\}
2. 写出判断素数的函数,在主函数中输入一序列整数(ctrl+z结束),输出是否是素数的信息。 源程序: #include
while(scanf(\{x=p(n);
if(x==1) {printf(\if(t==0) printf(\} }
int p(int n) {
int i,k; k=sqrt(n);
for(i=2;i<=k;i++) if(n%i==0) return 0; return 1; }
3. 写两个函数,求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。 源程序:
#include
if(m r=m%n; while(r!=0) {m=n; n=r; r=m%n; } return n; } } int bei( int m,int n ) { return m * n/ gcd( m, n) ; } void main() { int a,b; printf(\输入两个数\\n\scanf(\ int c=gcd(a,b); int d=bei(a,b); printf(\最大公约数为:%d\\t\\n最小公倍数为:%d\\n\ } 4.输出Fibonacci序列前20个数,用函数来实现. f(n)=f(n-1)+f(n-2) 当 n>2 f(2)=f(1)=1 当 n=1或n=2 源程序: #include int f(int n) { int m; if(n==1||n==2) m=1; else m=f(n-2)+f(n-1); return m; } void main( ) {int i; int n; printf(\scanf(\ if(n<=0) printf(\else {for (i=1;i<=n;i++) printf(\} }