输入一个数字,判断这个数字与随机产生的数字是否相同,如果不同则继续猜,直到猜对,然后继续开始新的游戏。
这个代码从大的思想上可以分两个模块:
1,声明还有枚举enum op和随机数的编写, 第一个模块挺简单的,不会的从MSDN可以找到。
2,用do while嵌套一个switch语句。
核心是 do while 语句中的嵌套,然后就是这个代码的发动机了。
(1)先 scanf 一个 input 用来选择 开始游戏 还是 退出游戏 ,
(2)①进入 switch 语句里,调用 随机数的函数 int num = rand()%100 生成数字(表示随机数在 1 - 100 大小,也可以选择更大范围的或者更小的),然后进入游戏开始猜数字。
②枚举enum op 中 PLAY = 1; EXIT = 2;本人建议使用这个,在以后编写大的工程中,case语句有很多,但是如果用数字1,2,3代表的话到最后会不太容易看起case中的功能,所以用一个有意义的字符代表1,2,3。。。的话会增强代码的可读性。
③在 case PLAY 中在嵌套一个 if 语句,表示已经开始猜数字游戏,判断输入数字与随机数是否相等,三个结果对应三个if else语句,一个大于,一个小于和一个等于,猜对之后输出对应的 printf 语句
④用一个while(1)重新进入游戏选项,然后继续下去。
大的框架就编写完成了,其余的代码只是用来优化这个游戏的,表示有些繁琐。。。
PS:当时我在写的时候,发现自己编写风格的陋习,起头写代码的时候只写了一个do,然后开始编写switch呀case什么的开始敲了,但是到最后测试的时候出现错误了,因为没有提前写好do while 结构导致最后大括号都不知道对应的哪个,花了十几分钟才改好。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("*****累了困了就来猜猜数字*****\n");
printf("*******1,开始游戏********\n");
printf("**************************\n");
printf("*******2,退出游戏********\n");
}
enum OP
{
Y,
PLAY,
EXIT
};
int main()
{
int input = 0;
do
{
menu();
srand( (unsigned)time(NULL) );
printf("请输入: \n");
scanf("%d",&input);
switch(input)
{
case PLAY:
{
int i = 1;
int num = rand()%100;
int num2 = 0;
printf(" 你能猜出么?\n");
while(1)
{
scanf("%d",&num2);
if(num2<num)
{
printf("猜小了\n");
if(i>3)
{
printf("能猜对么你?\n");
printf("你怎么那么笨啊,继续猜->");
}
else
{
printf("换个大一点的数字试试\n");
printf("请重新输入一个数字—>\n");
}
printf("\n");
}
else if(num2>num)
{
printf("猜大了\n");
if(i<3)
{
printf("能猜对么你?\n");
printf("你怎么那么傻啊,继续猜->");
}
else
{
printf("换个小一点的数字试试\n");
printf("请重新输入一个数字—>");
}
i++;
}
else
{
printf("成功猜对,快去写代码吧。\n");
}
}
}
case EXIT:
{
printf("正在退出\n");break;
}
}
}
while(input-2);
return 0;
}