一、函数
- 函数
- 库函数
- 自定义函数
- 函数参数
- 函数调用
- 函数的嵌套调用和链式访问
- 函数的声明和定义
- 函数的递归
函数的定义
- 函数就是用来完成一定的功能的。 函数就是功能。每一个函数用来实现一个特定的功能。函数的名字应反映其代表的功能。
- 在设计一个较大的程序时,往往把它分为若干个程序模块,每一个模块包括一个或多个函数,每个函数实现一个特定的功能。一个C程序可由一个主函数和若干个其他函数构成。由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。
二、 C语言常用的库函数
- I/O函数
- 字符串操作函数
- 字符操作函数
- 内存操作函数
- 时间/日期函数
- 数学函数
- 其他库函数
#include<stdio.h>
#include<string.h>
int main(){
char a[20]={
0};
char b[]="hello world";
strcpy(a,b);
printf("%s\n",a);
return 0;
}
三、自定义函数
#include<stdio.h>
int getMax(int x, int y){
return x>y?x:y;
}
int main(){
int a=10;
int b=20;
int max=getMax(a,b);
printf("max=%d\n",max);
return 0;
}
- 交换两个数的值
#include<stdio.h>
void swap(int* x, int* y){
int z=0;
z=*x;
*x=*y;
*y=z;
}
int main(){
int a=10;
int b=20;
printf("1. a=%d b=%d\n",a,b);
swap(&a,&b);
printf("2. a=%d b=%d\n",a,b);
return 0;
}
四、函数参数
- 实际参数(实参):真实传给函数的参数,叫实参。实参可以是:常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,都必须有确定的值,以便这些值传给形参。
- 形式参数(形参):形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实现实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完之后就自动销毁了。因此,形式参数只在函数中有效。
五、函数的调用
- 传值调用:函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。
- 传址调用:传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量。
练习
- 写一个函数可以判断一个数是不是素数。
#include<stdio.h>
#include<math.h>
int isPrimeNumber(int x){
int i = 0;
for(i = 2; i <= sqrt(x); i++){
if(x % i == 0){
return 0;
}
}
return 1;
}
int main(){
int i=0;
printf("Please Enter a Number:\n ");
scanf("%d", &i);
if(isPrimeNumber(i) == 1){
printf("The Number is Prime Number\n");
}
else{
printf("The Number is not Prime Number\n");
}
return 0;
}
- 写一个函数判断年份是否为闰年。
#include<stdio.h>
int isLeapYear(int leapyear){
return ((leapyear % 4 == 0