任务描述
使用系统函数pow(x,y)计算x y的值,注意包含头文件math.h。
相关知识
为了你能够更好的完成本关的任务,你需要掌握
函数的参数;
如何使用 C++ 系统函数。
函数的参数
函数的参数传递
在函数被调用时才分配形参的存储单元;
实参可以是常量、变量或表达式;
实参类型必须与形参相符或可隐式转换为形参类型;
值传递是传递参数值,即单向传递;
引用传递可以实现双向传递;
常引用作参数可以保障实参数据的安全。 例: 输入两个整数并交换(值传递)
#include<iostream>
using namespace std;
void swap(int a, int b) {
int t = a;
a = b;
b = t;
}
int main() {
int x = 5, y = 10;
cout<<"x = "<<x<<" y = "<<y<<endl;
swap(x, y);
cout<<"x = "<<x<<" y = "<<y<<endl;
return 0;
}
运行结果: x = 5 y = 10 x = 5 y = 10
例: 输入两个整数交换后输出(引用传递)
#include<iostream>
using namespace std;
void swap(int& a, int& b) {
int t = a;
a = b;
b = t;
}
int main() {
int x = 5, y = 10;
cout<<"x = "<<x<<" y = "<<y<<endl;
swap(x, y);
cout<<"x = "<<x<<" y = "<<y<< endl;
return 0;
}
运行结果:
x = 5 y = 10
x = 10 y = 5
引用类型
引用(&)是标识符的别名; 例如: int i, j; int &ri = i; //定义int引用ri,并初始化为变量i的引用 j = 10; ri = j;//相当于 i = j;
声明一个引用时,必须同时对它进行初始化,使它指向一个已存在的对象;
一旦一个引用被初始化后,就不能改为指向其它对象;
引用可以作为形参。 void swap(int &a, int &b) {...}
可变数量形参
使用模板类initializer_list可向函数传递同类型不定个数参数, 例如: void log_info(initializer_list lst) { for (auto &info: lst) cout << info << ‘ ’; cout << endl; } log_info({“Hello”, ”world”, “!”});
initializer_list lst接受不定个数字符串实参
注意
实参以大括号列表方式给出
使用范围for语句遍历lst,auto自动推断元素为string类型
参数的默认值
可以预先设置默认的参数值,调用时如给出实参,则采用实参值,否则采用预先设置的默认参数值。 例如: 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 main() { add(); } int add(int x,int y) { //此处不能再指定默认值 return x + y; }
int add(int x = 5,int y = 6) { //只有定义,没有原型声明 return x + y; } int main() { add(); }
使用 C++ 系统函数
C++的系统库中提供了几百个函数可供程序员使用,例如:求平方根函数(sqrt),求绝对值函数(abs);
使用系统函数时要包含相应的头文件,例如:cmath;
例: 系统函数应用举例
题目:从键盘输入一个角度值,求出该角度的正弦值、余弦值和正切值;
分析:系统函数中提供了求正弦值、余弦值和正切值的函数:sin()、cos()、tan(),函数的说明在头文件cmath中。
#include <iostream>
#include <cmath>
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 << ") = " << sin(radian) <<endl;
cout << "cos(" << angle << ") = " << cos(radian) <<endl;
cout << "tan(" << angle << ") = " << tan(radian) <<endl;
return 0;
}
运行结果:
30
sin(30)=0.5
cos(30)=0.866025
tan(30)=0.57735
任务要求
请使用系统函数编写计算 x 的 y 次幂的代码,并将代码补充在右侧任务挑战区 Begin-End 之间。
测试说明
平台会对你编写的代码进行测试:
测试输入:2,5
预期输出:32
开始你的任务吧,祝你成功!
微信公众号隔天同步更新: