1.猜数字游戏 2.二分查找 3.模拟用户登录

猜数字游戏

//猜数字游戏
void eumn()
{
	printf("==============\n");
	printf("====1.PLAY====\n");
	printf("===0.EXIT======\n");
	printf("==============\n");
}
void game()
{
	int num = 0;
	int tem = rand() % 100 + 1;
	while (1)
	{
		printf("输入你猜的数字;");
		scanf("%d", &num);
		
		if (num > tem)
		{
			printf("大了\n");
		}
		else if (num < tem)
		{
			printf("小了\n");
		}
		else
		{
			printf("恭喜你找到了");
			break;
		}

	}
}
int main()
{
	int choice = 0;
	srand((unsigned int)time(NULL));//这里要强转,每次随机数srand只用设置一次,后面直接用rand()调用就行了
	eumn();
	do{
		printf("请输入您是否要玩游戏:");
		scanf("%d", &choice);
		if (choice == 1)
		{
			game();
		}
		else if (choice == 0)
		{
			printf("下次再见");
			break;
		}
		else
		{
			printf("您输入的选择有误");
		}
	} while (1);
	system("pause");
	return 0;
}

二分查找

//二分查找,找到了返回该数字的下标
int BinarySearch(int arr[], int left, int right, int key)
{
	while (left <= right)
	{
		int mid = (left + right) / 2;
		if (key > arr[mid])
		{
			left = mid + 1;

		}
		else if (key < arr[mid])
		{
			right = mid - 1;
		}
		else
		{
			return mid;
		}
	}
	return -1;
}
int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	int left = 0; int right = sizeof(arr) / sizeof(arr[0]) - 1;
	int key = 0;
	printf("请输入要查找的数;");
	scanf("%d", &key);
	
	int result = BinarySearch(arr, left, right, key);
	if (result >= 0)
	{
		printf("找到了,它的下标是%d", result);
	}
	else
	{
		printf("没找到");
	}

	system("pause");
	return 0;
}

模拟用户登录

//编写代码模拟三次密码输入的场景最多能输入三次密码,密码正确,提示“登录成功”, 密码错误,
//可以重新输入,最多输入三次。三次均错,则提示退出程序。
int main()
{
	char passward[20] = {};//用来存密码字符串;
	int i = 0;
	for (i = 0; i < 3; i++)
	{
		printf("请输入密码;");
		scanf("%s", &passward);
		if (strcmp(passward, "12345") == 0)//strcmp用来比较字符串,但是为什么传参的时候要传const char*?
		{
			printf("密码正确\n");
			break;
		}
		else
		{
			printf("密码错误,您只有%d次机会\n",2-i);
		}
	}

	system("pause");
	return 0;
}
封装用户登录,但出了问题
int login(char* passward,char* key)
{
	int i = 0;
	for (i = 0; i < 3; i++)
	{
		scanf("%s", &passward);//是不是因为这里传的是首元素地址,存不下?
		if (strcmp(passward, key) == 0)
		{
			return 1;
		}
	}
	return -1;
}
int main()
{
	char passward[10] = {};
	//char key = "abc"//是因为abc是一个常量字符串,所以不能初始化char类型的变量吗?
	int result = login(passward,"abc");//数组名是数组的首地址
	if (result == 1)
	{
		printf("yes");
	}
	else
	{
		printf("error");
	}
	system("pause");
	return 0;
}

你可能感兴趣的:(1.猜数字游戏 2.二分查找 3.模拟用户登录)