文章目录
为什么需要函数
请大家完成这样一个需求: 输入两个数,再输入一个运算符(+,-,*,/),得到结果.。 先使用传统的方式来解决,看看有什么问题没有?
void main() {
int num1 = 30;
int num2 = 50;
double res1 = 0.0;
char oper1 = '*';
//传统方法
switch(oper1) {
case '+' :
res1 = num1 + num2;
break;
case '-':
res1 = num1 - num2;
break;
case '*':
res1 = num1 * num2;
break;
case '/':
res1 = num1 / num2;
break;
default :
printf("你的运算符有误~");
}
printf("%d %c %d = %.2f\n", num1, oper1, num2, res1);
int num3 = 60;
int num4 = 80;
double res2 = 0.0;
char oper2 = '*';
//传统方法
switch(oper2) {
case '+' :
res2 = num3 + num4;
break;
case '-':
res2 = num3 - num4;
break;
case '*':
res2 = num3 * num4;
break;
case '/':
res2 = num3 / num4;
break;
default :
printf("你的运算符有误~");
}
printf("%d %c %d = %.2f\n", num3, oper2, num4, res2);
}
1) 代码冗余(即有过多重复的代码)
2)不利于代码的维护
3)引出函数
使用传统方法解决
简单的说就是在需要执行计算时,将这段完成计算任务代码,复制即可, 该传统方案不好,引出函数
解决方法 -> 函数
1)为完成某一功能的程序指令(语句)的集合,称为函数。
2)在 C 语言中,函数分为: 自定义函数、系统函数(查看 C 语言函数手册)
3)函数还有其它叫法,比如方法等,在C语言中,我们统一称为 函数。
函数的定义
基本语法 返回类型 函数名(形参列表){
执行语句...; // 函数体
return 返回值; // 可选
}
1)形参列表:表示函数的输入
2)函数中的语句:表示为了实现某一功能代码块
3)函数可以有返回值,也可以没有, 如果没有返回值,返回类型 声明为 void 。
快速入门案例
使用函数来解决前面的计算问题。
#include <stdio.h>
//说明
//1. 函数名 cal
//2. 有返回值 double
//3. 形参列表为 (int n1, int n2, char oper)
//4. 在函数中,我们使用的变量名需要和形参列表中的变量名一样
double cal(int n1, int n2, char oper) {
//定义一个变量 res ,保存运算的结果
double res = 0.0;
switch(oper) {
case '+' :
res = n1 + n2;
break;
case '-':
res = n1 - n2;
break;
case '*':
res = n1 * n2;
break;
case '/':
res = n1 / n2;
break;
default :
printf("你的运算符有误~");
}
printf("\n%d %c %d = %.2f\n", n1, oper, n2, res);
return res;
}
void main() {
int num1 = 10; //第一个数
int num2 = 20;//第二个数
double res = 0.0;//结果
char oper = '-'; //运算符
//我们又要接收两个数和一个运算符
int num3 = 60;
int num4 = 80;
double res2 = 0.0;
char oper2 = '*';
printf("使用函数来解决计算任务~~");
//使用函数来完成两个计算任务
res = cal(num1, num2, oper); //调用函数,使用函数
printf("\n cal 函数返回的结果 res=%.2f", res);
//使用函数完成第二个计算任务
res2 = cal(num3, num4, oper2); //调用函数,使用函数
printf("\n cal 函数返回的结果 res2=%.2f", res2);
}