C语言中的猜数字游戏,比其他语言麻烦一点的是随机数不好给出,为了使随机数每次都不一样,这里引用时间戳这个概念。
时间戳:时间戳是指格林威治时间自1970年1月1日(00:00:00 GMT)至当前时间的总秒数。 通俗的讲,时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。
时间可以转化成时间戳,因为时间措施随着时间的流动而改变的。
int ret = rand()%100+1;//随机生成0-32767 0-RAND_MAX %100+1是为了猜1到100之间的数 srand((unsigned int)time(NULL));
调用时间戳,设定随机数的起点不同,所以随机数也不同。
下面来看全部代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<windows.h> #include<stdlib.h> #include<time.h> void menu() { printf("玩不玩猜数字游戏\n"); printf("******1/玩******\n"); printf("******0/不玩****\n"); printf("请输入数字:>"); } void game() { //生成随机数 int ret = rand()%100+1;//随机生成0-32767 0-RAND_MAX %100+1是为了猜1到100之间的数 //printf("%d\n", ret);打印随机数 //猜数字 int guess; do { scanf("%d", &guess);//这里输入你猜的数 if (guess < ret) { printf("猜小了\n"); } else if (guess > ret) { printf("猜大了\n"); } else { printf("猜对了\n"); } } while (guess!=ret);//当你猜不对时,就让你一直猜,直到猜对位置 } int main() { int x; //设置随机数的起点,这里使用了时间戳,不要频繁使用 srand((unsigned int)time(NULL)); do { menu(); scanf("%d", &x); switch (x) { case 1: game(); break; case 0: printf("退出\n"); break; default: printf("重新选择\n"); } } while(x);//输入的x为1时,进入游戏,0时推出游戏,其他数字时重新输入 //当case 1结束了,直接break了,但是此时x=1还是会继续执行循环 //接着就打印菜单栏,可以进行多次游戏 return 0; }
效果展示:
当输入3是,系统要求重新输入,当输入1时进入猜数字游戏,直到才对为止,输入0推出程序。