目录
第二种办法:使用srand()函数,使程序每次运行时产生不同的随机数序列,序列里第一个数肯定是不同的,那计算机拿的数就不同
第三种办法:使用time()函数读取计算机的时钟值,把该值设置为随机数种子。
试了好久,下面分享三种办法。
原代码:
#include <stdio.h>
#include <stdlib.h> //rand()在头文件stdlib.h定义,所以要包含
int main()
{
int magic, flag=1,i;
int guess;
magic= rand() %100 + 1; //调用随机函数,让计算机想0-100范围内的数
printf("%d\n",magic);
for (i=1;flag> 0;i++)
{
printf("input guess number:");
scanf("%d",&guess);
if (guess> magic)
{
printf("too big!\n");
}
else if (guess< magic)
{
printf("too small!\n");
}
else
{
printf("right!\n");
flag= 0; //猜对了就改掉flag的值,使它不符合循环条件
}
}
}
运行好几次,出来的变量magic都是同一个数。
第一种办法: 新增头文件,改用C++运行
#include <stdio.h>
#include <stdlib.h>
#include <time.h> //新增
#include <conio.h> //新增
#include <iostream> //新增
using namespace std; //新增
int main()
{
int magic, flag=1,i;
int guess;
srand((unsigned)time(NULL)); //新增
magic= rand() %100 + 1;
printf("%d\n",magic);
for (i=1;flag> 0;i++)
{
printf("input guess number:");
scanf("%d",&guess);
if (guess> magic)
{
printf("too big!\n");
}
else if (guess< magic)
{
printf("too small!\n");
}
else
{
printf("right!\n");
flag= 0; //猜对了就改掉flag的值,使它不符合循环条件
}
}
}
这样每次运行的magic都会不同。其中iosream头文件必须要用C++运行,还用C语言运行会报错,如下。
第二种办法:使用srand()函数,使程序每次运行时产生不同的随机数序列,序列里第一个数肯定是不同的,那计算机拿的数就不同
代码
#include <stdio.h>
#include <stdlib.h> //rand()在头文件stdlib.h定义,所以要包含
int main()
{
int magic, flag=1,i;
int guess;
unsigned int seed; //定义一个无符号整型变量
printf("input seed number:"); //提示输入
scanf("%u",&seed); //输入srand()函数需要的参数
srand(seed); //为rand()函数设置随机数种子
magic= rand() %100 + 1; //调用随机函数,让计算机想0-100范围内的数
printf("%d\n",magic);
for (i=1;flag> 0;i++)
{
printf("input guess number:");
scanf("%d",&guess);
if (guess> magic)
{
printf("too big!\n");
}
else if (guess< magic)
{
printf("too small!\n");
}
else
{
printf("right!\n");
printf("一共猜了%d次",i);
flag= 0; //猜对了就改掉flag的值,使它不符合循环条件
}
}
}
第三种办法:使用time()函数读取计算机的时钟值,把该值设置为随机数种子。
代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h> //添加头文件
int main()
{
int magic, flag=1,i;
int guess;
srand(time(NULL)); //使用time()函数读取计算机的时钟值
magic= rand() %100 + 1; //调用随机函数,让计算机想0-100范围内的数
printf("%d\n",magic);
for (i=1;flag> 0;i++)
{
printf("input guess number:");
scanf("%d",&guess);
if (guess> magic)
{
printf("too big!\n");
}
else if (guess< magic)
{
printf("too small!\n");
}
else
{
printf("right!\n");
printf("一共猜了%d次",i);
flag= 0; //猜对了就改掉flag的值,使它不符合循环条件
}
}
}