【C++程序设计】——利用函数实现指定功能(二)

在这里插入图片描述


👨‍💻个人主页@开发者-削好皮的Pineapple!

👨‍💻 hello 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 削好皮的Pineapple! 原创

👨‍💻 收录于专栏C++程序设计


请添加图片描述

请添加图片描述


前言

在C++程序设计中,涵盖函数的各种应用是非常重要的。这些内容包括函数的嵌套调用、递归调用、内置函数、函数的重载、函数模板、有参默认参数的函数以及局部变量和全局变量的作用域。接下来,我们一起来学习函数的第二part内容吧~
重要指数不多哈哈哈哈哈,大家就当小说看看~


🎶一、函数的嵌套调用


C++不允许对函数做嵌套定义,也就是说在一个函数中不能完整地包含另一个函数。
下面的定义是不合法的。

void f1()
{...
int f2()
}

在一个程序中每个函数的定义都是互相平行和独立的,如:

void f1()  {}
int f2()  {}
float f3() {}
long f4() {}

虽然C++不能嵌套定义函数,但可以嵌套调用函数,也就是说,在调用一个函数的过程中又调用另一个函数。
🌰:输入四个整数,找出其中最大的数,用一个函数来实现。

#include<iostream>
using namespace std;
// 函数声明
int max_4(int a, int b, int c, int d);
int max(int x, int y);
int main() {
	int a, b, c, d, max_value;

	cout << "请输入四个整数:" << endl;
	cin >> a >> b >> c >> d;

	max_value = max_4(a, b, c, d);

	cout << "max=" << max_value << endl;

	return 0;
}

// 函数定义
int max_4(int a, int b, int c, int d) {
	int m;
	m = max(a, b);
	m = max(m, c);
	m = max(m, d);
	return m;
}

int max(int x, int y) {
	if (x > y)
		return x;
	else
		return y;
}
/*函数声明位置:函数 max_4 和 max 应该在 main 函数之前声明或定义。在 C++ 中,函数需要在使用之前进行声明或定义,否则编译器无法识别它们。
函数声明方式:函数 max_4 的声明在主函数 main 内部是不正确的。C++ 中的函数声明应该在全局范围内,通常是在 main 函数之前进行声明。
变量重复声明:在 main 函数内部,重复声明了 int a, b, c, d, max;。这样会导致编译错误,因为变量名不能在同一作用域内重复声明。*/

运行结果如下图:
在这里插入图片描述


🎶二、函数的递归调用


在调用一个函数的过程中又出现直接或间接的调用该函数本身,称为函数的递归调用
C++允许函数的递归调用:

int f(int x)
{
int y,z;
z=f(y);
return(2*z);
}

程序中不应出现这种无终止的递归调用,而只应出现有限次数的、有终止的递归调用这可以用语句来控制,只有在某一条件成立时才继续执行递归调用,否则就不再继续。
包含递归调用的函数称为递归函数
关于递归的概念,有些读者可能感到不好理解,下面用一个日常生活中的例子来说明。
🌰1:有五个人坐在一起,问第五个人多少岁?他说比第四个人大两岁。问第四个人的岁数,他说比第三个人大两岁。问第三个人,又说比第二个人大两岁。问第二个人,说比第一个人大两岁。最后一个人,他说他是十岁。请问第五个人多大?
分析该问题:

age(5) = age(4) + 2;
age(4) = age(3) + 2;
age(3) = age(2) + 2;
age(2) = age(1) + 2;
age(1) = 10
综上所述得到:
age(n) = 10 n = 1;
age(n) = age(n - 1) + 2 n > 1

源代码如下:

#include<iostream>
using namespace std;
int age(int);//函数声明 
int main()//主函数 
{
	cout<<age(5)<<endl;
	return 0;
}
int age(int n)
{
	int c;//存放年龄变量 
	if(n==1)
	c=10;
	else
	c=age(n-1)+2;
	return c; 
} 

运行结果如图所示:

在这里插入图片描述
🌰2:用递归的方法求n!
源代码如下:

/*
n!=1   (n=0,1)
n!=n*(n-1)!   (n>1)
在C++中,fac(n-1) 是一个递归函数调用的表达式,其中 fac 可能是一个函数名或函数的一部分。在递归的上下文中,通常我们定义一个函数来调用自己,以实现重复的操作,直到达到递归的结束条件。

具体来说,如果我们有一个函数 fac,它接受一个整数参数 n,那么 fac(n-1) 表示在函数 fac 的实现中,它将以 n-1 作为参数进行递归调用。这种方式允许在每次调用中减少参数的值,直到递归的基本情况(递归终止条件)被满足。
*/
#include<iostream>
using namespace std;
long fac(int);//函数声明
int main() {
	int n;//阶层数
	long y;//存放结果
	cin >> n;
	y = fac(n);
	cout << "n!=" << y << endl;
	return 0;
}
//函数定义
long fac(int n) {
	long f;
	if (n < 0) {
		cout << "n<0,数据输入错误!" << endl;
		f = -1;
	} 
	else if (n == 0 || n == 1) f = 1;
	else f = fac(n - 1) * n;
	return f;
}

运行结果如下:
在这里插入图片描述


🎶三、内置函数


C++提供一种提高效率的方法,即在编译时将所调用函数的代码直接嵌入到主调函数中,而不是将流程转出去。这种嵌入到主调函数中的函数称为内置函数(inline function),又称内嵌函数内联函数
指定内置函数的方法很简单,只须在函数首行的左端加一个关键字inline即可。
🌰:函数指定为内置函数。
源代码如下:

#include<iostream>
using namespace std;
inline int max(int, int, int); //声明内置函数,注意在前面加了inline
int main() {
	int i = 10, j = 20, k = 30,m; 
	m = max(i, j, k);
	cout << "max=" << m << endl;
	return 0;
}
inline int max(int a, int b, int c) {
	if (b > a) a = b;
	if (c > a) a = c;
	return a;
}

运行结果如下图:
在这里插入图片描述


🎶四、函数的重载


C++允许用同一函数名定义多个函数,而这些函数的参数个数和参数类型可以不相同。这就是函数的重载(function overloading)
即对一个函数名重新赋予它新的含义,使一个函数名可以多用。所谓重载,其实就是“一物多用”。
在这里插入图片描述
🌰:求三个数中最大的数(分别考虑整数、双精度数、长整数的情况),用函数的重载方法。
源代码如下:

#include<iostream>
using namespace std;

int max(int a, int b, int c) {
	int max_value = a;
	if (b > max_value) max_value = b;
	if (c > max_value) max_value = c;
	return max_value;
}

double max(double a, double b, double c) {
	double max_value = a;
	if (b > max_value) max_value = b;
	if (c > max_value) max_value = c;
	return max_value;
}

long max(long a, long b, long c) {
	long max_value = a;
	if (b > max_value) max_value = b;
	if (c > max_value) max_value = c;
	return max_value;
}

int main() {
	int i1, i2, i3, i;
	cin >> i1 >> i2 >> i3;
	i = max(i1, i2, i3);
	cout << "max1=" << i << endl;

	double d1, d2, d3, d;
	cin >> d1 >> d2 >> d3;
	d = max(d1, d2, d3);
	cout << "max2=" << d << endl;

	long g1, g2, g3, g;
	cin >> g1 >> g2 >> g3;
	g = max(g1, g2, g3);
	cout << "max3=" << g << endl;

	return 0;
}

运行结果如下图:
在这里插入图片描述

请添加图片描述

结束语🥇

以上就是C++程序设计
持续更新C++程序设计教程,欢迎大家订阅系列专栏🔥C++程序设计你们的支持!

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值