C语言编程学习课件 (37).pdf
Programming In CProgramming In C Programming In CProgramming In C Nested calls of functions Function call is similar to entrust someone to complete a task,and such entrust allows for delivery.For example,A entrusts B to do something,and B entrusts C to do it.This is a nested call relationship.main()function call for function A end Nested call procedure diagram:function A call for function B function B Nested calls of system functions the process of nested call to system functions,is a common form of learning in the past.#include stdio.h#include math.h /import the math library main()/main()function double x,y,z;scanf(%lf,&x);y=x;z=x*exp(-pow(x,2)-pow(y,2);printf(z=%lfn,z);result 0.8,-0.2 example:Nested calls of system functions 0.405294 double exp(double x)double pow(double x,double y)xe(-x2-y2)When writing a user-defined function,it is more efficient to directly call the system functions if they involve the calculation functions provided by the system functions.For example,write a program to solve k=x*sin(x)1.only one parameter is required in the design of user-defined functions.Compile function cal(x)to calculate x*sin(x).2.the nested call of the system function sin(x)is used to calculate the sine function,thereby completing the entire calculation.Example:solve k=x*sin(x)#include stdio.h#include math.h double cal(double x)/solving function return x*sin(x);main()/main()function double k,x;scanf(%lf,&x);k=cal(x);printf(k=%lfn,k);The user-defined function calls the system function Solution ideas 3.the main()function calls the user-defined function,and the user-defined function nested calls the system function.import sin()For example:calculate the factorial sum of consecutive natural numbers.1!+2!+5!Solution ideas 1.write the fact function fact()to calculate the factorial.2.write the sum function sum()3.call the sum()function in the main()function,and the sum()function calls the fact()function in a loop nest to achieve the accumulation of continuous natural number factorial sums.Example:slove 1!+2!+5!int fact(int x)int f=1,i;for(i=1;i=x;i+)f=f*i;return f;int sum(int n)int i,s=0;for(i=1;i=n;i+)s=s+fact(i);return s;main()int s;s=sum(5);printf(s=%dn,s);result s=153 Nested calls between user-defined functions In the mutual call of many user-defined functions,it should always be noted that if the call is prior to the definition,the function prototype description of the called function must be done before the call.(Functions with return value of int type can omit the function prototype description in the above cases).Summary of Nested calls of functions 1.Functions are equal;the positions where functions are defined are parallel,and there is no chronological order.2.Functions are equal and can be called each other.One exception is the main()function,which is the entry point of a program and can only be called by the operating system.3.Because functions are equal,it is not allowed to define another function within a function body(functions do not allow nested definitions).Programming In CProgramming In C