玩家猜数游戏(v1.0)
题目要求:
系统随机生成一个0~99之间的整数;
玩家输入一整数, 若和系统随机生成的数匹配, 则可随机抽取一二三等奖(由系统随即决定);
若输入的数和系统随机生成的数不匹配, 系统根据玩家给出的数值进行大小提示;
玩家共有十次机会猜数, 若十次过后依旧未能猜中, 系统提示机会已经用完.
[运行问题汇总] ①若将f()函数中的magic、guess变量更改为char类型, 无论你输入多少次未能匹配的数值, 计数变量i的值一直停留在1, 而未能按照设想一直增1.②rand()函数虽然可以生成随机数, 但每次运行程序时生成的随机数都是一样的.
[注]为了节省主存空间, 我将数值范围较小的数值全部用char类型变量存储.
问题程序:
#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;
}
正确程序:
#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;
}
还没有评论,来说两句吧...