前言;随着初期编程的学习,是否感觉愈发枯燥无味呢?如果如我所言,那么不妨尝试运行下这个程序,来检验下自己的成果吧。
目录
1代码
#define _CRT_SECURE_NO_WARNINGS
//猜数字游戏正式开始
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
printf("***************************\n");
printf("****** 1. play ********\n");
printf("****** 0. exit ********\n");
printf("***************************\n");
}
void game()
{
//1. 生成随机数
int r = rand()%100+1;
//2. 猜数字
int guess = 0;
int count = 5;//最多猜5次
while (count)
{
printf("你还有%d次机会\n", count);
printf("请猜数字:>");
scanf("%d", &guess);
if (guess < r)
printf("猜小了\n");
else if (guess > r)
printf("猜大了\n");
else
{
printf("恭喜你猜对了,随机数是:%d\n", r);
break;
}
count--;
}
if (count == 0)
{
printf("机会使用完,你失败了,正确的数字是:%d\n", r);
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
//打印简易的菜单
menu();//调用函数
printf("请选择:>");
scanf("%d", &input);//原因就是因为没有写输出 这里的哦
switch (input)
{
case 1:
game();//玩游戏的过程
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,重新选择!\n");
break;
}
} while (input);
return 0;
}
2猜数字游戏的实现
详解;首先映入眼帘的是自定义函数menu和game
menu函数的作用是打印简易的游戏菜单
game函数的作用是打印游戏运行程序
而此程序的第一步生成随机数则在主函数中
那么为什么已经将游戏程序单独写为一个自定义函数,却还要把生产随机数放于主函数中呢?
先来讲解下主函数中的那行代码
srand((unsigned int)time(NULL))
C语⾔中⼜提供了⼀个函数叫srand,⽤来初始化随机数的⽣成器的
程序中在调⽤srand函数之前先调⽤srand函数
通过srand函数的参数seed来设置rand函数⽣成随机数的时候的种⼦
只要种⼦在变化,每次⽣成的随机数序列也就变化起来了
strand后的括号为种子数,种子不同随机数不同
那么为什么不把游戏程序里面放入srand呢
此处用到了函数的知识,这个自定义game函数没有rutern
即无返回值,倘若再次进行游戏,那么值就是不变的了
对于srand内部的括号
(unsigned int)是强制类型转换
time即时间戳,time后括号为指针类型填入null即空指针
time函数会返回当前的⽇历时间
其实返回的是1970年1⽉1⽇0时0分0秒到现在程序运⾏时间之间的差值,单位是秒
返回的类型是time_t类型的,time_t类型本质上其实就是32位或者64位的整型类型
因此需要强制类型转换为int
time函数的时候需要包含头⽂件:time.h
在主函数中使用do while循环
在函数game中使用while循环
如下函数限制机会为五次
可调机会次数
倘若次数为0
count为0
while后括号为假,跳出循环
if识别成功,后续运行
仙海赤
2024.7.26
标签:srand,函数,int,time,基础知识,详解,随机数,printf,游戏 From: https://blog.csdn.net/Xian_haichi/article/details/140724959