c语言学习笔记(随机种子)

例子:随机生成一个1-100之间的数,猜对了就继续游戏,猜错了就给提示大了还是小了,最终提示猜对所用的次数

int main()
{
	int val = 0;  // 输入值
	int count = 0;// 总数
	int rx = rand() % 100 + 1; // 随机1-100值
	for (; ;) // 无限循环
	{
		printf("请输入你猜的数值:");
		scanf("%d ", &val);
		count += 1;
		if (val < rx)  printf("你猜小了\n");
		else if (val > rx) printf("你猜大了\n");
		else printf("你猜对了\n");
		printf("count = %d\n", count);
	}
	return 0;
}

但是这个随机数是一个伪随机数,也就是第一次启动和第二次启动生成的是同一个随机数

所以我们需要一个随即因子,time() , 需要在#include<time.h>头文件中,意思是取得系统当前时间,但只精确的到秒级

int main()
{
	int val = 0;
	int count = 0;
	int rx = 0;
	srand(time(NULL));
	rx = rand() % 100 + 1;
}

这样就可以每次调用都是不同的随机值

输入年月日,找出最靠前的时间,当输入的年月日,小于等于0时,结束程序

int main()
{
	int year = 1, month = 1, day = 1;
	int myear = INT_MAX, mmonth = 12, mday = 31; //表示年月日都是最大的,这样输入的任何值都是靠前的
	for (; ;)
	{
		bool tag = false;
		printf("inpit year month day (yyyy/mm/dd)\n");
		scanf("%d %d %d", &year, &month, &day);
		if (year <= 0 || month <= 0 || day <= 0)
		{
			break;
		}
		if (year < myear)
		{
			tag = true;
		}
		else if (year == myear && month == mmonth && day < mday)
		{
			tag = true;
		}
		if (tag)
		{
			myear = year;
			mmonth = month;
			mday = day;
		}
	}
	printf("最早日期 year : %d month : %d day : %d \n", myear, mmonth, mday);
	return 0;
}

也可以用结构体封装

struct Date
{
	int year;
	int month;
	int day;
};
int main()
{
	struct Date val = { 1 , 1 ,1 };//初始化
	struct Date min = { INT_MAX , 12 ,13 }; //存放的是最大值
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值