Jogo de adivinhação do jogador (v1.0)

Requisitos do assunto:

1. O sistema gera aleatoriamente um número inteiro entre 0 e 99;

2. O jogador insere um inteiro e, se corresponder ao número gerado aleatoriamente pelo sistema, um, dois e um terceiro prêmio podem ser sorteados aleatoriamente (conforme determinado pelo sistema);

3. Se o número inserido não coincidir com o número gerado aleatoriamente pelo sistema, o sistema irá solicitar o tamanho de acordo com o valor fornecido pelo jogador;

4. O jogador tem um total de dez chances de adivinhar o número.Se o jogador ainda não conseguir adivinhar depois de dez vezes, o sistema avisa que a oportunidade se esgotou.

[Resumo dos problemas de execução] ① Se você alterar as variáveis ​​mágicas e de suposição na função f () para o tipo char, não importa quantas vezes você insira o valor que não corresponde, o valor da variável de contagem i sempre permanece em 1 , em vez de ser o esperado. Adicione 1. ②Embora a função rand () possa gerar números aleatórios, os números aleatórios gerados toda vez que o programa é executado são os mesmos. 

[Nota] A fim de economizar espaço na memória principal, eu armazeno todos os valores com uma pequena faixa de valor em variáveis ​​do tipo char.

Procedimento do problema:

#include<stdio.h>
#include<stdlib.h>
char f()//用户猜数流程
{
    char magic=rand()%100;//生成一个介于0~99间的整数(包括0和99)
    char guess;//记录用户输入的整数
    char i=0;//循环计数变量
    printf("当前次数:\n");
    while(i<10)
    {
        printf("%d. 请输入一个介于0~99之间的整数: ", i+1);
        //printf("i=%d\n", i);//调试语句
        scanf("%d", &guess);
        if(guess==magic)
        {
            printf("猜对了!\n");
            return 1;
        }
        else if(guess>magic)
        {
            printf("猜大了!\n");
        }
        else
        {
            printf("猜小了!\n");
        }
        i++;
    }
    //若程序执行至此, 说明10次猜数机会已经用完.
    return 0;
}
char f2()//若用户猜对, 此程序随机决定用户的获奖等级
{
     char c=rand()%100;//随机生成一个0~99的整数
     if(c<=5)
     {
        return 1;
     }//一等奖
     else if(c<=30)
     {
         return 2;
     }//二等奖
     else
     {
         return 3;
     }//三等奖
}
int main()
{
    if(f()==1)
    {
        printf("恭喜您, 奖品到手!\n");
        if(f2()==1)
        {
            printf("一等奖.\n");
        }
        else if(f2()==2)
        {
            printf("二等奖.\n");
        }
        else
        {
            printf("三等奖.\n");
        }
    }
    else
    {
        printf("很遗憾, 您的10次机会已经用完, 欢迎再次参与!\n");
    }
    //
    return 0;
}

 

Procedimento correto:

#include<stdio.h>
#include<stdlib.h>
char f()//用户猜数流程
{
    int magic=rand()%100;//生成一个介于0~99间的整数(包括0和99)
    int guess;//记录用户输入的整数
    char i=0;//循环计数变量
    printf("当前次数:\n");
    while(i<10)
    {
        printf("%d. 请输入一个介于0~99之间的整数: ", i+1);
        //printf("i=%d\n", i);//调试语句
        scanf("%d", &guess);
        if(guess==magic)
        {
            printf("猜对了!\n");
            return 1;
        }
        else if(guess>magic)
        {
            printf("猜大了!\n");
        }
        else
        {
            printf("猜小了!\n");
        }
        i++;
    }
    //若程序执行至此, 说明10次猜数机会已经用完.
    return 0;
}
char f2()//若用户猜对, 此程序随机决定用户的获奖等级
{
     char c=rand()%100;//随机生成一个0~99的整数
     if(c<=5)
     {
        return 1;
     }//一等奖
     else if(c<=30)
     {
         return 2;
     }//二等奖
     else
     {
         return 3;
     }//三等奖
}
int main()
{
    if(f()==1)
    {
        printf("恭喜您, 奖品到手!\n");
        if(f2()==1)
        {
            printf("一等奖.\n");
        }
        else if(f2()==2)
        {
            printf("二等奖.\n");
        }
        else
        {
            printf("三等奖.\n");
        }
    }
    else
    {
        printf("很遗憾, 您的10次机会已经用完, 欢迎再次参与!\n");
    }
    //
    return 0;
}

Acho que você gosta

Origin blog.csdn.net/weixin_42048463/article/details/115168733
Recomendado
Clasificación