猜数字游戏,折半查找,密码登录

1.猜数字游戏(C语言版)

1.问题分析:
首先要有一个与用户交互的菜单,其次生成一个随机数让用户来猜,然后通过用户输入的数字给出提示,是猜高了还是猜低了,最后用户猜对了,程序结束.

2.代码:

//菜单函数
int Menu(){
	printf("===============\n");
	printf("1.开始游戏\n");
	printf("0.游戏结束\n");
	printf("===============\n");
	printf("请输入你的选择:");
	int choice = 0;
	scanf("%d",&choice);
	return choice;
}
//游戏函数
void Game() {
	//进行一局游戏
	//1.系统随机生成一个随机数(1-100)
	int toGauss = rand() % 100 + 1;
	//2.再次让用户输入要猜的数字
	while (1) {
	printf("请输入一个数字(1-100):");
	int num = 0;
	scanf("%d", &num);
	//3.系统比较用户输入和系统的随机数的大小关系并给出提示
		if (num < toGauss) {
			printf("低了!\n");
		}
		else if (num > toGauss) {
			printf("高了!\n");
		}
		else {
			printf("恭喜你猜对了!\n");
			break;
		}
	}
}

int main() {
	int t = time(0);
	srand(t);
	//需要一个和用户交互的菜单
	while (1) {
		int choice = Menu();
		if (choice == 1) {
			//每次调用Game函数开始一局游戏
			Game();
		}
		else if (choice == 0) {
			//结束游戏
			printf("goodbye!\n");
			break;
		}
		else {
			printf("您的输入有误!请重新输入!\n");
		}
	}
	return 0;
}

3.运行截图:
在这里插入图片描述

2.折半查找

1.问题分析:
首先折半查找的前提是在一个有序的数组中进行查找,升序,降序都可以,其次确定待查找的数字,和数组的长度,然后每次查找都是查找当前数组中间的数字进行计较,判断待查找数字的当前数字的左边还是右边,确定哪边后,继续用待查找数字与该边数值的中间数字进行比较,循环执行该操作,最后如果找到该数字就返回下标,没找到返回-1.

2.代码:

//用函数实现折半查找
int BinarySearch(int arr[],int size, int toFind) {
	int left = 0;
	int right = size - 1; //确定最右边数字的下标
	while (left<=right) {
		int mid = (left + right) / 2;
		if (toFind<arr[mid]) {
			right = mid - 1;    //折半 待查找数字在左边
		}
		else if (toFind > arr[mid]) {
			left = mid + 1;     //折半 待查找数字在右边
		}
		else {
			return mid; //找到了
		}
	}
	return -1; //没找到
}

int main() {
	int arr[4] = { 2,5,7,9,};
	int result = BinarySearch(arr,4,7);  //4为数组长度,7为待查找数字
	printf("result=%d\n",result);
	return 0;
}

在这里插入图片描述

3.密码登录

1.问题分析:
首先设定正确密码,其次确定登录次数,然后给输入一次给出提示,最后若登录次数用完且密码都是错误及登陆失败,在次数内密码输入正确及登陆成功
2.代码:

int main() {
	int i;
	for (i = 0; i < 3;i++) {
		char password[10] = { 0 };
		printf("请输入密码:\n");
		scanf("%s", password);
		if (strcmp(password, "888888")==0) {
			printf("登陆成功\n");
			break;
		}else{
			printf("密码错误,请重试!\n");
		}
	}
	if (i==3) {
		printf("登陆失败\n");
	}
}

运行截图:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值