本部分包含函数的概念,库函数,自定义函数的定义,函数的调用&参数。
笔记部分:
- 函数(自定义函数)
- 6.1 概述
- 作用:将一段经常使用的代码封装起来,减少重复代码
- 一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。
- 6.2 函数的定义
- 函数的定义一般主要有5个步骤:
- 1、返回值类型
- 2、函数名
- 3、参数表列
- 4、函数体语句
- 5、return 表达式
- 语法:
- 图示:
- 返回值类型 :一个函数可以返回一个值。
- 函数名:给函数起个名称
- 参数列表:使用该函数时,传入的数据
- 函数体语句:花括号内的代码,函数内需要执行的语句
- return表达式: 和返回值类型挂钩,函数执行完后,返回相应的数据
- 函数的定义一般主要有5个步骤:
- 6.3 函数的调用
- 功能:使用定义好的函数
- 语法:函数名(参数)
- 参数列表里的变量叫形式参数,简称形参
- int add(int num1, int num2)//定义中的num1,num2称为形式参数,简称形参
- 调用时的变量称为实际参数,简称实参
- int sum = add(a, b);//调用时的a,b称为实际参数,简称实参
- 总结:函数定义里小括号内称为形参,函数调用时传入的参数称为实参
- 6.4 值传递
- 所谓值传递,就是函数调用时实参将数值传入给形参
- 值传递时,如果形参发生改变,并不会影响实参
- 注意:如果函数不需要返回值,定义返回值类型时可以学void
- 总结: 值传递时,形参是修饰不了实参的
- 6.5 函数的4种常见样式
- 无参无返
- 有参无返
- 无参有返
- 有参有返
- 6.6 函数的声明
- 意义:函数声明后,可以在main主方法后面编译函数的具体内容。
- 作用: 告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。
- 函数的声明可以多次,但是函数的定义只能有一次
- 6.7 函数的分文件编写
- 作用:让代码结构更加清晰
- 函数分文件编写一般有4个步骤
- 1创建后缀名为.h的头文件
- 创建后缀名为.cpp的源文件
- 在头文件中写函数的声明
- 在源文件中写函数的定义
- 6.1 概述
代码部分:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<windows.h>
//找出两个数的最大值
int findMax(int num1, int num2)
{
if (num1 > num2)
{
return num1;
}
else
{
return num2;
}
}
//1.1写一个函数可以判断一个数是不是素数。
void primeNumber(int num)
{
for (int i = 2; i < num; i++)
{
if (num % i == 0)
{
printf("不是素数");
break;
}
else if (num == i + 1)
{
printf("是素数");
}
}
}
//1.2写一个函数判断一年是不是闰年。
void leapYear(int year)
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
printf("是闰年");
}
else
{
printf("不是闰年");
}
}
//1.3写一个函数,实现一个整形有序数组的二分查找。
void binaryLookup()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int length = sizeof(arr) / sizeof(arr[0]);
int a = 0;
int right = 0;
int left = length;
int mid = 0;
printf("请在一到十之间输入一个数,并找出它的下标");
scanf("%d", &a);
while (right < left)
{
mid = (left + right) / 2;
if (a > 10 || a < 0)
{
printf("没找到,请重输");
break;
}
if (a > arr[mid])
{
right = mid;
}
else if (a < arr[mid])
{
left = mid;
}
else if (a == arr[mid])
{
printf("找到了%d,下标为%d", arr[mid], mid);
break;
}
}
}
//1.4写一个函数,每调用一次这个函数,就会将 num 的值增加1。
void Add(int* p)
{
*p+=1;
printf("值为:%d",*p);
}
//#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//#include<windows.h>
#include"text.h"
int main()
{
//goto 语句
siteOne:
printf("你好");
printf("乌拉");
Sleep(1000);
goto siteOne;
//函数
//找出两个数的最大值
int num1 = 0;
int num2 = 0;
printf("输入两个数,输出最大值");
scanf("%d %d", &num1, &num2);
printf("最大值为:%d", findMax(num1, num2));
//函数的调用
//1.1写一个函数可以判断一个数是不是素数。
int num = 0;
printf("输入一个数,判断是否为素数");
scanf("%d", &num);
primeNumber(num);
//1.2写一个函数判断一年是不是闰年。
int year = 0;
printf("输入一年,判断是否为闰年");
scanf("%d", &year);
leapYear(year);
//1.3写一个函数,实现一个整形有序数组的二分查找。
binaryLookup();
//1.4写一个函数,每调用一次这个函数,就会将 num 的值增加1。
int num = 0;
for (int i = 0; i < 10; i++)
{
Add(&num);
}
}