当前位置: 首页 > news >正文

C语言每日一练-----Day(4)

本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。

今日练习题关键字:记负均正    旋转数组的最小数字    二分查找

在这里插入图片描述

💓博主csdn个人主页:小小unicorn
⏩专栏分类:C语言天天练
🚚代码仓库:小小unicorn的代码仓库🚚
🌹🌹🌹关注我带你学习编程知识

Day1

  • 题目一:
    • 题目描述:
    • 解题思路:
    • 代码实现:
    • 结果情况:
  • 题目二:
    • 题目描述:
    • 解题思路:
      • 1.为什么想到二分查找?
      • 2.如何解决分段单调的问题?
      • 3.上面的写法发生错误,为什么呢?
      • 4.如何解决重复的问题?
    • 代码实现:
    • 结果情况:
  • 总结:

题目一:

题目描述:

题目来源:记负均正
首先输入要输入的整数个数n,然后输入n个整数。输出为n个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。
0既不是正整数,也不是负数,不计入计算。如果没有正数,则平均值为0。
数据范围: 1≤n ≤2000 ,输入的整数都满足 ∣val∣≤1000

输入描述:
首先输入一个正整数n,
然后输入n个整数。

输出描述:
输出负数的个数,和所有正整数的平均值。

在这里插入图片描述

解题思路:

1.边输入边统计负数个数

2.边输入边统计正整数个数,注意0既不是正整数,也不是负整数,否则求平均会出问题

3.求平均时特殊处理除数为0的情况

代码实现:

#include<stdio.h>int main() 
{int cnt;int num[2000];int avr = 0;int negtive = 0;float sum = 0;scanf("%d", &cnt);for (int i = 0; i < cnt; i++) {scanf("%d", &num[i]);if (num[i] < 0) {negtive++;}if (num[i] > 0) {avr++;sum += num[i];}}//输出负数个数|所有正数平均值,结果保留一位小数if (avr == 0) {//考虑除数为0的情况printf("%d 0.0\n", negtive);}else {printf("%d %0.1f\n", negtive, sum / avr);}return 0;
}

结果情况:

在这里插入图片描述
符合题目要求,问题解决。

题目二:

题目描述:

题目来源:旋转数组的最小数字
有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。

解题思路:

这道题目,我们可以采用一个方法:二分查找.

1.为什么想到二分查找?

二分查找的本质的本质是二段性,只要满足二段性的问题都可以使用二分查找求解。

在本题中二分查找的二段性体现在:最小值左边的单调增,最小值右边的单调增。且左边的元素都大于右边的元素。
在这里插入图片描述

2.如何解决分段单调的问题?

很简单,我们只需要比对arr[mid]与arr[0]和arr[numsSize - 1]的大小关系就可以:

1.arr[mid] > arr[0],说明mid此时落在最小值左边
2.arr[mid] < arr[numsSize - 1],说明此时mid落在最小值的右边。

根据这一特性我们利用左闭右开型的二分查找就可以压缩出最小值所在的地方。

到此我们可以写下这样的一段代码

int minNumberInRotateArray(int* arr, int arrSize) 
{int left = 0;int right = arrSize - 1;while(left < right){int mid = (left + right) / 2;if(arr[mid] >= arr[0]){left = mid + 1;}else{right = mid;}}return arr[left];
}

3.上面的写法发生错误,为什么呢?

因为题目只是说到非降序,所以不能排除出现重复的情况:
在这里插入图片描述

4.如何解决重复的问题?

我们重点对数据的右边进行去重

1.如果发生arr[mid] < arr[right],则和上面一样使得right = mid。
2.如果发生arr[mid] > arr[right],则和上面一样使得left = mid + 1。
3.如果发生arr[mid] == arr[right],则说明发生重复,对于重复我们将right–,因为既然有重复,那删掉其中一个可以保证至少还有1个。

这样不断删之后可以排除重复的影响,最终的代码如下:

代码实现:

int minNumberInRotateArray(int* arr, int arrSize) 
{int left = 0;int right = arrSize - 1;while(left < right){int mid = (left + right) / 2;if(arr[mid] < arr[right])right = mid;else if(arr[mid] > arr[right])left = mid + 1;elseright -= 1;}return arr[left];
}

结果情况:

在这里插入图片描述
调整过后的代码符合题目要求,题目得到解决.

总结:

今天的两道编程题整体来说难度不大。只不过有个新颖的点在于:第二道题用到了二分查找。通过不断改进我们的思路,一步一步完善,最后将问题解决。

文章到这里就要告一段落了,有更好的想法或问题,欢迎评论区留言。
希望今天的练习能对您有所收获,咱们下期见!

相关文章:

C语言每日一练-----Day(4)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字&#xff1a;记负均正    旋转数组的最小数字    二分查找 &#x1f493;博主…...

如何使用工具将批量查询的物流信息导出到表格

现如今&#xff0c;物流行业发展迅速&#xff0c;人们对于物流信息的查询需求也越来越高。为了满足用户的需求&#xff0c;我们推荐一款便捷高效的物流信息查询工具——"固乔快递查询助手"软件。 首先&#xff0c;用户需要下载并安装"固乔快递查询助手"软件…...

Haproxy+Keepalive 整合rabbitmq实现高可用负载均衡

Haproxy 实现负载均衡 HAProxy 提供高可用性、负载均衡及基于 TCPHTTP 应用的代理&#xff0c;支持虚拟主机&#xff0c;它是免费、快速并且可靠的一种解决方案&#xff0c;包括 Twitter,Reddit,StackOverflow,GitHub 在内的多家知名互联网公司在使用。HAProxy 实现了一种…...

电子病历系统的核心技术——电子病历编辑器

一体化电子病历系统基于云端SaaS服务的方式&#xff0c;采用B/S&#xff08;Browser/Server&#xff09;架构提供&#xff0c;覆盖了医疗机构电子病历模板制作到管理使用的整个流程。除实现在线制作内容丰富、图文并茂、功能完善的电子病历模板外&#xff0c;还可按照医疗机构的…...

C++------map和set的使用

文章目录 关联式容器键值对树型结构的关联式容器set的介绍map的介绍 关联式容器 什么是关联式容器&#xff1f;它与序列式容器有什么区别&#xff1f; 关联式容器也是用来存储数据的&#xff0c;与序列式容器不同的是&#xff0c;其里面存储的是<key&#xff0c;value>结…...

URI和URL和URN区别

URI、URL 和 URN 是一系列从不同角度来看待资源标识和定位的概念。虽然它们有一些重叠&#xff0c;但每个概念都强调了不同的方面。 URI&#xff08;Uniform Resource Identifier&#xff09;&#xff1a;URI 是一个通用的术语&#xff0c;用于标识和定位资源。它是一个抽象的概…...

【Unity学习笔记】DOTween(1)基础介绍

本文中大部分内容学习来自DOTween官方文档 文章目录 什么是DOTween&#xff1f;DOSetOnTweenerSequenceTweenNested tween 初始化使用方式 什么是DOTween&#xff1f; DOTween是一个动画插件&#xff0c;Tween是补间的意思。这个插件以下简称DOT&#xff0c;DOT很方便使用&…...

springboot项目,使用JNA框架调用C++库无法捕获异常的解决思路

写在前面&#xff1a;这个东西真的坑&#xff0c;工作上遇到的和JNA项目的入门案例差别就像是二重积分与小学数学之间的差距&#xff0c;折磨&#xff01; 使用 JNA&#xff08;Java Native Access&#xff09;框架调用 C 库时&#xff0c;如果出现问题导致进程直接结束而无法捕…...

【项目 计网7】4.20 多进程实现并发服务器 4.22 多线程实现并发服务器

文章目录 4.20 多进程实现并发服务器server_process.cclient.c4.22 多线程实现并发服务器客户端代码&#xff1a;服务端代码&#xff1a; 4.20 多进程实现并发服务器 要实现TCP通信服务器处理并发的任务&#xff0c;使用多线程或者多进程来解决。 思路&#xff1a; 1、一个父进…...

论文阅读_扩散模型_LDM

英文名称: High-Resolution Image Synthesis with Latent Diffusion Models 中文名称: 使用潜空间扩散模型合成高分辨率图像 地址: https://ieeexplore.ieee.org/document/9878449/ 代码: https://github.com/CompVis/latent-diffusion 作者&#xff1a;Robin Rombach 日期: 20…...

LeetCode——回溯篇(二)

刷题顺序及思路来源于代码随想录&#xff0c;网站地址&#xff1a;https://programmercarl.com 目录 131. 分割回文串 93. 复原 IP 地址 78. 子集 90. 子集 II 491. 递增子序列 131. 分割回文串 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个…...

RabbitMQ工作模式-发布订阅模式

Publish/Subscribe&#xff08;发布订阅模式&#xff09; 官方文档&#xff1a; https://www.rabbitmq.com/tutorials/tutorial-three-python.html 使用fanout类型类型的交换器&#xff0c;routingKey忽略。每个消费者定义生成一个队列关绑定到同一个Exchange&#xff0c;每个…...

JDK源码解析-Object

1. Object类 所有类的基类——java.lang.Object Object 类是所有类的基类&#xff0c;当一个类没有直接继承某个类时&#xff0c;默认继承Object类Object 类属于 java.lang 包&#xff0c;此包下的所有类在使用时无需手动导入&#xff0c;系统会在程序编译期间自动导入。 思…...

pinia——添加插件——基础积累

问题&#xff1a;是否给pinia添加过插件&#xff1f;具体添加的方式是什么&#xff1f; 在pinia中&#xff0c;我们可以为仓库添加插件&#xff0c;通过添加插件能够扩展以下的内容&#xff1a; 为 store 添加新的属性 定义 store 时增加新的选项 为 store 增加新的方法 包装现…...

软件国产化之殇

今天又看到这么一个帖子讨论一款国产化软件&#xff0c;属实给我震撼到了。 对于国产化产品&#xff0c;一直主打的都是”自研“&#xff0c;难道是我对”自研“这个词的理解有误&#xff1f; 做一个产品&#xff0c;别人开源了&#xff0c;你拿过来使用&#xff0c;你可以说…...

SQLyog问题处理集合

sqlyog 问题处理 1. 错误号码:1049错误&#xff1a; 数据库命令参数参考&#xff1a;数据库命令地址 检查数据库是否存在检查创建的数据库名称 与 要进行连接的数据库名称是否一致&#xff1b; 2. 错误号码:1819错误&#xff1a; MySQL授予远程连接权限时出现&#xff1a; …...

JavaSE【继承和多态】(1)(重点:初始化、pretected封装、组合)

一、继承 继承 (inheritance) 机制 &#xff1a;是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特 性 的基础上进行扩展&#xff0c;增加新功能 &#xff0c;这样产生新的类&#xff0c;称 派生类 。 继承呈现了面向对象程序设计的层次结…...

无涯教程-Android Studio函数

第1步-系统要求 您将很高兴知道您可以在以下两种操作系统之一上开始Android应用程序的开发- MicrosoftWindows10/8/7/Vista/2003(32或64位)MacOSX10.8.5或更高版本,最高10.9(小牛) GNOME或KDE桌面 第二点是,开发Android应用程序所需的所有工具都是开源的,可以从Web上下载。以…...

CentOS8安装mysql8.0.24

一、下载mysql安装包并解压 执行以下命令&#xff1a; # 创建mysql安装目录 mkdir /usr/local/mysql # 进入mysql安装目录 cd /usr/local/mysql/ # 下载mysql-8.0.24 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz # 解压…...

Quasi-eccentricity Error Modeling and Compensation in Vision Metrology

论文&#xff1a;Quasi-eccentricity Error Modeling and Compensation in Vision Metrology 中文&#xff1a;视觉计量中准偏心误差建模与补偿 论文地址&#xff1a;Sci-Hub | Quasi-eccentricity error modeling and compensation in vision metrology. Measurement Scienc…...

Dual-Tree Agent RAG:可控、可解释、可验证

从文本检索到方法推理的跃迁 传统RAG系统将文档切分为平面文本块&#xff0c;通过向量相似度检索来增强大模型生成。这种模式在简单事实问答中表现良好&#xff0c;却难以应对需要全局结构理解、跨章节整合和方法论复用的复杂创新任务。现有改进方案如RAPTOR&#xff08;层次摘…...

【实战指南】如何用nvitop解决GPU资源监控与管理难题

【实战指南】如何用nvitop解决GPU资源监控与管理难题 【免费下载链接】nvitop An interactive NVIDIA-GPU process viewer and beyond, the one-stop solution for GPU process management. 项目地址: https://gitcode.com/gh_mirrors/nv/nvitop 在深度学习训练、科学计…...

SQLancer:自动化数据库测试的效能革命

SQLancer&#xff1a;自动化数据库测试的效能革命 【免费下载链接】sqlancer Automated testing to find logic and performance bugs in database systems 项目地址: https://gitcode.com/gh_mirrors/sq/sqlancer 在数据库系统的开发与维护中&#xff0c;逻辑缺陷和性能…...

不止于搭建:用DVWA靶场在Kali上复现SQL注入与文件上传漏洞实战

不止于搭建&#xff1a;用DVWA靶场在Kali上复现SQL注入与文件上传漏洞实战 当你第一次在Kali Linux上成功运行DVWA靶场时&#xff0c;那种成就感就像解锁了新世界的大门。但真正的乐趣才刚刚开始——这个看似简单的靶场&#xff0c;其实是网络安全爱好者最好的实战训练场。本文…...

9大核心优势!Outfit字体全方位应用指南:从安装到精通

9大核心优势&#xff01;Outfit字体全方位应用指南&#xff1a;从安装到精通 【免费下载链接】Outfit-Fonts The most on-brand typeface 项目地址: https://gitcode.com/gh_mirrors/ou/Outfit-Fonts Outfit字体作为一款专业开源无衬线字体&#xff0c;凭借9种完整字重体…...

OpenClaw知识库集成:Qwen3-VL:30B连接飞书文档中心

OpenClaw知识库集成&#xff1a;Qwen3-VL:30B连接飞书文档中心 1. 为什么需要智能文档助手 上个月整理季度技术文档时&#xff0c;我对着飞书里上百个分散的文档链接发愁——每次找资料都要在搜索框反复尝试关键词&#xff0c;遇到表格和图表更要逐页核对。直到发现OpenClaw能…...

B站Index-AniSora本地部署避坑指南:4张4090显卡实测+常见错误解决

4张RTX 4090实战&#xff1a;Index-AniSora动漫生成模型深度部署手册 当四张RTX 4090显卡同时亮起RGB灯效时&#xff0c;机箱内涌动的不仅是1.2kW的功耗&#xff0c;更是一个能够将二次元幻想转化为动态画面的数字炼金术工坊。B站开源的Index-AniSora模型正在重新定义独立创作者…...

OpenClaw轻量化部署:在树莓派上运行Qwen3.5-9B微型服务

OpenClaw轻量化部署&#xff1a;在树莓派上运行Qwen3.5-9B微型服务 1. 为什么选择树莓派部署OpenClaw 去年夏天&#xff0c;我在整理个人文档时被重复的文件分类工作折磨得苦不堪言。当时我就在想&#xff1a;如果能有个AI助手帮我自动处理这些琐事该多好。但市面上的云端方案…...

Path of Building终极指南:5分钟掌握流放之路最强Build规划工具

Path of Building终极指南&#xff1a;5分钟掌握流放之路最强Build规划工具 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding Path of Building&#xff08;简称PoB&#x…...

抖音视频批量下载效率革命:解放双手的douyin-downloader全攻略

抖音视频批量下载效率革命&#xff1a;解放双手的douyin-downloader全攻略 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 作为内容创作者&#xff0c;你是否曾为收集行业素材而重复点击下载按钮&#xff1f…...