C 程序的输出 |第 33 组(rand() 和 srand())
您在 C\C++ 中的文章 rand() 和 srand() 中了解到如何生成随机数以及如何使用两个 C函数rand() 和 srand()。
下面列出了一些关于随机数的与输出相关的多项选择题。
1. rand()函数的返回类型为:
a) 短
b) 整数
c) 字符
d) 浮动
回答:
b
说明:rand() 的返回类型是整数。
2.函数srand(unsigned):
a) 为 rand() 设置种子
b) 生成随机数
c) 是错误
d) 生成常数。
回答:
a
说明: srand() 总是为 rand()函数设置种子。
3. rand() 和 srand() 函数的使用:
a) 找到 sqrt
b) 对于和操作
c) 对于或操作
d) 生成随机数
回答:
d
4. 生成 0 到 99 之间数字的最佳方法?
a) rand()-100
b) rand()%100
c) 兰特(100)
d) srand(100)
回答:
b
说明:rand() 将生成从 0 到 RAND_MAX 的随机数,它的模数为 100 确保我们的结果必须介于 0 和 99 之间。
5. 最小值和最大值之间的随机数可以通过以下方式生成:
a) 最小值 + (rand() % (最大值 – 最小值));
b) 最小值 + (rand() % (最大值 – 最小值 + 1));
c) 最小值 * (rand() % (最大值 – 最小值))
d) 最小值 – (rand() % (最大值+最小值));
回答:
b
说明:(maximum – minimum + 1) 是从最小值到最大值的区间大小,因此 rand() % (maximum – minimum + 1) 将为我们提供 0 到区间大小之间的随机整数,当添加到最小值时,会给出随机数最小值和最大值。
6. 以下哪个片段将有效地生成范围最广的随机数?
一)兰特();
b) 兰特(10);
c) rand(time(NULL));
d) 所有提到的
回答:
a
说明:rand() 在 0 到 RAND_MAX 的范围内生成随机数。
7.函数调用time(),接受什么类型的参数?
a) 整数
b) 整数 *
c) 时间_t
d) 时间_t *
回答:
d
说明:time() 的参数是指向存储时间值的 time_t 类型对象的指针。
8. 这个 C 代码的输出是什么?
C
#include
#include
int main()
{
printf("%d\n", rand() % 1000);
return 0;
}
C
#include
#include
int main()
{
srand(time(NULL));
printf("%d\n", rand());
return 0;
}
C
#include
#include
int main()
{
srand(9000);
printf("%d\n", rand());
return 0;
}
C
#include
#include
int main()
{
srand(time(NULL));
printf("%d\n", rand());
return 0;
}
C
#include
#include
int main()
{
printf("%d\n", srand(9000));
return 0;
}
C
#include
#include
int main()
{
printf("%d\n", rand());
return 0;
}
a) 编译时错误
b) 0-1000 之间的整数
c) 0-999 之间的整数,包括 0 和 999。
d) 0-1000 之间的整数,包括 1000
回答:
c
说明:rand() 生成随机数,并且 (rand() % 1000) 将其缩短到范围 [0, 999]。
9. 在下面的程序中,每次运行程序时都会生成不同的数字。对或错?
C
#include
#include
int main()
{
srand(time(NULL));
printf("%d\n", rand());
return 0;
}
a) 真的
b) 错误
c) 取决于平台
d) 取决于编译器
回答:
a
说明:srand() 将始终在每次程序运行时为 rand() 设置新种子。
10. 这个 C 代码的输出是什么?
C
#include
#include
int main()
{
srand(9000);
printf("%d\n", rand());
return 0;
}
a) 编译时错误
b) 0 到 RAND_MAX 范围内的整数。
c) 0 到 1 范围内的双精度值
d) 0 到 1 范围内的浮点数。
回答:
b
说明:rand() 将生成 [0, RAND_MAX] 范围内的整数。
11. 这个 C 代码的输出是什么?
C
#include
#include
int main()
{
srand(time(NULL));
printf("%d\n", rand());
return 0;
}
a) 编译时错误
b) 0 到 RAND_MAX 范围内的整数。
c) 0 到 1 范围内的双精度值
d) 0 到 1 范围内的浮点数。
答案:乙
解释:rand() 将生成范围[0, RAND_MAX] 内的整数,但是在运行程序时,由于srand(time(NULL)),每次都会生成不同的随机数。
12. 这个 C 代码的输出是什么?
C
#include
#include
int main()
{
printf("%d\n", srand(9000));
return 0;
}
a) 编译时错误
b) 0 到 9000 范围内的整数
c) 0 到 1 范围内的浮点数
d) 0 到 9000 范围内的双精度数
回答:
a
说明:返回类型为 time_t 的 srand() id 对象的类型。
13. 在下面的程序中,每次运行程序时都会生成不同的数字。
C
#include
#include
int main()
{
printf("%d\n", rand());
return 0;
}
a) 真的
b) 错误
c) 取决于平台
d) 取决于编译器
回答:
b
说明:为此必须使用 srand()。
14. 以下哪项是随机生成 0 到 1(含)之间数字的正确方法?
a) rand() / RAND_MAX
b) 兰特() % 2
c) 兰特(0, 1)
d) 没有提到的
回答:
a