一、函数是什么?
二.标准库和库函数
C语⾔标准中规定了C语⾔的各种语法规则,C语⾔并不提供库函数;C语⾔的国际标准ANSI C规定了⼀ 些常⽤的函数的标准,被称为标准库,那不同的编译器⼚商根据ANSI提供的C语⾔标准给出了⼀系列函数的实现。这些函数就被称为库函数。
![](https://i-blog.csdnimg.cn/blog_migrate/bd630faab3c7ab461d2e44c141c7f6fc.png)
#include <stdio.h>
#include <math.h>
int main()
{
double d = 16.0;
double r = sqrt(d);
printf("%lf\n", r);
return 0;
}
三.自定义函数
ret_type fun_name(形式参数)
{
}
四.函数的举例
eg写一个加法函数,完成2个整形变量的加法操作
分析:我个们要写一个整形变量的加法操作,我们需要有一个加法函数,我们需要去调用,我们从那里调用呢,我们只能自定义一个函数。
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
//输⼊
scanf("%d %d",&a,&b);//如果需要多次输入while(scanf("%d",&n)!=EOF)
//调⽤加法函数,完成a和b的相加
//求和的结果放在sum中
int sum=Add(a,b)
//输出
printf("%d\n", sum);
return 0;
}
所以,我们要去设计函数 Add需要接受2个整型类型的参数,函数的计算结果也是整形,函数名,参数,返回类型
int Add(int x, int y)
{
int z = 0;
z = x+y;
return z;
}
eg1
void text()
{
printf("hehe\n");
]
int main()
{
text ();
text(1);
text(100);
text(100,200)
return 0;
}
函数的参数是0个,也就是函数没有参数时,返回类型可以写为void,void在这里表明函数没有参数,也不需要参数,同时这个函数也不需要返回值。
eg2:
int text()
{
int n =0;
scanf("%d,&n");
if(n%2==1)
return 1;
}
int main
{
text();
return 0;
}
会出现这种报错
void set_arr(int arr[], int sz)
{
int i = 0;
for(i=0; i<sz; i++)
{
arr[i] = -1;
}
void print_arr(int arr[], int sz)
{
int i = 0;
for(i=0; i<sz; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int sz = sizeof(arr)/sizeof(arr[0])
set_arr(arr, sz);//设置数组内容为-1
print_arr(arr, sz);//打印数组内容
return 0;
}
四.嵌套调用和链式访问
写一个程序 我们计算某年某月有多少天
分析这个个很有意思的程序1.我们首先得确定年份是闰年吗?2.然后我们再根据月计算月的天数
通过is_leap_year()确定年份是什么年然后在通过get_days_of_month()确定天数
int is_leap_year(int y)
{
if(((y%4==0)&&(y%100!=0))||(y%400==0))
return 1;
else
return 0;
}
我们先判断了闰年然后去判断月份我们去使用嵌套。我们利用数组去放进12月份的所有天,我们通过数组的编号去分别编排,需要注意的编号从0开始,所以我们在存放数据时,我们应该添加一个0然后为31.28.31.30.31.30.31.31.30.3.30.31,然后有的人就要问有时2月的年份是28天,你一个29天,这能完整吗,我们可以使用if语句去单独调整。
int get_days_of_month(int y, int m)
{
int days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int day = days[m];
if (is_leap_year(y) && m == 2)
day += 1;
return day;
int main()
{
int y = 0;
int m = 0;
scanf("%d %d", &y, &m);
int d = get_days_of_month(y, m);
printf("%d\n", d);
return 0;
}
我们可以看一段有趣的代码来理解
1 #include <stdio.h>
2 int main()
3 {
4 printf("%d", printf("%d", printf("%d", 43)));
5 return 0;
6 }
这段代码打印的结果大家认为是什么呢?
第三个printf打印43,在屏幕上打印2个字符,再返回2 第⼆个printf打印2,在屏幕上打印1个字符,再放回1 第⼀个printf打印1 所以屏幕上最终打印:4321 返回类型是字符
五.函数的使用
1.函数的定义
2.函数的声明(如果函数的定义在后面,则必须要声明函数)
int getMax(int,int)
3.函数的调用
functionName(param1, param2, param3 ...);
最后一个问题;在大厂为什么要分模块写代码呢?
1.逻辑清晰
2.方便协作
👍如果想知道答案,请持续关注🥇系列专栏:c语言从基础到进阶
🎁🎁🎁今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,您的支持就是我前进的动力!