就是一个随机数【汗】
#include <iostream> // cout 对象需要这个库
#include <stdlib.h> // randmon 函数需要这个库
#include <signal.h> // signal 函数要这个库
#include <unistd.h> // sleep 函数要这个库
using namespace std; //省略后续代码中的std名字空间的对象或函数
void overfunc(int sig); //预申明了一个函数
int total = 0; //申明一个变量:总数, 用于计录猜骰子的总次数。
int rcount= 0; //申明一个变量:正确的次数,猜中的次数。
int main() //主函数,或称之为入口函数
{
srandom(time(NULL)); //创建个随机种子,以便后续使用random函数获取随机数。
int num; //申明一个变量num,用来获取外部输入,即用户猜的点数。
signal(SIGINT,overfunc); //设置ctrl+c 中断时要运行的函数 overfunc
while(true) // while语句,while 意思是当什么什么情况下执行。 while(true) 那个true是真的意思,也就是当(真是真的时候) 执行
// 真当然是真了,所以这句意思就是永远执行。
{
cout << "你猜是几? " << flush; //cout 是输出设备的对象名,要理解呀,不理解得问老师,不问就是2B
// 双引号把要输出的内容括起来了,其中有 你猜是几? 这五个字符,那个 是终端特 殊符,表示加下划线
// 因为在双引号里,所以空格也是字符,就会出现一串加了下划线的空格。 填空题,晓得不?
// 最后的 << flush 告诉cout对象刷新输出内容,也就是直接输出的终端上。
cin >> num; //等待外部输入,获取一个整数,用户就在执行这句时给程序一个输入,这里的输入都被程序认为是猜的数字
cout << ""<<flush; //这儿用 取消之前的下划线格式。flush 再次刷新缓存。
long int r = random(); //获取一个随机数 这是一个从0 ~ 16*(2^31 -16) 的数
r = (r%6) + 1; // r%6 其中% 是取余数的意思,r%6 就是把变量r的值除以6 得到的余数,这余数要么是0,要么是1,2,3,4,5。
// r = (r%6) + 1 就是把r的值对6取余以后再加上1的结果再赋值给r. 这个=号 不是判断,而是 赋值的意思,判断是否相等要用两个等号表示,即==
cout << "摇出一个:" << r << endl; //输出 摇出一个: ??
total ++; //总数加1并保存到total 变量中 这句也就是 total= total +1;
if(r == num) //如果猜中了
{
rcount ++; //正确的次数加1, rcount = rcount +1;
}
sleep(0);
}
}
void overfunc(int sig) // 函数overfunc, 输出统计结果
{
cout << "" << endl;
cout << "总共猜了 :" << total << " 次"<<endl;
cout << "共猜中了 :" << rcount << " 次"<<endl;
cout << "正确率为 :" << 100.0* rcount / total << "%" << endl;
exit(0);
}
linux哦