📜  C |回路和控制结构|问题2(1)

📅  最后修改于: 2023-12-03 14:59:38.099000             🧑  作者: Mango

C语言控制结构问题2

在C语言中,控制结构是实现条件分支和循环的基础。掌握了控制结构,我们可以编写更加复杂的程序。

问题描述

本题要求实现一个猜数字的小游戏,游戏中系统会生成一个1~100的随机数,用户需要猜出这个数字。如果猜中,就输出“恭喜你猜对了!”;否则,如果用户猜的数字偏大或偏小,则输出提示信息,让用户可以重新输入数字进行猜测。如果用户输入的不是1~100范围内的数字,则输出提示信息,让用户重新输入。

解题思路
  1. 生成1~100的随机数;
  2. 接受用户输入的数字,判断是否在1~100的范围内;
  3. 如果不在范围内,输出提示信息,让用户重新输入;
  4. 如果在范围内,则判断是否等于生成的随机数;
  5. 如果相等,则输出“恭喜你猜对了!”并结束程序;
  6. 如果不相等,则根据用户输入的数字和生成的随机数大小,输出提示信息,让用户继续猜测,回到步骤2。
代码实现
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    // 生成随机数
    srand((unsigned)time(NULL)); // 用时间作为种子,保证每次生成的数都不一样
    int number = rand() % 100 + 1;

    // 输出规则
    printf("猜数字游戏,范围在1~100之间,请输入你猜的数字:\n");

    // 循环接受用户输入
    while (1) {
        int guess;
        scanf("%d", &guess);

        // 判断输入的数字是否在1~100之间
        if (guess < 1 || guess > 100) {
            printf("输入的数字不在1~100之间,请重新输入:\n");
        } else {
            // 判断是否猜中
            if (guess == number) {
                printf("恭喜你猜对了!\n");
                break; // 退出循环
            } else {
                // 输出提示信息
                if (guess > number) {
                    printf("你猜的数字太大了,请重新输入:\n");
                } else {
                    printf("你猜的数字太小了,请重新输入:\n");
                }
            }
        }
    }

    return 0;
}

代码中利用了time库中的time函数来获取当前时间戳作为种子,并利用srandrand函数来生成1~100之间的随机数。程序中使用while循环来反复接受用户输入,如果用户猜中了数字,就使用break语句退出循环,程序结束。