完整代码:
#include<stdio.h>
#include<math.h>
#include<time.h>//调用时间头文件
int main()
{
int i,a,c,point;
while(i!=2)//控制循环
{
srand(time(NULL));//使用时间种子
point=rand()%100+1;//1到100间产生随机数
while(i!=2)
{
printf("请输入1-100中的任意数:");
scanf("%d",&a);
if(a>100||a<0)//当输入数字大于100或小于0时,提示重新输入
{
printf("数据错误,请重新输入!\n");
continue;
scanf("%d",&a);
}
if(a<point)
{
printf("猜小了,再猜一次:\n");
continue;
scanf("%d",&a);
}
if(a>point)
{
printf("猜大了,再猜一次:\n");
continue;
scanf("%d",&a);
}
if(a==point)
{
printf("你赢了\n");
printf("游戏结束\n");
printf("是否再来一次?请按1或0选择是否进行:(输入1或其他值为确认进行,输入0为结束游戏)\n");
scanf("%d",&c);
if(c)//if语句中非0为真,执行if语句;0为假,执行else语句
break;
else
printf("游戏结束\n");
i=2;//使while循环为假,跳出循环
break;
}
}
}
return 0;
}
设计目标:
1.对比输入数字和系统自动随机生成的数字,提示大或小,当相同时,游戏胜利。
实行方案:
通过if选择语句的条件来实现,将两者的大小关系作为选择结构执行的条件,大小提示作为选择结构的函数体,当两者相同时,此次游戏结束。
if(a<point)
{
printf("猜小了,再猜一次:\n");
continue;
scanf("%d",&a);
}
if(a>point)
{
printf("猜大了,再猜一次:\n");
continue;
scanf("%d",&a);
}
if(a==point)
{
printf("你赢了\n");
printf("游戏结束\n");
}
2.可以多次进行游戏。
while(i=2)
{
printf("是否再来一次?请按1或0选择是否进行:(输入1或其他值为确认进行,输入0为结束游戏)\n");
scanf("%d",&c);
if(c)//if语句中非0为真,执行if语句;0为假,执行else语句
break;
else
printf("游戏结束\n");
i=2;//使while循环为假,跳出循环
break;
}
当此次循环结束时,询问是否再来一次。
如果再来一次,将输入除0以外的任何数赋值给c,则if(c)语句条件为真,跳出该循环,再次判断while循环是否执行,这时i并没有重新赋值,不等于2,所以循环重新开始执行。
如果不再继续,则输入0,if语句判断为假,执行else语句,将i重新赋值为2后跳出循环,这时while循环判断条件为假,则不再执行while循环,程序执行结束。
3.每次游戏产生的随机数不相同。
每次游戏永远不会相同的是时间,时间每一秒都在改变,于是当我们希望每次函数的随机数都不一样时,我们可以插入一个时间种子srand(time(NULL))来控制point函数产生随机数。
需要注意的是:一定要有一个大循环来控制过程中随机数的产生,否则每猜一次后数都将会改变,就基本没有可能才对结束游戏了。
while(i!=2)//控制循环
{
srand(time(NULL));//使用时间种子
point=rand()%100+1;//1到100间产生随机数
今日分享到此结束,明天见啦!