首页 > 其他 > 详细

折半查找加小游戏

时间:2021-03-15 23:59:38      阅读:37      评论:0      收藏:0      [点我收藏+]

折半查找来了,折半查找是一个重点知识,在工作中会频繁使用,

一定要记住

注意:折半查找前提序列要是一个有序数列,升序或降序

下面看一个题

在有序数组中查找某个数字n,求其下标

#include<stdio.h>
#include<stdlib.h>
int main(){
    //折半查找,假设为升序
    int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    int tofind = 5;
    int left = 0;
    int right = sizeof(arr) / sizeof(arr[0]) - 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{
            printf("下标为%d\n", mid);
            break;
        }
    }
    //没有这个数的情况
    if (left > right){
        printf("没找到这个数\n");
    }
    system("pause");
    return 0;
}

 猜数字游戏

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int menu(){
    printf("########################\n");
    printf("####开始游戏请输入1####\n");
    printf("####结束游戏请输入2####\n");
    printf("########################\n");
    printf("请输入你的选择:\n");
    int choice = 0;
    scanf("%d", &choice);
    return choice;
}

void game(){
    //生成一个1-100的随机整数
    int toGuess = rand() % 100 + 1;
    while (1){
        printf("请输入要猜的数字:\n");
        int input;/*保存用户输入数*/
        scanf("%d", &input);
        if (input < toGuess){
            printf("低了!\n");
        }
        else if (input > toGuess){
            printf("高了!\n");
        }
        else{
            printf("猜对了!\n");
            break;
        }
    }
}
int main(){
    //设置随机种子,使用时间戳time(0)
    srand(time(0));
    while (1){
        int choice = menu();
        if (choice == 1){
            game();
        }
        else if (choice == 2){
            printf("程序退出,再见\n");
            break;
        }
        else
        {
            printf("你的输入有误,请重新输入\n");
        }
    }
    system("pause");
    return 0;
}

扩展知识:

rand()函数生成一个随机整数,但是是伪随机,每次生成的都一个相同的随机整数序列
需要程序已启动就设置一个随机种子srand();
且使用时间戳time(0);

小驼峰命名法: toGuess
大驼峰命名法: ToGuess
驼峰命名法是常用的命名法,好用就完事

折半查找加小游戏

原文:https://www.cnblogs.com/enjoyC/p/14536355.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!