//猜数字游戏
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int input =1;
void menu()
{
printf("***************************************\n");
printf("************** 1.play *****************\n");
printf("************** 0.play *****************\n");
}
void game()
{
int ret=0;int input1=0;
char just[100]="";//这里的数组空间要设的大一点,不能让他自动,因为第一个输入ok时,会自动给数组空间2字节,但当输入end时,就有三个字节,导致空间被破环,
//会报Run-Time Check Failure #2 - Stack around the variable ‘just’ was corrupted.(错误原因是:栈被破坏,缓存区溢出)
ret=rand()%100+1;
//printf("随机数为:%d 。\n",ret);
printf("成功进入游戏,请等待......\n");
//for(;input1 || input1==0;)//用||(或)符号,当输入0时也能行,不会退出程序
for(;;)
{
Sleep(1000);
printf("是否继续游戏,是请输入“ok”,否则请输入“end”,请输入:");
scanf("%s",&just);
if(strcmp(just,"ok") == 0)
{
printf("请输入:");
scanf("%d",&input1);
if(input1>ret)
{
printf("猜大了,请重新猜。\n");
}
if(input1<ret)
{
printf("猜小了,请重新猜。\n");
}
if(input1 == ret)
{
printf("恭喜猜对了!!!\n");
break;
}
}
if(strcmp(just,"end") == 0)
{
//input=0;
break;
}
}
}
int main()
{
srand((unsigned)time(NULL));//生成随机数之前。就是调用rand之前要先使用srand设置随机起点,并且用时间戳(time),调用头文件#include <time.h>
//用时间戳设置随机起点,计算机的时间起点为(1970.1.1.0:0:0),这个时间要无符号的,所以用unsigned,NULL为空指针,不希望产生任何的意义
for(;input;)
{
menu();
printf("请选择模式,输入1开始游戏,输入0退出游戏,其他数字需要重新输入。\n");
printf("请输入数字:");
scanf("%d",&input);
switch(input)
{
case 1:
game();
break;
case 0:
printf("退出游戏。\n");
break;
default:
printf("选择错误,请重新输入!\n");
break;
}
}
return 0;
}