1.函数调用语句格式:函数名(参数1,参数2......);
2.功能:函数调用库函数或者自定义函数,对括号中的参数进行指定,运算结果作为函数的返回值
3.本质:函数调用后面跟一个分号
4.在主函数中调用,实参传给形参
5.注意事项:
注:调用之前要进行函数原型的声明 (写在开头的位置)
举栗子:(以下情况为主函数写在开头)
#include <stdio.h>
void fa(float d, float h);//声明fa函数
void fb(float a, float b, float c);//声明fb函数
int main() {
float d, h, a, b, c;
printf("请输入d、h、a、b、c的值:");
scanf_s("%f %f %f %f %f", &d, &h, &a, &b, &c);
fa(d, h);//函数调用
fb(a, b, c);
return 0;//返回值
}
void fa(float d,float h) {
float s1;
s1 = d * h / 2;
printf("直角三角形的面积=%.2f\n", s1);
}
void fb(float a,float b,float c) {
float s2;
s2 = (a + b)*c / 2;
printf("梯形的面积是=%.2f\n", s2);
}
调用时要传递参数,参数要一个一个定义,不能一次定义多个
可以在主函数内部声明,也可以在程序开头声明
6.例题:程序设计题:
-编写函数change 实现两个float类型变量的数值交换
-编写主函数,输入两个实型数据,调用change函数,实现交换
-将交换前后的数值分别输出(保留两位小数)
#include<stdio.h>
void change(float *a, float *b);//函数声明
int main(void) {
//-编写函数change 实现两个float类型变量的数值交换
//
//- 编写主函数,输入两个实型数据,调用change函数,实现交换
//
//- 将交换前后的数值分别输出(保留两位小数)
float x, y;
scanf_s("%f%f", &x, &y);
printf("交换前x=%.2f\n", x);
printf("交换前y=%.2f\n", y);
change(&x, &y);//调用change函数,将 x 和 y 的地址作为参数传递
printf("交换后x=%.2f\n", x);
printf("交换后y=%.2f\n", y);
return 0;
}
void change(float *a, float *b) {//函数定义
float c;//中间变量,暂存数值
c = *a;//将a的值给c
*a = *b;//将b的值给a
*b = c;//将a的值给b
//通过指针操作,将 x 的值存储在 c 中,将 y 的值存储在 x 中,将 c 中的值存储在 y 中,实现xy的值交换
}
7.程序分析题:阅读下列程序,写出输出的结果
#include <stdio.h>
int fun(int x,int y,int z){
int max; max=x<y?y:x; if (z > max) max=z; return max; } int main(void){ int a=-7,b=3,c=3,d=5,e=-4;
printf("%d\n", fun(fun(a,b,c),d,e));
return 0; }
- 分析:
#include <stdio.h>
int fun(int x, int y, int z);//函数声明
int fun(int x, int y, int z) { //函数定义
int max;
max = x < y ? y : x;
if (z > max) max = z;
return max;
}
int main(void) {
int a = -7, b = 3, c = 3, d =5, e = -4;
//如果其中有两个值相同,哪一个做max都无所谓
printf("%d\n", fun(fun(a, b, c), d, e));//函数嵌套调用
//fun(a, b, c) 第一次调用max=3
//fun(3,d,e)第二次调用max=5
//输出结果为5
return 0;
}
8.综合题:阅读下列程序,写出输出的结果
#include<stdio.h> int od(int n){ if (n= =1) return 1; else return n+od(n-2); } int main(void) {
printf("s=%d\n",od(9));
return 0; }
- 分析:
#include<stdio.h>
int od(int n);//函数声明
int od(int n) {//函数定义
if (n == 1) return 1;
else return n + od(n - 2);
}
int main(void) {
printf("s=%d\n", od(9)); //括号中的数字代表n,此时n=9
//根据式子n + od(n - 2),可得od(9)=9 +od(9 - 2)=9+od(7)
//那么od(7)=7 +od(7 - 2)=7 +od(5)
//然后od(5)=5 +od(5 - 2)=5+od(3)
//接下来od(3)=3 +od(3 - 2)=3+od(1)
//又因为(n == 1) return 1 所以od(1)=1
//所以 od(9)=9+7+5+3+1=25
//输出s=25
return 0;
}