专业编程基础技术教程

网站首页 > 基础教程 正文

20天轻松入门《C++第四章——函数》——4经坛教育

ccvgpt 2025-03-12 12:35:08 基础教程 2 ℃

该系列为C++初学者设计

编写不易,希望获得收藏,关注和转发的支持,谢谢。

constexpr函数

constexpr函数语法规定

constexpr修饰的函数,在其所有参数都是constexpr时一定返回constexpr

20天轻松入门《C++第四章——函数》——4经坛教育

constexpr函数举例:

constexpr int get_size()(return 20;) //可以看出constexpr写在函数的类型前

constexpr int too= get_size();

//正确:foo是一个常量表达式

带默认参数值的函数

预先给形参给默认的值,如果调用实参,则以实参为主。

可以预先设置默认的参数值,调用时如给出实参,则采用实参值,

否则采用预先设置的默认参数值。

例:

int add(int x = 5,int y = 6){

return x + y;

}

int main(){

add(10.20);//10+20

add(10); //10+6

add(); //5+6

}

默认参数值的说明次序

有默认参数的形参必须列在形参列表的最右,即默认参数值的右面不能有无默认值的参数;

调用时实参与形参的结合次序是从左向右。

例:

int add(int x, int y = 5, int z = 6);//正确

int add(int x = 1, int y = 5, int z);//错误

int add(int x = 1, int y, int z = 6);//错误

切记默认值只用给一次就好了。默认参数值与函数的调用位置

如果一个函数有原型声明,且原型声明在定义之前,则默认参数值

应在函数原型声明中给出;

如果只有函数的定义,或函数定义在前,

则默认参数值可以在函数定义中给出。

例:int add(int x= 5,int y = 6); int add(int x = 5,int y = 6){

//原型声明在前 //定义在调用之前

int main(){ return x+y;

add(); }

} int main(){

int add(int x,int y){ add();

//此处不能再指定默认值 }

returnx+ y;

}

默认参数值例3-15

例3-15计算长方体的体积

函数getVolume计算体积

.有三个形参:length(长)、width(宽)、height(高)

其中width和height带有默认值2和3

主函数中以不同形式调用getVolume函数


函数的重载

求绝对值函数。底下一个是整数型的另外一个是实数型的。虽然由于他们的参数表不同,所以我们要写两个函数,但我们希望他们用同一个名字。

原因是:

函数重载

C++允许功能相近的函数在相同的作用域内以相同函数名声明,

从而形成重载。方便使用,便于记忆。

int abs(int x){

returnx<0?-x:x;

}

double abs(double x){

returnx<0?-x :x;

}

参数表不同的几种情况。

c++系统函数

C++的系统库中提供了几百个函数可供程序员使用,例如:

求平方根函数(sprt)

求绝对值函数 (abs)

使用系统函数时要包含相应的头文件,例如:

例3-17 系统函数应用举例

题目:

从键盘输入一个角度值,求出该角度的正弦值、余弦值和正切值。

分析:

系统函数中提供了求正弦值、余弦值和正切值的函数:sin()、cos().

tan(),函数的声明在头文件cmath中。

#include

#include

using namespace std;

const double PI=3.14159265358979;

int main() {

double angle;

cout << “Please enter an angle:”;

cin>> angle; //输入角度值

double radian = angle * PI/180;//转为弧度

cout <<“sin(” << angle << text-align: justify>cout <<"cos("<< angle << text-align: justify>cout << “tan("<< angle << text-align: justify>return 0;

}

运行结果:

30

sin(30)=0.5

cos(30)=0.866025

tan(30)=0.57735

章末例题

例题一

编写函数float Convert(float TempFer),

参数和返回值都为float类型。

实现算法:C=(F-32)*5/9.

#include

using namespace std

float Convert(float F)

float C

C=(F- 32)*5/9

return C;

}

int main() {

float F;

cout<<"please input the temperatur in fahrenheit: \n";

cin>>F;

cout<<"Conver the temperatur in celsius:\n

cout<<Convert(F);

例题二

编写递归函数int fib (int n),在主程序中输入n的值,

调用fib函数计算Fibonacci级数。

公式为:

fib(n)=fib(n-1)+ fib(n-2),n>2;

fib(1)=fib(2)=1。

由于这段程序函数体在函数调用之后,所以需要给出函数声明。

#include"stdafx.h" //是预编译处理器把stdafx.h文件中的bai内容加载到程序来。

#include

using namespace std;

int fib(int n);

int main(){

int n, answer;

cout << "Enter number; ”

cin >> n

cout << "\n\n";

answer = fib(n);

cout << answer << ” is the ” << n << "th Fibonacci number\n"

return 0;

}

int fib (int n)

{

cout<< "Processing fib(” <<n<< “)... ";

if (n <3)

{

cout << "Return 1!\n";

return (1);

}

else

{

cout << "Call fib("<< n-2 << ") and fib(" << n-1 <<").\n"; //反复运用的结构,可以类比之前汉诺塔问题。

return( fib(n-2) + fib(n-1);

}

从这个题中还可以看出所调用函数值的形参名。可以和主函数中的实参名一致。

例题三

分别编写四个同名函数max1,实现函数重载;

可分别求取两个整数,三个整数,两个双精度数,

三个双精度数的最大值。

在main()函数中测试函数功能。

#include

#include

using namespace std;

int max1(int xint y); //两个整数的最大值

int max1(int xint y,int z);://三个整数的最大值

double max1(double x,double y);//两个双精度数的最大值

double max1(double x,double y,double z)://三个双精度数的最大值

int max1(int x,int y) //两个整数的最大值

if (x= =y) return x;

else if (x>=y)

return X;

else

return y;

int max1(int x,int y,int z)//三个整数的最大值

{

return max1(max1(xy),z); //巧妙地运用了已经定义好的函数,这也是之后学习需要培养的一个能力和意识。

}

double max1(double x,double y)//两个双精度数的最大值

{

if (abs(x-y)<1e-10) return x;//判断两浮点数是否相等的常见处理方式 以上abs这个函数是系统库自带的一个函数,用于求绝对值。需要在include指令中把cmath包含出来。

else if (x>=y)

return x;

else

return y;

}

在此函数中可以发现输入ABC3个整数值,但是当函数调用时,如果只调用两个,则从左到又开始调用。

例题四

在main()函数中提示输入两个整数x、y,

使用cin语句得到x、y的值,

调用pow(x,y)函数计算x的y次幂的结果,再显示出来。

注意:包含cmath库

#include

#include

using namespace std;

int main()

int x,y;

cout<< "Enter int x;

cin >>X;

cout << "Enter int y:

cout<<"\n";

cout<<"x="<<X<<"\t";

cout<<"y= "<<y<<"\n";

cout<<"pow(x,y)="<<pow(x,y);</p><p style="text-align: justify">return 0;

第四章完,谢谢收看 如果喜欢我的系列记得、点赞、收藏、加关注

Tags:

最近发表
标签列表