Declaraciones de bifurcación y bucle (3)

3.4.6 Adivina el juego de números

  1. menú de impresión
void menu()
{
    
    
	printf("***************************\n");
	printf("***** 1.play   0.exit *****\n");
	printf("***************************\n");
}

  1. Elija jugar el juego o salir del juego
int main()
{
    
    
	//打印菜单
	//1. 玩游戏
	//0. 退出游戏
	int input = 0;

	do
	{
    
    
		menu();

		printf("请选择:>");
		scanf("%d", &input);//1 0

		switch (input)
		{
    
    
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误\n");
			break;
		}
	} while (input);

	return 0;
}

  1. Adivina el juego de números
//void srand (unsigned int seed);
void game()
{
    
    
	//RAND_MAX;
	
	//1. 生成随机数
	int ret = rand()%100+1;//可以生成随机数,随机数的范围是:0~32767
	//1~100
	//printf("%d\n", ret);

	//2. 猜数字
	int guess = 0;
	
	while (1)
	{
    
    
		printf("请猜数字:>");
		scanf("%d", &guess);

		if (guess > ret)
		{
    
    
			printf("猜大了\n");
		}
		else if (guess < ret)
		{
    
    
			printf("猜小了\n");
		}
		else
		{
    
    
			printf("恭喜你,猜对了\n");
			break;
		}
	}
}

int main()
{
    
    
	//time函数可以返回一个时间戳
	srand((unsigned int)time(NULL));//要给srand传递一个变化的值,计算机上的时间是时刻发生变化的
	
	return 0;
}

Código completo:

#include <stdio.h>
#include <stdlib.h>//rand和srand需要一个stdlib.h的头文件
#include <time.h>

void menu()
{
    
    
	printf("***************************\n");
	printf("***** 1.play   0.exit *****\n");
	printf("***************************\n");
}

//void srand (unsigned int seed);
void game()
{
    
    
	//RAND_MAX;
	
	//1. 生成随机数
	int ret = rand()%100+1;//可以生成随机数,随机数的范围是:0~32767
	//1~100
	//printf("%d\n", ret);

	//2. 猜数字
	int guess = 0;
	
	while (1)
	{
    
    
		printf("请猜数字:>");
		scanf("%d", &guess);

		if (guess > ret)
		{
    
    
			printf("猜大了\n");
		}
		else if (guess < ret)
		{
    
    
			printf("猜小了\n");
		}
		else
		{
    
    
			printf("恭喜你,猜对了\n");
			break;
		}
	}
}

int main()
{
    
    
	//打印菜单
	//1. 玩游戏
	//0. 退出游戏
	int input = 0;
	//time函数可以返回一个时间戳
	srand((unsigned int)time(NULL));//要给srand传递一个变化的值,计算机上的时间是时刻发生变化的

	do
	{
    
    
		menu();

		printf("请选择:>");
		scanf("%d", &input);//1 0

		switch (input)
		{
    
    
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误\n");
			break;
		}
	} while (input);

	return 0;
}

4. ir a declaración

El lenguaje C proporciona sentencias goto de las que se puede abusar a voluntad y etiquetas que marcan saltos.

#include <stdio.h>

int main()
{
    
    
again:
	printf("hehe\n");
	printf("hehe\n");
	printf("hehe\n");
	printf("hehe\n");
	
	goto again;//可以向前跳,也可以向后跳

//end:

	return 0;
}

Nota:

#include <stdio.h>

void test()
{
    
    
flag:
	printf("test\n");
}

int main()
{
    
    
	printf("hehe\n");
	
	goto flag;//goto 语句只能一个函数内部跳转,不能跨函数跳转的

	return 0;
}

Teóricamente, la instrucción goto es innecesaria y, en la práctica, el código se puede escribir fácilmente sin la instrucción goto.

//关机程序 
//1. 程序运行起来后,1分钟内电脑关机
//2. 如果输入:我是猪,就取消关机
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{
    
    
	char input[20] = {
    
     0 };
	//程序倒计时关机
	system("shutdown -s -t 60");

again:
	printf("请注意,你的电脑在1分钟内关机,如果输入:我是猪,就取消关机\n");
	scanf("%s", input);//输入
	
	if (0 == strcmp(input, "我是猪"))
	{
    
    
		system("shutdown -a");
	}
	else
	{
    
    
		goto again;
	}

	return 0;
}

//不用goto语句

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    
    
	char input[20] = {
    
     0 };
	//程序倒计时关机
	system("shutdown -s -t 60");
	while (1)
	{
    
    
		printf("请注意,你的电脑在1分钟内关机,如果输入:我是猪,就取消关机\n");
		scanf("%s", input);//输入

		if (0 == strcmp(input, "我是猪"))
		{
    
    
			system("shutdown -a");
			break;
		}
	}

	return 0;
}

Adjunto: Acerca de la extensión del comando de apagado


Sin embargo, la declaración goto sigue siendo útil en algunas ocasiones.El uso más común es terminar el procesamiento del programa en algunas estructuras profundamente anidadas. Por ejemplo: Salte de dos o más capas de bucles a la vez. Usar break en este caso no logra el propósito de los bucles multicapa, solo puede salir del bucle más interno al bucle anterior.
La escena donde el lenguaje goto es realmente adecuado.

Adjunto:

Instrucciones de bifurcación y bucle (1)
Instrucciones de bifurcación y bucle (2)

Supongo que te gusta

Origin blog.csdn.net/weixin_73077334/article/details/130448760
Recomendado
Clasificación