前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。
1.函数的定义
函数是一个完成特定工作的独立程序模块,包括库函数和自定义函数两种。库函数由C语言系统提供定义,编程时只要直接调用即可,例如:scanf(),printf()等为库函数。自定义函数由用户自己定义,例如:自己定义的cylinder(),fact()。
函数定义的一般形式为:
函数类型 函数名(形式参数表)
{
函数实现过程
}
(1)函数首部
函数首部由函数类型,函数名和形式参数表组成,位于函数定义的第一行。且函数首部后面不能加分号,它和函数体一起构成完整的函数定义。
例如:
double cylinder(double r,double h)
表明函数的类型是double,也即函数的结果类型;函数名是cylinder;函数有两个形参r和h,它们的类型都是double,在cylinder()函数被调用时,这两个形参的值将由主调函数给出。
(2)函数体
函数体体现函数的实现过程,由一对大括号内的若干条语句组成,用以计算,或完成特定的工作,并用return语句返回运算的结果。
2.函数的调用
(1)函数调用过程
任何C程序执行,首先从主函数main()开始,如果遇到某个函数调用,主函数被暂停执行,转而执行相应的函数,该函数执行完后将返回主函数,然后再从原来暂停的位置继续执行。
(2)函数调用的形式
函数调用的一般形式为:
函数名 (实际参数表)
这里实际参数可以是常量,变量和表达式。
对于实现计算功能的函数,函数调用通常出现在两种情况下:
a.赋值语句
volume=cylinder(radius,height);
b.输出函数的实参
printf("%f",cylinder(radius,height);
(3)参数传递
函数定义时,位于其首部的参数被称为形参,主调函数的参数被称为实参,形参除了能接受实参的值外,使用方法与普通变量类似。形参与实参必须一一对应,两者数量相同,类型尽量一致。程序运行遇到函数调用时,实参的值依次传给形参,这就是参数传递。
(4)函数结果返回
函数结果返回的形式如下:
return 表达式;
注意:
a.return语句的作用有两个:一是结束函数的运行;二是带着运算结果(表达式的值)返回主调函数。
b.return语句只能返回一个值,如果函数产生了多个运算结果,将无法通过return返回。
(5)函数原型声明
函数声明的目的主要是说明函数的类型和参数的情况,以保证程序编译时能判断对该函数的调用是否正确。函数声明的一般格式为:
函数类型 函数名(参数表);
注意:函数声明是一条C语句,而函数定义时的函数首部不是语句,后面不能跟分号。
问题1: 计算圆柱体的体积。输入圆柱的高和半径,求圆柱体积volume=丌*r*r*h。要求定义和调用函数cylinder(r,h)计算圆柱体的体积。
源程序:
#include
double cylinder(double r, double h); //函数声明
int main()
{
double height,radius,volume;
printf("Enter radius and height:");
scanf("%lf %lf", &radius, &height);
volume=cylinder(radius,height); //调用函数,返回值赋给volume
printf("volume=%.3f\n",volume); //输出圆柱体积
return 0;
}
double cylinder(double r, double h) //函数首部
{
double result;
result=3.1415926*r*r*h; //计算圆柱体积
return result; //返回结果
}
问题2:计算五边形的面积。将一个五边形分割成3个三角形,输入这些三角形的7条边长,计算该五边形的面积。要求定义和调用函数area(x,y,z)计算边长x,y,z的三角形面积。
源程序:
#include
#include
double area(double x, double y, double z); //函数声明
int main()
{
double a1,a2,a3,a4,a5,a6,a7,s;
printf("Please input 7 side lengths in the order a1 to a7:\n");
scanf("%lf%lf%lf%lf%lf%lf%lf", &a1, &a2, &a3, &a4, &a5, &a6, &a7);
s=area(a1,a5,a6)+area(a4,a6,a7)+area(a2,a3,a7); //调用三次area函数
printf("The area of the Pentagon is %.2f\n", s);
return 0;
}
double area(double x, double y, double z) //函数首部
{
//使用海伦-秦九韶公式计算三角形面积的函数
double p=(x+y+z)/2;
return sqrt(p*(p-x)*(p-y)*(p-z));
}
感谢老铁的浏览,希望老铁可以一键三连加个关注,您的支持和鼓励是我前进的动力,后续会分享更多学习编程的内容感谢老铁的浏览,希望老铁可以一键三连加个关注,您的支持和鼓励是我前进的动力,后续会分享更多学习编程的内容。