(一)函数应包括的内容
1.函数返回值类型:用来表明函数执行后是否有返回值,是什么类型的返回值
2.函数名:唯一标识该函数,供使用者按名调用。
3.函数参数:包括参数的名字和类型,用来表明该函数要接收的参数信息。
4.函数功能:函数应当完成的操作,在函数体中编写代码实现。
包括以上4点的完整代码描述称为函数的定义。
(二)用户自定义函数的一般形式
函数返回类型 函数名(形式参数列表) //函数首部
{
函数体;
}
1.函数首部:包括返回值类型、函数名、形式参数等信息。
2.返回值类型:有返回值的函数,函数体应包含有一条return 语句;
无返回值的函数,返回值类型为void。
3.形式参数:简称形参,与函数调用时所定义使用的实参一一对应。
注意:每个形参的类型不能省略,如"演示1"的形参(int x, int y)不能写成(int x,y)
当形参为一维数组时,允许不给出数组的长度,如"演示2"的形参(char str[])。
4.函数体:用来实现函数的功能,使用大括号"{}"作为界定符。
//自定义函数定义的演示1
#include<stdio.h>
//此处用户自定义函数写在主函数main()前,可省略自定义函数声明
int max(int x, int y) //自定义函数定义
{
int z;
z = x > y ? x : y;
return z;
}
//该自定义函数的函数名为max,形参为2个 int 类型变量,函数返回值为 int,与 return z;相对应;
//函数功能为:对参数 x 和 y 进行分析,得到其中最大值。
int main() //主函数
{
int a, x, y;
printf("请输入两个整数:");
scanf_s("%d%d", &x, &y);
a = max(x, y); //自定义函数引用在例7-5详细讲解
printf("最大数为:%d", a);
return 0;
}
//自定义函数定义的演示2
#include<stdio.h>
int string_len(char str[]) //自定义函数的定义
{
int i = 0;
while (str[i] != '\0')
{
i++;
}
return i;
}
//该自定义函数的函数名为string_len,形参为1个字符型一维数组str[],
//函数返回值为 int,与 return i;相对应;
//函数功能为:对字符数组str中的字符串进行分析,计算该字符串的长度。
int main()
{
int a;
char s[100];
printf("请输入一个字符长度小于100的字符串:");
gets_s(s, 100);
a = string_len(s); //自定义函数的引用
printf("该字符串的长度为:%d", a);
return 0;
}
//随堂练习7-1
自定义函数even,其功能为判断一个整数是否为偶数,如果是偶数,则返回值为 1,
不是偶数,则返回值为 0。
#include<stdio.h>
int even(int a)
{
int x; //定义一个x,用于返回形参运算的结果
x = (a % 2 == 0) ? 1 : 0;
return x;
}
int main()
{
int z;
printf("请输入一个整数:");
scanf_s("%d", &z);
printf("其返回值为:%d", even(z)); //自定义函数的引用
return 0;
}
//随堂练习7-1中自定义函数的定义方式二:
int even(int a)
{
if (a % 2 == 0)
return 1;
else
return 0;
return a;
}
//随堂练习7-1中自定义函数的定义方式三:
int even(int a)
{
return (a % 2 == 0) ? 1 : 0;
}