2021-05-26
Posted Violet277
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-05-26相关的知识,希望对你有一定的参考价值。
1.库函数
C语言中,为了支持可移植性和提高程序效率,在基础库中提供了一系列的类似的库函数,方便程序员进行软件开发。
注意:
1.查找函数和库函数,可以浏览www.cplusplus.com。
2.学习过程中不需要刻意去记忆,需要时再去查找。
2.自定义函数
自定义函数和库函数一样,有函数名,返回值类型和函数参数,不同点是这些函数都是由我们自己定义。
组成:
ret_type fun_name(paral,*)
{
Statement;//语句项
}
//ret_type:返回值类型
//fun_name:函数名
//paral:函数参数
例如:
int LeapYear(int x)
{
if ((x % 4 == 0 && x % 100 != 0) || x % 400 == 0){
return 1;
}
return 0;
}
注意:
1.当函数五返回值时,类型为void。
2.函数返回值只能传一个值,若要传多个值,可以使用指针等办法。
3.设计函数时尽量遵循“高内聚低耦合”的原则。
3.函数的参数
实参:真实传递给函数的参数。
形参:函数名后括号中的变量。
例如:
#include<stdio.h>
#include<windows.h>
int LeapYear(int xp)
{
if ((xp % 4 == 0 && xp % 100 != 0) || xp % 400 == 0){
return 1;
}
return 0;
}```
int main(void)
{
int x = 0;
scanf("%d", &x);
if (LeapYear(x)){
printf("第%d年是闰年\\n", x);
}
else{
printf("第%d年不是闰年\\n", x);
}
system("pause");
return 0;
}
其中x为实参,xp为形参。
注意:
1.形参实例化之后相当于实参的一份临时拷贝,因此不可直接通过操作形参来操作实参。
2.形参在函数调用完后被自动销毁。
4.函数的嵌套调用和链式调用
(1)嵌套调用
在一个函数内调用另外一个函数。
#include <stdio.h>
void new_line()
{
printf("hehe\\n");
}
void three_line()
{
int i = 0;
for (i = 1; i < 3; ++i){
new_line();
return 0;
}
}
int main(void)
{
three_line();
return 0;
}
(2)链式访问
把一个函数的返回值作为另外一个函数的参数。
#include <stdio.h>
int main(void)
{
printf("%d", printf("%d", printf("%d", 27)));
return 0;
}
注意:
1.函数的练市调用从内向外。
2.函数形参实例化从右向左。
5.函数的声明和定义
(1)函数声明
函数声明的关键字为extern。
#include <stdio.h>
#include <windows.h>
#pragma once
extern void BubbleSort(int *a, int num);
注意:
1.函数的声明一般出现在函数的使用前,要满足先声明再使用的原则。
2.函数的声明一般要放在头文件的开头,即.h文件的开头。
3.其中#pragma once用来防止头文件被反复包含,等价于以下程序。
#ifndef __TEST_H__
#define __TEST_H__
#include <stdio.h>
#include <windows.h>
extern void BubbleSort(int *a, int num);
#endif
(2)函数的定义
函数的定义是指函数的具体实现,交代函数的功能介绍。
#include "test.h"
void BubbleSort(int *arr,int num)
{
for (int m = 0; m < num; ++m){
for (int n = 0; n < num - m - 1; ++n){
if (arr[n]>arr[n + 1]){
Spaw((arr + n), (arr + n + 1));
}
}
}
}
6.函数递归
递归是程序调用自身的编程技巧,重要思想是将大事化小。
注意:
1.递归的两个必要条件:
(1)递归需要存在限制条件,当满足此条件时,递归便不再执行。
(2)每次递归调用后会越来越接近此限制条件。
2.递归可能会使效率低下(时间),甚至有可能栈溢出(空间)。
例:求n的阶乘
int factorial(int n) {
if(n <= 1)
return 1;
else
return n* factorial(n-1);
}
以上是关于2021-05-26的主要内容,如果未能解决你的问题,请参考以下文章