数组小游戏

练习1:多个字符从两端移动,向中间汇聚(go to beijing)

char arr1[]="go to beijing";
char arr2[]="*************";

记住,数组元素通过下标访问

  1. 第一步,我们想将 (arr1的第一个元素) 放在 (arr2的第一个元素的位置),(arr1的最后一个)放在(arr2的最后一个元素的位置)
             1           1 
char arr1[]="go to beijing";
char arr2[]="*************";
  • 第一个元素简单,即下标为0的元素arr[0]
    -int left = 0; (left左,right右)
  • 那最后一个元素下标为几呢?如果字符很多,数最后一个元素是第几个有点不现实,可以选择计算数组大小:计算字符串大小用strlen(记住包含头文件string.h),再用字符串大小-1就是最后一个元素的下标了。
    int right = strlen(arr1) - 1;
  • 接下来就是将arr1[0]的元素放在arr2[0],arr1[最后一个]的元素放在arr2[最后一个],arr2[left]=arr1[left]; arr2[right]=arr1[right];在赋值完之后,将arr2再打印出来
  1. 第二步,将arr1的第二个和倒数第二个放在arr2相对应的位置
              2         2
char arr1[]="go to beijing";
char arr2[]="*************";

这不就是左边的往右跑,右边的往左跑嘛,那将left++,right–就可以解决啦。

  1. 第三步:将这两部循环起来就可以一直往中间走,记得写进入循环的条件,我们循环到什么时候停止,当left>right,即可停止。进入循环的条件:左<=右(left<=right)
  2. 如果觉得出来的太快,可以使用Sleep(时间),这个意思是休眠几毫秒 【记得包含头文件windows.h]
#include<windows.h>
#include<string.h>
int main()
{char arr1[] = "**************";char arr2[] = "go to beijing!";int left = 0;int right = strlen(arr1)-1;while (left <= right){arr1[left] = arr2[left];arr1[right] = arr2[right];printf("%s\n", arr1);Sleep(1000);  //休眠1000毫秒left++;right--;}return 0;
}
  1. 上面那种是第一行,第二行的打印。如果想要更美观,想让它在一行上,动态的打印出来,可以在第一行打印出来之后清理屏幕,这样之后就又是在第一行打印出来
    系统命令,清理屏幕:system(“cls”)【记得头文件stdlib.h】
#include<windows.h>
#include<string.h>
#include<stdlib.h>
int main()
{char arr1[] = "**************";char arr2[] = "go to beijing!";int left = 0;int right = strlen(arr1)-1;while (left <= right){arr1[left] = arr2[left];arr1[right] = arr2[right];printf("%s\n", arr1);Sleep(1000);    //休眠1000毫秒system("cls"); //清理控制台屏幕的信息left++;right--;}printf("%s",arr2);return 0;
}

二分查找(也叫折半查找)

在一个有序的数组中查找特定的数字n,直接从最中间的数字开始查找。

最容易想到的办法是遍历数组,但是效率太低,它需要访问每一个元素。假设一个生活中的场景,朋友买了一双鞋子,说不超过300元,你绝不可能从一元开始一个一个猜吧?最稳妥的方法是从中间值150元开始猜,这就是我们今天了解的二分查找。(假如数组乱序的话,可以选择遍历数组)

  1. 第一步:初始化数组,scanf输入想要查找的特定数字
  2. 第二步:找到中间数值的下标是多少
    (第一个元素的下标+最后一个元素的下标)/ 2,如果加起来是奇数,取商;偶数,完美,只有商。【大家应该还记得我之前笔记中如何计算数组大小吧,sz=sizeof(arr) / sizeof(arr[0])】
  3. 第三步:将中间的数值与查找的特定数字比较,if()… elsr…
    (升序)如果特定数n<中间值mid:原本left=0;right=sz-1;此刻n比mid小,说明在左半边,将right=mid-1,然后再计算新的mid;然后再进行比较,循环起来
    (升序)如果特定数n>中间值mid:原本left=0;right=sz-1;此刻n>mid,说明在右半边,将left=mid+1,然后再计算新的mid;再比较,循环起来。
  4. 第四步:进入循环的条件:left<=right
int main()
{int arr[39] = { 0 };//用初始化数组,0.....38for (int index = 0; index < 39; index++){arr[index] = index+1; //使得第一个元素为1}int n = 0;scanf("%d", &n);int left = 0;int sz = 0;int mid = 0;sz = sizeof(arr) / sizeof(arr[0]);int right = sz - 1;mid = (left + right) / 2;while (left <= right){if (arr[mid] < n) {left = mid + 1;mid = (left + right) / 2;}else if (arr[mid] > n) {right = mid - 1;mid = (left + right) / 2;}else if (arr[mid] = n) {printf("查找到该数字,下标为%d", mid);break;}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/10054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SearXNG - 一个注重隐私的互联网元搜索引擎

引言 在数字监控和数据货币化的时代&#xff0c;对于许多用户而言&#xff0c;在线保护个人信息变得至关重要。隐私问题特别突出的一个领域是搜索引擎&#xff0c;它们经常收集用户数据以定制个性化广告或构建用户档案。SearXNG 是一个开源的元搜索引擎&#xff0c;它汇集了各…

后仿真中的必懂VCS仿真选项之+nospecify/+notimingcheck/+no_notifier

今天&#xff0c;抽空学习和整理一下后仿真中的VCS仿真选项之nospecify/notimingcheck/no_notifier共三个选项。“后仿真很重要&#xff0c;坚持点滴学习” 1 选项&#xff1a;nospeicy 在仿真时忽略库文件中指定的延时。 2 选项&#xff1a;notimingcheck 时序检查开关&…

图解HTTP(2、简单的 HTTP 协议)

HTTP 协议用于客户端和服务器端之间的通信 请求访问文本或图像等资源的一端称为客户端&#xff0c;而提供资源响应的一端称为服务器端。 通过请求和响应的交换达成通信 请求必定由客户端发出&#xff0c;而服务器端回复响应报文 请求报文是由请求方法、请求 URI、协议版本、…

React Hooks实战:从useState到useContext深度解析

useState和useContext深度解析 React Hooks 彻底改变了React组件的状态管理和功能复用方式&#xff0c;使得函数组件也能拥有类组件的功能。 useState&#xff1a;函数组件的状态管理 简介&#xff1a; useState是React中最基础的Hook&#xff0c;它允许我们在函数组件中添…

鸿蒙HarmonyOS开发:List列表组件的使用详解及案例演示(二)

文章目录 一、List组件简介1、List组件2、ListItem组件3、ListItemGroup组件 二、使用ForEach渲染列表三、设置列表分割线四、设置List排列方向五、索引值计算规则六、示例演示1、AlphabetIndexer组件2、代码3、效果 一、List组件简介 在我们常用的手机应用中&#xff0c;经常…

OceanBase OAT安装

本文介绍如何 Docker 部署 OAT。 前提条件 在部署 OAT 之前&#xff0c;您需要确认以下信息&#xff1a; 您的操作系统满足以下条件&#xff1a; 服务器类型操作系统支持版本x86_64RHEL7.2 及以上版本x86_64CentOS7.2 及以上版本x86_64AliOS7.2 及以上版本x86_64openSUSE12SP…

SinoDB数据库导入导出工具External table

External table又叫SinoDB外部表&#xff0c;外部表采用多线程机制&#xff0c;支持多线程读取、写入数据文件以及多线程数据转换、插入操作。多线程机制只需要消耗相对较少的系统资源&#xff0c;但是能提供高速数据导入、导出&#xff0c;可以应用在数据采集、表重建、数据库…

OpenGL入门第四步:摄像机视角变换与交互

OpenGL入门第一步:创建窗口、重写虚函数-CSDN博客 OpenGL入门第二步:颜色、纹理设置(解析)-CSDN博客 OpenGL入门第三步:矩阵变换、坐标系统-CSDN博客 目录 函数解析 具体代码 函数解析 相机视角变换需要与鼠标键盘进行交互,需要重写鼠标和键盘响应函数。 初始化 …

【机器学习】 人工智能和机器学习辅助决策在空战中的未来选择

&#x1f680;传送门 &#x1f680;文章引言&#x1f512;技术层面&#x1f4d5;作战结构&#x1f308;替代决策选项&#x1f3ac;选项 1&#xff1a;超级战争&#xff08;Hyperwar&#xff09;&#x1f320;选项 2&#xff1a;超越OODA&#x1f302;选项 3&#xff1a;阻止其他…

MySQL的表级锁

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;面经 ⛺️稳中求进&#xff0c;晒太阳 表级锁 介绍 对于表锁&#xff0c;分为两类&#xff1a; 表共享读锁表独占写锁 语法 1. 加锁&#xff1a;lock tables 表名... read/write 2.…

MySQL数据库的安装和部署

1.数据库的相关介绍 关系型数据库管理系统&#xff1a;&#xff08;英文简称&#xff1a;RDBMS&#xff09; 为我们提供了一种存储数据的特定格式&#xff0c;所谓的数据格式就是表&#xff0c; 在数据库中一张表就称为是一种关系. 在关系型数据库中表由两部分组成&#xf…

电信网关配置管理系统 rewrite.php 文件上传致RCE漏洞复现

0x01 产品简介 中国电信集团有限公司(英文名称“China Telecom”、简称“中国电信”)成立于2000年9月,是中国特大型国有通信企业、上海世博会全球合作伙伴。电信网关配置管理系统是一个用于管理和配置电信网络中网关设备的软件系统。它可以帮助网络管理员实现对网关设备的远…

threejs 根据离散点生成不规则三角网(三角剖分),检测点是否在该三角网内(区域搜索)

我们知道threejs中的模型都是一个个三角网组成的&#xff0c;三角网数量越多&#xff0c;模型就越精细。 在 Three.js 中&#xff0c;你可以通过创建一个三角网格对象来表示三维模型&#xff0c;这个对象通常由一个顶点数组和一个索引数组构成。顶点数组包含了模型的各个顶点的…

Linux 进程信号【信号产生】

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux知识分享⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Linux知识   &#x1f51d; 目录 前言 信号概念 1. 生活角度的信号 2…

Java入门基础学习笔记1——初识java

1、为什么学习java&#xff1f; 几乎统治了服务端的开发&#xff1b;几乎所有的互联网企业都使用&#xff1b;100%国内大中型企业都用&#xff1b;全球100亿的设备运行java。开发岗位薪资高。 Java的流行度很高&#xff0c;商用占有率很高。 可移植性。 2、Java的背景知识 …

手机录屏怎么录?简单易懂的教程,让你轻松上手!

随着科技的不断发展&#xff0c;手机录屏已经成为人们日常生活中一个非常普遍的需求。无论是录制游戏精彩瞬间、分享App使用教程&#xff0c;还是保存线上会议、录制网课&#xff0c;手机录屏都发挥着重要作用。可是你知道手机录屏怎么录吗&#xff1f;本文将详细介绍三种手机录…

复现论文的conda环境

前提&#xff1a;已经安装好anaconda 一、使用requirement.txt &#xff08;1&#xff09;查看环境 conda env list &#xff08;2&#xff09;新建环境 之后使用查看环境命令看是否创建成功&#xff0c;创建时等终端收集好数据后要按个y回车 python版本可以在requiremen…

2023年全国职业院校技能大赛网络系统管理网络模块 SDN解题步骤

(六)SDN网络配置 1.考试现场提供SDN控制器登陆的用户名密码信息。 2.S6完成基础IP、VLAN及端口配置确保传统网络连通的情况,使用openflow1.3版本对接至SDN控制器下发策略(基于传统表项转发)达到流量转发控制的目的。 3.SDN控制器下发流表至S6默认禁止所有流量通过。 4…

【漏洞复现】RuvarOA协同办公平台 WorkFlow接口处存在SQL注入

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

亲测有效!关键点检测——COCO格式转YOLO格式代码!!!

话不多收&#xff0c;直接上代码&#xff0c;这个我也是找了好久的&#xff0c;分享不易&#xff0c;给个鼓励&#xff01;&#xff08;记得点赞收藏&#xff09; 大家可以直接使用此代码转换你自己的数据集&#xff0c;路径换成你自己的就行了&#xff0c;注意路径格式&#x…