
前言:前面几篇文章分享了c语言的部分知识,这一篇文章让我们想利用前面所学内容来完成一个关机程序和猜数字小游戏吧·~
---这个程序较为简单,我们直接看代码和注释就能看懂了;

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
char input[20] = {0};
system("shutdown -s -t 60");
while (1)
{
printf("你的电脑将在一分钟后关机,输入:我是猪,可以取消关机\n");
scanf("%s", input);//数组名不用取地址,数组名本身就是地址;
if (strcmp(input, "我是猪") == 0)
{
system("shutdown -a");
printf("关机程序已关闭\n");
break;
}
}
return 0;
}补充:其中的strcmp是用来比较两个数组是不是相等的;
---在实现猜数字小游戏之前,我们还需要学习几个知识点;
--c语言提供了一个函数rand,这函数是可以生成随机数的,函数原型如下所示
1.int rand (void);rand函数会返回一个伪随机数,这个随机数的范围是在0~RAND_MAX之间。这个RAND_MAX的大小是依赖编译器上实现的,但是在大部分编译器上是32767。
rand函数需要包含一个头文件是:stdlib.h;
但是需要注意rand每次生成的随机数序列都会是一样的,大家可以自己去测试一下,打印几个rand,多运行几次看结果;之所以每次运行都是一样的,那是因为rand函数生成随机数的默认种子是生成不同随机数,就要让种子也是变化的。我们该怎么解决这个问题呢,接着往下看吧~
--c语言还提供了一个函数叫srand,用来初始化随机数的生成器的,scrand的原型如下:
1.void srand (usigned int seed);程序中在调用rand函数之前先调用 srand函数,通过srand函数的参数seed来设置rand函数生成随机数的时候的种子,只要种子在变化,每次生成的随机序列也就变化起来了。
那也就是说给srand的种子如果是随机的,rand就能生成随机数;在生成随机数的时候又需要一个随机数,这就很矛盾了。于是我们需要引入time函数;
--在程序中我们一般是使用程序运行时间作为种子的,因为时间时刻在发生变化的。在c语言中有个函数叫time,就可以获得这个时间,time函数原型如下:
1.time_t time(time_t* timer);这里我们不需要了解太多,只需要知道time的函数的参数timer如果是非NULL的指针的话,函数将会将这个返回的差值放在timer指向的内存中带回去。
如果timer是NULL,就只返回这个时间的差值。time函数返回的这个时间差也被叫做:时间戳。
time函数使用的时候需要包含头文件:time.h;我们可以这样写~
1.time(NULL);//调用time函数返回时间戳,这里没有接收返回值srand函数不需要频繁调用的,一次运行的程序中调用一次就够了;
所以如果要生成a~b的随机数,方法如下:
1.a + rand() % (b-a+1);#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void game()
{
int r = rand() % 100 + 1;
int num = 0;
int count = 5;
printf("猜数字游戏正式开始\n");
while (count)
{
printf("\n你还有%d次机会\n", count);
printf("请输入数字:");
scanf("%d", &num);
if (num < r)
{
printf("猜小了\n");
}
else if (num > r)
{
printf("猜大了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
count--;
}
if (count == 0)
{
printf("你的机会用完了,正确答案是:%d\n", r);
}
}
void menu()
{
printf("******************\n");
printf("***** 1.play *****\n");
printf("***** 2.exit *****\n");
printf("******************\n");
}
int main()
{
int i = 0;
srand((unsigned int)time(NULL));
do
{
menu();
printf("请选择:>");
scanf("%d", &i);
switch (i)
{
case 1:
game();
break;
case 2:
printf("你已退出游戏\n");
break;
default:
printf("选择错误,重新选择\n");
break;
}
} while (i != 2);
return 0;
}结语:以上就是两个趣味小游戏代码的实现了,猜数字游戏也就是通过两个函数的封装和前面所学知识来完成的~,大家可以尝试一下;也可以复制代码去体验一下,感谢大家的支持,接下来会接着更新数组的相关内容;