目的
通过这个demo,可以练习生成随机数,while循环,延时函数和运用system函数进行刷新屏幕的操作。
过程
一,生成随机数
二,延时两秒
三,刷新屏幕
四,用户输入并判断正误
五,增加一位数并重复以上过程
具体实现
步骤一
首先要产生三位随机数并且输出,所以先定义变量并初始化,
int count = 3; //记录每次生成多少个随机数。随机数的生成用到了rand()函数,而在步骤五需要判断正误,所以需要再次生成随机数然后一个个的比较输入的数字和生成的随机数是否相同,这就要求第一次生成的随机数和第二次生成随机数相同。
用srand()函数来设置随机数种子,在此之前,定义变量seed。
unsigned int seed = time(NULL);这里用到了time()函数,其作用是得到机器的日历时间或者设置日历时间,头文件为 time.h,所以前面要加上头文件#include <time.h>
而time(NULL)是获取当前系统时间。所以定义了种子之后就可以进行随机数的生成了:
unsigned int seed = time(NULL);
srand(seed);
for(int i = 0; i < count; i++){
//生成一个1~9之间的随机数
int temp2 = rand() % 9 + 1;
printf("%d ",temp2);
}
步骤二
延时两秒有两种格式,如下
1.#include <windows.h>
Sleep(2000);
2.for(int i = 0; i < 10000000000/15*2; i++);
步骤三
- 刷新屏幕可以使用system函数
- system函数是C语言提供的与操作系统衔接的函数
- system("CLS") 是在C语言程序中,调用系统命令cls完成清屏操作。
所以在加上头文件#include <stdlib.h>
并用语句 system("cls");
即可实现刷新屏幕
步骤四
判断正误的过程是生成一个随机数,然后用户输入一个数,把随机数和输入数做对比,重复这个操作且次数与位数相同
由此即可判断用户输入的与生成的是否相同
第一步是重新设种子并且要和之前生成时的种子一样,所以
int temp;
printf("请输入:");
srand(seed);
第二步就可以开始比较了
for(int i = 0; i < count; i++){
scanf("%d", &temp);
//获取对应的生成的随机数
int old = rand() % 9 + 1;
//比较输入的和随机数是否相同
if (temp != old){
printf("错误 退出!\n");
exit(EXIT_SUCCESS);
}
}
printf("正确!\n");
步骤五
- 要实现增加位数并循环,就可以想到用while语句。
- 将所有代码放到一个while循环里,条件设为一个恒等式,就可以使整个过程无限循环了。
- 又要是每一次的随机数位数比上一次增加一位,就可以在while循环的最后让count++。
到这里,这个demo就做好了。
注意
count的定义及初始化要放在while循环的前面
rand()会返回一随机数值,范围在0至[RAND_MAX] 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。
又或者说,rand()会返回一个伪随机数。之所以说是伪随机数,是因为在没有其它操作下,每次执行同一个程序,调用rand得到的随机数序列是固定的(不是真正的“随机”)。srand()用来设置rand()产生随机数时的随机数种子。如果每次参数seed都设相同值,rand()所产生的随机数值每次就会一样。
为了使rand的结果更“真”一些,也就是令其返回值更具有随机性(不确定性),通过srand()函数可以设置一个随机数种子,一般用当前时间的[毫秒]srand只需要在所有rand调用前,被调用一次即可,没必要调用多次。