实践第一弹——猜数游戏

 完整代码:

#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间产生随机数

今日分享到此结束,明天见啦!

 

  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值