您的位置:首页 > 编程语言 > C语言/C++

C语言及程序设计提高例程-9 函数的嵌套调用

2015-02-10 21:07 190 查看
贺老师教学链接 C语言及程序设计提高 本课讲解

函数的嵌套调用:函数内调用函数

#include <stdio.h>
int gcd(int n1, int n2);
int lcm(int n1, int n2);
int main()
{
    int num1,num2;
    int iGcd, iLcm;  //最大公约数和最小公倍数
    printf("please input two numbers:");
    scanf("%d%d",&num1,&num2);
    iGcd=gcd(num1, num2);
    iLcm=lcm(num1,num2);
    printf("the gcd is: %d\n",iGcd);
    printf("the lcm is: %d\n",iLcm);
    return 0;
}

int gcd(int n1, int n2)
{
    int r;
    while(n2!=0)/*利用辗除法,直到n2为0为止*/
    {
        r=n1%n2;
        n1=n2;
        n2=r;
    }
    return n1;
}

int lcm(int n1, int n2)
{
    return n1*n2*gcd(n1, n2);
};


用弦截法求解方程
/*用弦截法求方程f(x)=x^3-5x^2+16x-80=0的根。*/

#include <stdio.h>
#include <math.h>

double f(double);                  //函数声明 
double xpoint(double, double);     //函数声明
double root(double, double);       //函数声明

int main( )
{
    double x1,x2,f1,f2,x;
    do
    {
        printf("input x1,x2:");
        scanf("%lf %lf", &x1, &x2);
        f1=f(x1);
        f2=f(x2);
    }
    while(f1*f2>=0);  //保证f(x1)和f(x2)异号,(x1,x2)间有根
    x=root(x1,x2);
    printf("A root is %.5f\n", x);
    return 0;
}

/*
功能:求(x1, x2)区间方程的实根
参数:两个浮点型值,表示x轴上两点,由主调函数保证f(x1)和f(x2)是异号
返回值:方程的根
*/
double root(double x1, double  x2)
{
    double x,y,y1;
    y1=f(x1);
    do
    {
        x=xpoint(x1,x2);
        y=f(x);
        if (y*y1>0)
        {
            y1=y;
            x1=x;
        }
        else
            x2=x;
    }
    while(fabs(y)>=0.00001);
    return x;
}

/*
功能:求(x1, f(x1))和(x2, f(x2))的连线与x轴的交点x
参数:两个浮点型值,表示x轴上两点
返回值:交点的x轴坐标
*/
double xpoint(double x1, double x2)
{
    double x;
    x=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
    return x;
}

/*
功能:求函数f(x)=x3-5x2+16x-80的值
参数:一个浮点型数,表示x轴上的一点
返回值:给定函数的值
*/
double f(double x)
{
    double y;
    y=x*x*x-5*x*x+16*x-80;
    return y;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: