猜数字游戏

来源:互联网 发布:2017年淘宝云客服招聘 编辑:程序博客网 时间:2024/05/22 00:04

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


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

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

0 0
原创粉丝点击