C语言学习(第八天)

今天开始第三章的学习,我们直接上题目:

#include<stdio.h>
int main(void)
{
	int mynumber, yournumber;
	mynumber = 38;
	printf("Input your number:");
	scanf("%d", &yournumber);
	if(yournumber==mynumber){
		printf("Good Guess!\n");
	}else if(yournumber>mynumber){
		printf("Too big!\n");
	}else{
		printf("Too small!\n");
	}
	return 0;
}

这个是书上给的答案,但是,你会发现这个程序和我们想要的猜数字游戏的预期不一致。这个程序只能执行一次就结束了,而且数字还是固定的,只能人为修改。我们不能满足于此,那我们给他改一下,把这个程序给他完善一下。

首先是只能运行一次的问题,我们给他加一个for循环:

#include<stdio.h>
int main(void)
{
	int n, i, mynumber, yournumber;
	mynumber = 38;
	printf("Please enter the number of guesses:");
	scanf("%d", &n);
	if(n<=0){
		printf("Mistake!\n");
	}else{
	for(i=1;i<=n;i++){
		printf("Enter your number:");
		scanf("%d", &yournumber);
		if(yournumber==mynumber){
			printf("Lucky You!\n");
			break;
		}else if(yournumber>mynumber){
			printf("Too big!\n");
		}else{
			printf("Too small!\n");
		}
	}
	printf("Game Over!\n");
    }
	return 0;
}

改善了一点,现在猜测的次数就由我们自己决定了。然后再考虑考虑被猜数字怎么改变,让它变成随机数或者说是一个改变改变的数字。如果考虑简单一点的话,我们可以让被猜数与我们猜测次数相关,比如:

mynumber = 5*n*n - 3*n + 11;

当然,你也可以用 pow(n,2) ,但是别忘了再开头的地方声明函数。但,如果你上网查一下C语言中,随机数怎么表示的话,你应该就知道,我们可以让 mynumber 与时间相关。我们直接上最终改进之后的代码:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
	int n, i, mynumber, yournumber;
	srand(time(0));
	mynumber = rand()%100+1;
	printf("Please enter the number of guesses:");
	scanf("%d", &n);
	if(n<=0){
		printf("Mistake!\n");
	}else{
	for(i=1;i<=n;i++){
		printf("Enter your number:");
		scanf("%d", &yournumber);
		if(yournumber==mynumber){
			printf("Lucky You!\n");
			break;
		}else if(yournumber>mynumber){
			printf("Too big!\n");
		}else{
			printf("Too small!\n");
		}
	}
	printf("Game Over!\n");
    }
	return 0;
}

srand(time(0)) :就是给这个算法一个启动种子,也就是算法的随机种子数,有这个数以后才可以产生随机数,用1970.1.1至今的秒数,初始化随机数种子。

rand()%100+1:1~100之间的随机数。我们使用rand函数可以得到一个0~32767的随机数,其中rand()是输出0~32767,只是运用求余算符,除以100的余数在0至99,再加1就使数值在1至100。

今天就到这里吧,打的差不多的,今天主要就是由猜字游戏延伸出去的知识(主要是没时间打其他的了,今天满课),嘿嘿。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值