猜数字游戏

输入一个数字,判断这个数字与随机产生的数字是否相同,如果不同则继续猜,直到猜对,然后继续开始新的游戏。


这个代码从大的思想上可以分两个模块:

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值