您的位置:首页 > 其它

函数第三次练习

2014-12-27 00:00 357 查看
1. 使用递归函数实现计算n!,并在main函数中调用。

#include<stdio.h>
int fun(int n)
{
if(n==1)
return 1;
return (n*fun(n-1));
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",fun(n));
}


2. 某数列为K(n)的定义为:用递归的方法求该数列的第6项k(6)。



#include<stdio.h>
int fun(int n)
{
if(n==1)
return 1;
if(n%2==0)
return fun(n-1)*2;
return fun(n-1)*3;
}
int main()
{
printf("%d",fun(6));
}


3. 设计一个函数,计算两个自然数的最大公约数。

#include<stdio.h>
//最大公约数之欧几里得算法
int Greatest(int m,int n);
int main()
{
int m,n;
scanf("%d%d",&m,&n);
printf("%d\n",Greatest(m,n));
}

int Greatest(int m,int n)
{
if(m%n==0)
return n;
return  yueshu(n,m%n);
}


当然还有用简单的for写

#include<stdio.h>
int fun(int a,int b)
{
int i;
for(i=b;;i--)
if(a%i==0&&b%i==0)
return i;
}
int main()
{
int a,b ,tmp;
scanf("%d%d",&a,&b);
printf("%d",fun(a,b));
}


4. 编写函数求方程ax2+bx+c=0的根。分别求出b2-4ac大于0、等于0和小于0的根。由主函数调用,对于输入的任意a、b、c计算并输出结果。

#include <stdio.h>
#include <math.h>
int main ()
{
void deerta(int a,int b,int c);
int a,b,c;
printf("分别输入方程ax^2+bx+c=0的各项系数\n");
scanf("%d%d%d",&a,&b,&c);
deerta(a,b,c);
}
void deerta(int a,int b,int c)
{

double p,q;
printf("此方程:\n");
if (a==0)
printf("该方程不是二次方程\n");
else
{
if (b*b-4*a*c==0)
{
printf("有两个相等实根\n");
p=(-b)/(2*a)+(-b)%(2*a);
q=(sqrt(b*b-4*a*c))/2*a;
printf("这两个根为");
printf("%.2f\n",p+q);
}
else
{
if (b*b-4*a*c>=0)
{
printf("有两个不等实根\n");
p=(-b)/(2*a)+(-b)%(2*a);
q=(sqrt(b*b-4*a*c))/2*a;
printf("这两个根分别为");
printf("%.2f和%.2f\n",p+q,p-q);
}
else
{
printf("有两个共轭复根\n");
p=(-b)/(2*a)+(-b)%(2*a);
q=(sqrt(-(b*b-4*a*c)))/2*a;					//开根号时根号里是负数
printf("这两个根分别为");
printf("%.2f+%.2fi和%.2f-%.2fi\n",p,q,p,q);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  练习题