分支和循环语句(含goto语句)-Part3

  • Post author:
  • Post category:其他




只要你愿意 开始总比放弃好。     Roman.



愿我们都有自己的目标并正在为其不懈努力。

—————————————————————————-猜数字游戏(1-100)

//猜数字小游戏:1-100
//游戏至少进行一次,所以用do...while循环
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<windows.h>

//菜单
void menu()
{
	printf("************************************************\n");
	printf("******************  猜数字小游戏  **************\n");
	printf("****************** 1.play  0.exit **************\n");
	printf("************************************************\n");
}
//游戏
void game()
{
	//生成随机数:srand()函数放在主函数中就行
	int tmp = rand() % 100 + 1;
	//需要头文件<stdlib.h>,返回值类型为int,范围为0-32767,要使得范围在1-100,则处理为:模100+1
	//注意生成随机数不在循环中,因为要保持随机数只在每一轮游戏改变

	while (1)
	{
		//猜数字
		int guess = 0;
		printf("请输入您的猜测:\n");
		scanf("%d", &guess);

		//判断大小
		if (tmp < guess)
		{
			printf("猜大了\n");
			continue;
		}
		else if (tmp > guess)
		{
			printf("猜小了\n");
			continue;
		}
		else
		{
			printf("恭喜您,猜对了!\n");
			break;
		}
	}
	
	//是否想再来一局
	printf("是否想要再来一局?\n");
	Sleep(1000);
}

int main()
{
	srand((unsigned int)time(NULL));//注意返回类型以及time函数不需要存储时写NULL,存储时则指针
	int choice = 0;
	do
	{
		menu();
		printf("请选择:\n");
		scanf("%d", &choice);
		switch (choice)
		{
		case 1:
			printf("开始游戏:\n");
			game();
			break;
		case 0:
			printf("退出游戏!\n");
			break;
		default:
			printf("选择无效,请重新选择!\n");
			Sleep(1000);//延迟打印
			break;
		}
	} while (choice);
	return 0;
}

—————————————————————————-关机程序

//关机程序--goto语句 or 循环语句
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char input[20] = { 0 };
	char cor[] = "I am a pig";
	system("shutdown -s -t 60");//包含在头文件<stdlib.h>中
	printf("BB 你的电脑将在60秒内关机\n");
	printf("输入“I am a pig”就可以阻止电脑关机喔\n");

	//普通循环语句
	//while (1)
	//{
	//	printf("BB 请输入:\n");
	//	gets(input);
	//	//scanf("%[^\n]]",input); //也可以实现含空格字符串的输入
	//	if (strcmp(input, cor) == 0)
	//	{
	//		system("shutdown -a");
	//		printf("You are a pig! 恭喜BB解除关机成功!\n");
	//		break;
	//	}
	//	else
	//	{
	//		printf("BB 错了喔\n");
	//	}
	//}

	//goto语句
again:
		printf("BB 请输入:\n");
		//gets(input);
		scanf("%[^\n]]",input); //也可以实现含空格字符串的输入
		if (strcmp(input, cor) == 0)
		{
			system("shutdown -a");
			printf("You are a pig! 恭喜BB解除关机成功!\n");
		}
		else
		{
			goto again; //执行的是again 后面的所有语句
		}
	return 0;
}

—————————————————————————-

注意点

  • 生成随机数:

    rand(void)返回值是int型,包含在头文件<stdlib.h>中

  • rand函数默认返回范围是:0-32767
  • 仅使用rand( )时会发现第一次和第二次生成的随机数一样,则

    需要在rand( )函数前调用srand(unsigned int

    ),但是又会发现,当srand(unsigned int)中int保持不变时,每一次的随机数都一样,故int处需要一个变化的数–时间戳
  • 时间戳:现在时间与计算机时间的差值,单位换算为:秒

  • time_t time(time_t* timer) 括号内如果是时间地址则有存储时间戳功能,但是只想返回不想存储则括号内用NULL即可
  • time_t是time函数的返回类型,是long或int64 类型,即:是一个

    整型
  • time函数头文件是<time.h>

  • 所以生成随机数:srand((unsigned int)time(NULL));       rand();
  • 但是要注意:当生成的随机数太频繁时,随机数会保持不变,解决方法是

    将srand函数置于主函数中

    ,每一轮游戏调用一次即可
  • rand()函数返回的随机数范围是0-32767,要想生成1-100的随机数则%100+1
  • 注:任何一个数模100的结果为0-99之间
  • 计算机写出的随机数是伪随机数
  • 倒计时关机命令:system(“shutdown -s -t 数字”) 单位:秒
  • 取消关机:system(“shutdown -a”)  包含在头文件<stdlib.h>

——————————-一个人所有的愤怒来自于对自己无能的痛苦。————————————–



版权声明:本文为weixin_54150521原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。