通常,当我们处理数字时,我们会使用诸如 int、short、long、float 和 double 等原始数据类型。数字数据类型、它们可能的值以及数值范围已在讨论 C++ 数据类型时解释过。
在 C++ 中定义数字,已经在前面章节的各种示例中有所展示。下面是一个整合的示例,展示了如何在 C++ 中定义不同类型的数字:
示例代码
#include <iostream>
using namespace std;
int main () {
short s;
int i;
long l;
float f;
double d;
s = 10;
i = 1000;
l = 1000000;
f = 230.47;
d = 30949.374;
cout << "short s :" << s << endl;
cout << "int i :" << i << endl;
cout << "long l :" << l << endl;
cout << "float f :" << f << endl;
cout << "double d :" << d << endl;
return 0;
}
当上述代码被编译并执行时,会产生以下结果:
short s :10
int i :1000
long l :1000000
float f :230.47
double d :30949.4
C++ 中的数学运算
除了你可以创建的各种函数之外,C++ 还包含一些有用的函数,你可以使用这些函数。这些函数存在于标准 C 和 C++ 库中,被称为内置函数。这些是可以包含在你的程序中然后使用的函数。
C++ 拥有一系列丰富的数学运算,可以在不同的数字上进行操作。下表列出了 C++ 中可用的一些内置数学函数。
要利用这些函数,你需要包含数学头文件 <cmath>
。
表一:函数及其用途
-
double cos(double);
这个函数接收一个角度(作为 double 类型)并返回余弦值。
-
double sin(double);
这个函数接收一个角度(作为 double 类型)并返回正弦值。
-
double tan(double);
这个函数接收一个角度(作为 double 类型)并返回正切值。
-
double log(double);
这个函数接收一个数字并返回该数字的自然对数。
-
double pow(double, double);
第一个参数是你希望提升的数字,第二个参数是你希望将其提升到的幂次方。
-
double hypot(double, double);
如果你传递给这个函数直角三角形两边的长度,它会返回斜边的长度。
-
double sqrt(double);
你传递给这个函数一个数字,它会给你这个数字的平方根。
-
int abs(int);
这个函数返回传给它的整数的绝对值。
-
double fabs(double);
这个函数返回传给它的任何小数的绝对值。
-
double floor(double);
找到小于或等于传给它的参数的整数。
示例代码
#include <iostream>
#include <cmath>
using namespace std;
int main () {
short s = 10;
int i = -1000;
long l = 100000;
float f = 230.47;
double d = 200.374;
cout << "sin(d) :" << sin(d) << endl;
cout << "abs(i) :" << abs(i) << endl;
cout << "floor(d) :" << floor(d) << endl;
cout << "sqrt(f) :" << sqrt(f) << endl;
cout << "pow( d, 2) :" << pow(d, 2) << endl;
return 0;
}
当上述代码被编译并执行时,会产生以下结果:
sin(d) :-0.634939
abs(i) :1000
floor(d) :200
sqrt(f) :15.1812
pow( d, 2 ) :40149.7
C++ 中的随机数
在许多情况下,你会希望生成一个随机数。实际上,你需要了解两个关于随机数生成的函数。第一个是 rand()
,这个函数只会返回一个伪随机数。解决这个问题的办法是首先调用 srand()
函数。
下面是一个简单的示例来生成一些随机数。此示例使用 time()
函数获取系统时间的秒数,以随机种子的形式来初始化 rand()
函数:
示例代码
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main () {
int i,j;
srand( (unsigned)time( NULL ) );
for( i = 0; i < 10; i++ ) {
j = rand();
cout <<" Random Number : " << j << endl;
}
return 0;
}
当上述代码被编译并执行时,会产生以下结果:
Random Number : 1748144778
Random Number : 630873888
Random Number : 2134540646
Random Number : 219404170
Random Number : 902129458
Random Number : 920445370
Random Number : 1319072661
Random Number : 257938873
Random Number : 1256201101
Random Number : 580322989