////猜数字游戏
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
// 产生一个0~RAND_MAX之间的伪随机数
// int rand=rand();  错误
//rand() 函数是标准库中的一个函数,用于生成一个伪随机数
// 而 rand 是一个变量名,当你使用 int rand = ...; 时
// 你实际上是在尝试定义一个名为 rand 的变量 由于变量名和函数名冲突,编译器通常会报错
//   srand(1);  这样传入一个种子会固定不变
    void menu() {
        printf("************************************\n");
        printf("欢迎来到猜数字游戏:\n");
        printf("请选择:1.play 0.quit\n");
        printf("********************************\n");
    }

    void game() {
        // 初始化随机数生成器
        srand((unsigned int)time(NULL));
        // 生成一个1到100之间的随机数
        int red = rand() % 100 + 1;
        int guess;
        int count = 0;
        while (count < 3) { // 允许用户猜3次
            printf("你还有%d次机会,请输入一个数字:", 3 - count);
            if (scanf("%d", &guess) != 1) {
                // 如果输入不是整数,则清除输入缓冲区并提示用户重新输入
                while (getchar() != '\n');
                printf("输入错误,请输入一个整数。\n");
                continue; // 跳过当前循环的剩余部分,重新开始循环
            }

            if (guess > red) {
                printf("猜大了,请再试一次。\n");
            } else if (guess < red) {
                printf("猜小了,请再试一次。\n");
            } else {
                printf("恭喜,猜对了!\n");
                return; // 猜对后退出函数
            }

            count++; // 增加猜测次数
        }

        // 如果循环正常结束,即用户用完猜测次数
        printf("很遗憾,你没有猜对。正确答案是%d。\n", red);
    }

    int main() {
        int choice;

        do {
            menu();
            printf("请输入选择: ");
            if (scanf("%d", &choice) != 1) {
                // 如果输入不是整数,清除输入缓冲区并提示用户重新输入
                while (getchar() != '\n');
                printf("输入错误,请输入1(play)或0(quit)。\n");
                continue;
            }

            switch (choice) {

                case 1:
                    game();
                    break;
                case 0:
                    printf("退出游戏\n");
                    break;
            }
        } while (choice != 0); // 当用户输入0时退出循环

        return 0;
    }

posted on 2024-04-06 11:07  蒸饺  阅读(530)  评论(0)    收藏  举报