C语言,函数的快速入门

文章目录

为什么需要函数

请大家完成这样一个需求: 输入两个数,再输入一个运算符(+,-,*,/),得到结果.。 先使用传统的方式来解决,看看有什么问题没有?

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); 
		
}
上一篇:acwing 241. 楼兰图腾(树状数组)


下一篇:*剑指offer 040、数组中只出现一次的两个数字