猜数字游戏

    xiaoxiao2021-12-14  102

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

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

    1,声明还有枚举enum op和随机数的编写,  第一个模块挺简单的,不会的从MSDN可以找到。

    2,用do while嵌套一个switch语句。

          核心是 do while 语句中的嵌套,然后就是这个代码的发动机了。

         (1)先 scanf 一个 input 用来选择 开始游戏 还是 退出游戏 ,

         (2)①进入 switch 语句里,调用 随机数的函数   int num = rand()0 生成数字(表示随机数在 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()0; 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; }
    转载请注明原文地址: https://ju.6miu.com/read-970777.html

    最新回复(0)