一 函数返回值
1.函数返回值类型 函数名 (参数);
函数:能完成特定功能的代码段
函数的声明注意:函数定义在主函数之前,函数的声明可以省略
函数定义在主函数之后,必须要写函数的声明
为了规范,我们在使用函数的要加上函数的声明
2.函数类型 分为四种
1⃣无返回值 无参数;
2⃣无返回值 有参数;
3⃣有返回值 无参数;
4⃣有返回值 有参数;
//无返回值 无参数;
void buyRedWine(){
printf("没钱");
}
// 无返回值 有参数;
void buyRedWine2( int money){
printf("跑路");
// 有返回值 无参数;
//return 返回 函数的返回值 用 return
int buyRedWine3( ){
printf("买什么?");
printf("1.拉菲,2.果啤");
//有返回值 有参数
int buyRedWine4(int money){
printf("买什么酒,给多少钱\n");
printf("买果啤,给%d钱\n",money);
return 3;
好处:简化代码,避免重复代码 提高开发效率 集中控制保证安全
// 函数从定义的角度上讲:分为库函数 ;自定义函数
// 库函数 :系统提供 我们能直接拿来用
// 自定义函数:开发人员自己写的函数,为了完成某些 特殊的功能
// 如何自定义函数
// 参数= 数据类型+变量名
// 返回值数据类型 :函数名(数据类型 变量1,数据类型 变量2,….){函数体}
// void 空 表示没有返回值
1.编写函数dayOfYear(year, mouth,day),使得函数返回由这三个参数确定的那一天是一年中的第几天
void dayOfYear(int year,int month,int day){
int monthDay[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
monthDay[1] = 29;
}
int totalDay = 0;
for (int i = 0; i < month - 1; i++) {
totalDay += monthDay[i];
}
totalDay += day;
printf("这是一年中的第%d天\n",totalDay);
函数的调用
函数 A 调用函数 B ; A 叫主调函数 B 叫被调函数二 递归函数
//递归就是自己调用自己,非常吃内存,不建议使用
//递归要有出口
int jieCheng(n){
if (n == 1) {
return 1;//递归的出口
}else{
return n * jieCheng(n - 1);
}
}
- 遍历数组
for (int i = 0; i < 10; i++) {
printf("%d ",a[i]);}
三 函数参数
//函数参数分为形参和实参
//形参:函数定义时候的参数
//实参:函数调用时候用的参数
//形参可以有多个,实参的个数必须要跟形参的个数一样
//形参和实参的类型要一致
四 冒泡排序的函数
//数组名作为函数的参数只是形参和实参指向同一块内存,不知道有多少个元素,这是时候也要把数组长度传进来
//冒泡排序函数
void bubbleSort(int arr[],int length){
for (int i = 0; i < length - 1; i++) {
for (int j = 0; j < length - 1- i; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j]
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}