C++ 基础知识(3)--三目运算符、随机数、水仙花例子
三目运算符
三目运算符的格式是:<表达式1> ? <表达式2> : <表达式3>
当表达式1
为true
时执行表达式2
,当表达式1
为false
时执行表达式3
。
例子:
1 | int num = 5; |
运行结果:
1 | 4 |
c++ 中的三目运算符可以变量赋值
。
例子:
1 | int a = 0; |
运行结果:
1 | 1 |
随机数
c++ 的随机数生成方式是rand()
和srand()
。
rand并不是真随机数,而是伪随机数。
rand()
使用rand()会获取到一个随机数,使用rand()是需要加上头文件#include <stdlib.h>
的。取值范围是0~2147483647
。
例子:
1 |
|
打印结果:
1 | 16807 |
注意: 只有第一次运行的时候才会随机,比如这次案例执行的结果是16807
,你之后的在怎么运行都还是16807
。原因是没有随机种子,所有需要用到srand()
。
srand()
初始化随机数发生器。srand需要生成一个整数,而且保证每次这个整数都不一样才行,否则每次生成的随机数会是一样的。
1 | unsigned int seed; |
也就是要保证seed
每次都是不一样的才能才产生随机数。可以使用当前时钟作为随机数种子,这里要用到time()
,需要用到头文件time.h
。
完整例子如下:
1 |
|
这样运行就会出现不同的随机数。
选择随机数产生的范围
要取得 [a,b)
的随机整数,使用 (rand() % (b-a))+ a
;
要取得 [a,b]
的随机整数,使用 (rand() % (b-a+1))+ a
;
要取得 (a,b]
的随机整数,使用 (rand() % (b-a))+ a + 1
;
通用公式: a + rand() % n
;其中的 a 是起始值,n 是整数的范围。
要取得 a 到 b 之间的随机整数
,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)
。
要取得 0~1 之间的浮点数
,可以使用 rand() / double(RAND_MAX)
。
例子:
- 获取[0,10)的范围
rand() % 10
水仙花例子
水仙花数是指一个 3 位数
,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153
。
找到所有三位数的水仙花数。
1 |
|
这个例子中用到了pow()
方法,就是求数的次幂(n^m),第一次参数就是n,第二个参数就是m,m是几代表几次幂。需要头文件cmath
例子:
1 | pow(5,2); // 5 * 5 = 25 |
-
2022-09-08