函数的嵌套调用:函数内调用函数
#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; }
时间: 2024-11-06 03:31:24