重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
目录
坚守“ 做人真诚 · 做事靠谱 · 口碑至上 · 高效敬业 ”的价值观,专业网站建设服务10余年为成都柔性防护网小微创业公司专业提供成都企业网站定制营销网站建设商城网站建设手机网站建设小程序网站建设网站改版,从内容策划、视觉设计、底层架构、网页布局、功能开发迭代于一体的高端网站建设服务。目录
完整的程序
打印菜单
主函数部分
生成随机数
猜数字函数的实现
我们已经学习到了C语言的一些基本知识和分支循环语句了,可以自己动一动手来尝试实现C语言—猜数字游戏了,为了猜数字程序的实现,应该要有以下几个功能:
1.程序会生成一个1~100之间的随机数。
2.猜数字的函数部分:
(1)猜小了,程序会告诉你猜小了,继续猜;
(2)猜大了,程序会告诉你猜大了,继续猜;
(3)猜对了,程序会告诉你:恭喜你猜对了,程序结束。
3.游戏可以重复运行。
完整的程序#include#include#includevoid menu()
{
printf("********************\n");
printf("***** 1.play ****\n");
printf("***** 0.exit ****\n");
printf("********************\n");
}
void game()
{
int ret = rand() % 100 + 1;
int num = 0;
while (1)
{
printf("请猜数字:>");
scanf("%d", &num);
if (num< ret)
{
printf("猜小了\n");
}
else if (num >ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,请重新选择\n");
break;
}
} while (input);
return 0;
}
执行结果:
通过printf函数打印出一个漂亮的菜单,以便以于对接下面循环语句的实现。
#includevoid menu()//打一个漂亮的菜单
{
printf("********************\n");
printf("***** 1.play ****\n");
printf("***** 0.exit ****\n");
printf("********************\n");
}
int main()
{
int input = 0;
do
{
//打印菜单
menu();
printf("请选择:>");
scanf("%d", &input);
//这里要实现游戏的开始和退出
//可以考虑使用switch循环
} while (input);//使游戏可以重复
return 0;
我们先写主函数,先实现菜单,利用do...while()语句的特征先让程序执行一遍,再通过switch语句实现对基本三种情况(包括含数组程序的执行,程序的退出,以及输入错误)的选择。这样就可以完成主函数了。
程序的大体框架就是这样子,下面就是完成生成随机数和对猜数字函数的实现。
#includevoid menu()
{
printf("********************\n");
printf("***** 1.play ****\n");
printf("***** 0.exit ****\n");
printf("********************\n");
}
int main()
{
int input = 0;
do
{
//打印菜单
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
printf("猜数字\n");
break;
case 2:
printf("退出游戏\n");
break;
default:
printf("选择错误,请重新选择\n");
break;
}
} while (input);
return 0;
为了生成随机数,我们需要使用rand函数,在使用rand 函数的时候需要引用头文件#include
rand函数返回的是0~RAND_MAX(32767)之间的一个随机数
使用rand函数,那随机数就算输入好了吗?
其实并没有,连续启动程序,我们会发现它随机数生成的值不仅过大,而且两次都是一样的。显然,这不是我们想要的结果。
第一次调试:
第二次调试:
所以为了生成我们所需要的随机数值,我们还需要引用到另一个函数:srand函数,rand函数在使用之前要使用一个srand函数来设置随机数的生成器。
但是我们使用srand函数时,同样也需要给该函数输入一个随机值srand函数才会发生变化,这样在我们需要输出随机值的情况下,又要输入随机值。很明显这是矛盾的,所以我们要想到一个新的办法。
我们可以使用时间戳来解决这个问题,C语言中,time函数会返回时间戳,通过time函数我们就可以生成我们想要的随机数了,记得使用time函数也需要应用头文件#include
确实是生成随机数了,可是当电脑输出下一个数时,会发现他和上一个数值一样或者十分接近,这显然也不是我们想要的随机数,所以还是需要改进。
srand函数在程序中只需要调用一次就可以了,我们不需要不断的重新使用srand函数,所以我们只需要将它放在主函数中,这样srand函数作为起点就可以只进行一次。
同时,为了得到1到100的随机数,我们只需要将rand函数自动生成的随机值取模100,得到该随机值的后面两位,这样我们就可以得到1到100中的随机值了。
这样就可以生成我们需要的随机数了。
程序很快就要完成了。
#include#include#includevoid menu()
{
printf("********************\n");
printf("***** 1.play ****\n");
printf("***** 0.exit ****\n");
printf("********************\n");
}
void game()
{
//srand((unsigned int)time(NULL));//放在main函数,只需要使用一次
//1.生成随机数
int ret = rand()%100+1;
printf("%d\n", ret);
//2.猜数字
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//time需要一个指针,我们传一个空指针即可
do
{
//打印菜单
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 2:
printf("退出游戏\n");
break;
default:
printf("选择错误,请重新选择\n");
break;
}
} while (input);
return 0;
}
实现猜数字函数,我们先使用一个while循环,在开始或者每次判断后输入一个数字后,通过多个嵌套的if语句不断的对输入的数字进行判断,直至猜对为止。
//2.猜数字
int num = 0;
while (1)
{
printf("请猜数字:>");
scanf("%d", &num);
if (num< ret)
{
printf("猜小了\n");
}
else if (num >ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
感谢你的观看,祝进步,如有错误,望指正。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧