猜数字游戏

综合前面的语法,进行下面的一个实例学习。

目录

1. 折半查找算法。

2. 折半查找总结

3. 猜数字游戏

 

1. 折半查找算法。

  首先来学习一个算法。
  折半查找又称二分查找。执行二分查找的前提,必须是要查找的数据都是有序的。比如数组必须是有序的数组,要么递增要么递减。
   假设数组是递增的,查找它的大概流程是,从最中间数据开始查找,然后与输入数据比较,如果数据大于中间数据,则去右边查找,反之去左边查找,又从中间查找。如果到最后一个数没找到就退出。

//C语言
int half_find(int arr[], int size,int findx)
{
    int left = 0;
    int right = size - 1;
    int mid = left + (right - left) / 2;
    
    while(left <= right)
    {
        if(findx > arr[mid])
        {
            left = mid + 1;
            mid = left + (right - left) / 2;
        }
        else if(findx > arr[mid])
        {
            right = mid - 1;
            mid = left + (right - left) / 2;
        }
        else
        {
            return mid;
        }

    }
    return -1;
}

2. 折半查找总结

  1.  定义左右数组下标——left,right。
  2. 定义中间下标——mid。
  3. 定义条件——while(left<=right)
  4. 比较寻找的数字与中间量的大小。改变左右下标的位置。

3. 猜数字游戏

//c语言
#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
void game() {
	int x = 0;
	x = rand() % 100;
	int choice = 0;
	printf("请输入一个0~99的数字:");
	scanf_s("%d", &choice);
	while (1) {
		if (choice < x) {
			printf("您的数字小了!请再输一次:");
			scanf_s("%d", &choice);
		}
		if (choice > x) {
			printf("您的数字大了!请再输一次:");
			scanf_s("%d", &choice);
		}
		if (choice == x) {
			printf("恭喜您!真幸运!\n");
			break;
		}
	}

}
void menu() {
	printf("*************************\n");
	Sleep(900);
	printf("******+1.开始游戏+******\n");
	Sleep(900);
	printf("******+0.退出游戏+******\n");
	Sleep(900);
	printf("*************************\n");
	Sleep(900);
	int choice;

	while (1) {
		printf("请输入您的选择:");
		scanf_s("%d", &choice);
		if (choice == 1) {
			printf("游戏要开始了,请准备!\n");
			printf("\n");
			Sleep(1000);
			game();
		}
		else if (choice == 0) {
			printf("下次再来。。\n");
			break;
		}
		else {
			printf("非法输入。\n");
		}

	}
}
	

void main() {
	
	menu();
	system("pause");
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值