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