目录
5.1函数概念
函数是完成一个个特定任务的语句集合,他能完成你所想要的某种特定任务,当你要用时,只需要调用它即可,在后续的修改或是维护过程中,只需要针对这一个进行修改即可
使用函数的好处:减少程序的代码量、代码复用、使程序具有良好的结构
#include<stdio.h>
//主函数
int main(){
printf("***\n");
return 0;
}
5.2函数的定义
函数包括两个部分:函数头和函数体
返回值数据类型 函数名(数据类型 形参1,数据类型 形参2...)//函数头
{
函数体
}
void printfStart (void)
{
printf("***********\n");
return;
}
int:整型,函数的返回值类型
main:函数名
void:空的,函数的参数,函数的形式参数
函数定义需要注意的问题
函数的返回值和参数可以是任意类型,包括空类型!当函数无返回值或无形参列表时,建议用void指明
函数名是一种标识符,必须符合标识符的命名规则!建议单词首字母不大写,从第二个单词起首字母大写
函数的参数可以没有,也可以有多个参数
一个项目必须要有一个主函数,没有主函数,程序找不到执行的入口,代码无法运行
函数头要有头注释(功能,参数,返回值),函数定义不可以嵌套
函数如果不被调用,就不会执行
5.3函数的调用
语法
函数名(实际参数1,实参2,...);
#include<stdio.h>
void printStar(void)
{
printf("******");
return;
}
int main(void)
{
printStar();//调用函数
return 0;
}
函数调用需要注意的问题
如果是A函数调用B函数,则A函数叫主调函数,B叫被调用函数
如果函数返回值类型是void,函数中的return可以省略
5.4函数的声明
声明的好处
函数列表更加一目了然,方便使用
便于多人合作共同开发
可以用于商业,保护知识产权
声明的方式
只保留函数头且后面加分号,通常放在包含头文件的下面
void printStar(void);
5.5函数的几种形式
无参数无返回值
1.定义一个函数,输出1-10之间的数据
分析:函数中所需要的数据已经唯一确定,不要其他函数传递数据进行辅助计算
#include<stdio.h>
void printData(void);//函数声明
int main(void) {
printData();//函数调用
return 0;
}void printData(void) {//函数定义
int i = 0;
for (i= 1; i <= 10; i++) {
printf("%d\n", i);
}
}
运行结果
2.定义一个函数,输出1-n之间的数据
#include<stdio.h>
void printData(int n);
int main(void) {
int n = 0;
printf("请输入n的值");
scanf_s("%d", &n);
printData(n);
return 0;
}void printData(int n) {
int i = 0;
for (i= 1; i <= n; i++) {
printf("%d\n", i);
}
}
运行结果
单个参数,有返回值
3.定义一个函数,计算1*2*3*...*n,并将结果返回给主调函数
#include<stdio.h>
int sum(int n);
int main() {
int su = 0;
int m = 0;
printf("请输入m的值");
scanf_s("%d", &m);
su=sum(m);
printf("1+2+...+%d=%d\n", m,su);
return 0;
}int sum(int n) {
int i = 0;
int s = 0;
for (i = 1; i <= n; i++) {
s = s + i;
}
return s;
}
运行结果
函数的设计原则
一个函数实现一个功能
返回值的原则:如果计算有结果需要加返回值
形参的设计原则:如果计算的过程需要有数值进行辅助,则需要加参数
如果函数有形式参数则必须进行参数检查,检查参数是否有异常
通常用分支结构(选择结构)进行参数检查,如果有错误则返回
函数体的设计思路:1定义变量2逻辑关系运用,选择结构还是循环结构还是综合运用