数组基础知识三

news2025/1/20 13:25:39

二分查找法:也叫折半查找算法。二分查找针对的是一个有序的数据集合,每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为 0。

#include <stdio.h>

int main()
{
	float score[10]={56.5,62.0,75.0,77.0,81.5,82.0,85.0,88.0,92.0,95.0};
	int up = 0, down = 9,mid;
	int count = 0;
	
	while(up<=down)
	{
		mid=(up+down)/2;
		printf("up=%d,down=%d,mid=%d\n",up,down,mid);
		if(score[mid]==85.0)
		{
			printf("find the score\n");
			count++;
			break;
		}
		else if(score[mid]<85.0)
		{
			up = mid + 1;
			count++;
		}
		else
		{
			down = mid - 1;
			count++;
		}
	}
	printf("%d\n",count);
	return 0;
}

数组的非法操作:对于基本数据类型,相同类型的变量可以进行加减、比较运算,但对于数组,即使是相同类型、相同大小的数组,有些操作也是非法的,具体如下:

用一个已经初始化的数组对另外一个数组赋值;对数组进行整体输入输出;数组与数组不能进行比较;数组与数组不能进行运算。

二维数组

语法格式:

类型说明符 数组名[常量表达式1][常量表达式2]

注意:常量表达式1表示行,常量表达式2表示列。存储时以行为单位安排空间。

例题1:现有3个班级,每班都有10名同学,已知这3个班级某门课程的成绩,求出3个班级中的最高成绩,同时求出每个班级的最高分,及最高的平均分。

#include <stdio.h>
#define CN 3          	//班级数
#define SN 10         	//各班级学生数
int main(void)
{
	int cs[CN+1][SN+1];                        //存放CN个班级学生的成绩
	double sum[CN+1]={0}, ave[CN+1];          //存放各班学生总分、平均分	
	for(int i = 1;i <= CN;i++)
	{	 
		for(int j = 1;j <= SN;j++)
		{
			scanf("%d", &cs[i][j]);            //输入第i个班级第j学生的成绩是cs[i][j]
			sum[i] += cs[i][j];                //将cs[i][j]加到第i个班级的总成绩sum[i]中
		}
	}
	int max[CN+1], maxk[CN+1];               //分别存放各班最高分、最高分学生的序号 
	for(int i = 1; i <= CN; i++)
	{
    //假设各班级的第一名学生成绩是每个班级的最高分,求各班级的平均分 
		max[i] = cs[i][1];
		maxk[i] = 1;
		ave[i] = sum[i] / SN;
	}
for(int i = 1;i <= CN;i++)
	{//找出各班级的最高分 
		for(int j = 2;j <= SN;j++)
		{
			if(cs[i][j] > max[i])
			{
				max[i] = cs[i][j];
				maxk[i] = j;
			}
		}
	}
	//分别存放所有学生的最高分、最高分的班号、平均成绩最高的班号

	int cmax, cmaxk, avemaxk;

	//求所有同学的最高分及最高分所在的班级序号
	//同时求出平均成绩最高的班号 

	cmax=max[1], cmaxk=1, avemaxk=1;  
	for(int i = 2;i <= CN;i++)
	{
		if(max[i] > cmax)
		{
			cmax = max[i];
			cmaxk = i;
		}
		if(ave[i] > ave[avemaxk])
			avemaxk = i;
	}

    //输出各个班级的班号、平均成绩、最高分同学的序号及分数
	printf("班级的班号\t平均成绩\t最高分\t最高分序号\n");

	for(int i = 1; i <= CN; i++)
		printf(" %4d\t\t%.2f\t\t%d\t%4d\n", i, ave[i], max[i], maxk[i]);  
 
	 //输出几个班级中的最高分,及其在班级的序号
	printf("最高分为%d班 序号是%d 分数为%d \n", cmaxk, maxk[cmaxk], cmax);
	
	 //输出平均成绩最高的班级及其平均成绩
	printf("平均成绩最高的班号是:%d 平均成绩为:%.2f\n", avemaxk, ave[avemaxk]);
	return 0;
}

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

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

相关文章

干了3年“点点点”,我废了...

简单概括一下 先说一下自己的情况&#xff0c;普通本科&#xff0c;18年通过校招进入深圳某软件公司&#xff0c;干了3年多的功能测试&#xff0c;21年的那会&#xff0c;因为大环境不好&#xff0c;我整个人心惊胆战的&#xff0c;怕自己卷铺盖走人了&#xff0c;我感觉自己不…

day53【子序列】1143.最长公共子序列 1035.不相交的线 53.最大子序和

文章目录 1143. 最长公共子序列1035.不相交的线53. 最大子序和 1143. 最长公共子序列 题目链接&#xff1a;力扣链接 讲解链接&#xff1a;代码随想录讲解 题意&#xff1a;给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 …

C++并发编程实战——05.内存模型与原子操作

文章目录 内存模型与原子操作内存模型原子操作和原子类型标准原子类型std::atomic_flagstd::atomic\<bool>std::atomic<T\*>std::atomic<user_define_type> 类模板非成员函数 同步操作和强制排序同步发生与先行发生内存序**顺序一致性**(memory_order_seq_cs…

Java选择与循环

1.选择 前言&#xff1a;什么是选择呢&#xff1f;在我们的人生中处处面临着选择&#xff0c;比如说在学校你可以选择玩&#xff0c;摆烂&#xff0c;当然也可以选择努力写代码&#xff0c;刷题。什么样的选择就会面临什么样的结果。 其实程序和人生一样&#xff1a;顺序中夹杂…

intellij idea拉取最新的依赖包

intellij idea setting 拉取最新的依赖包 File --> Settings --> Build, Execution, Deployment --> Build Tools --> Maven --> 勾选 Always update snapshots. 一般情况下&#xff0c;设置完就可以拉取到最新的依赖包了。 如下&#xff1a; 安装最新的依赖…

计算机视觉基础——基于yolov5-face算法的车牌检测

文章目录 车牌检测算法检测实现1.环境布置2.数据处理2.1 CCPD数据集介绍2.1.1 ccpd2019及20202.1.2 文件名字解析 2.2数据集处理2.2.1 CCPD数据处理2.2.2 CPRD数据集处理 2.3 检测算法2.3.1 数据配置car_plate.yaml2.3.2 模型配置2.3.3 train.py2.3.4 训练结果 2.4 部署2.4.1 p…

activiti的核心对象与API与对应操作的表与核心字段

【Deployment】 &#xff08;创建并部署一个新的流程定义&#xff09; 获取方式&#xff1a; repositoryService.createDeployment().deploy(); 对应的表&#xff1a;act_re_deployment 用于存储流程部署的相关信息。该表记录了每个流程部署的唯一标识符&#xff08;ID&#x…

【Redis】Redis在Linux与windows上的安装基本操作语法

一、Redis简介 Redis 是完全开源免费的&#xff0c;遵守BSD协议&#xff0c;是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点&#xff1a; Redis支持数据的持久化&#xff0c;可以将内存中的数据保持在磁盘中&#xff0c;重启的时候可以再…

Python条件判断的运用

问题 在生活中&#xff0c;我们可以通过判断条件是否成立&#xff0c;来决定执行哪个分支。选择语句有多种形式&#xff1a;if语句&#xff0c;if-else语句&#xff0c;if-elif-else语句等。 Python使用if条件判断语句来实现条件判断时&#xff0c;可以在多个循环中实现对问题的…

【蓝桥杯 第十四届省赛Java B组】真题训练(A - C)正在更新

目录 A、阶乘求和 - BigInteger B、幸运数字 - 字符串 进制转换 暴力大法 C、数组分割 - A、阶乘求和 - BigInteger 思路&#xff1a; 当时比赛时&#xff0c;拿计算器算的&#xff0c;然后辛辛苦苦也没对 看到这个数肯定很大&#xff0c;而且只求后9位&#xff0c;阶乘越…

三篇文章了解计算机网络(一)

目标 三篇文章&#xff0c;由浅入深理解计算机网络 适宜人群 小小白、无计算机网络基础&#xff0c;非技术人员&#xff0c;网络兴趣爱好者 内容简介 本文不谈技术&#xff0c;不谈理论&#xff0c;那谈什么&#xff1f;--谈生活。。。跑题了&#xff1f; 正文 网络是什…

SECS/GEN HSMS半导体通信协议解析

协议族总体结构 HSMS消息格式&#xff08;网口连接&#xff09; 超时时间设置 T3 回复超时&#xff1a;指发送指令到接收到回复指令的最大时间&#xff1b; T5 连接间隔&#xff1a;指断开连接和重新连接的最小时间&#xff1b; T6 控制指令超时时间&#xff1a;主要指连接选…

本地部署清华大模型 ChatGLM3

ChatGLM 是一个开源的、支持中英双语的对话语言模型&#xff0c;由智谱 AI 和清华大学 KEG 实验室联合发布&#xff0c;基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。ChatGLM3-6B 更是在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上增加…

读程序员的制胜技笔记02_算法与数据结构

1. 认知偏见 1.1. 程序员也是人&#xff0c;他们和其他人在软件开发实践中有着同样的认知偏见 1.2. 只有你的同事真正关心你是如何做事的——其他人都只想要一个好的、有效的产品 1.3. 高估了不使用的类型 1.4. 不关心正确数据结构的好处 1.5. 认为算法只对库作者重要 2.…

Express框架开发接口之今日推荐等模块

1.初始化 const handleDB require(../handleDB/index) // 获取全部模块 exports.allModule (req, res) > {(async function () {})() } // 更新或者添加模块 exports.upModule (req, res) > {(async function () {})() } // 根据id删除模块 exports.delModule (req, …

Proteus仿真--基于51单片机的可演奏电子琴设计(仿真文件+程序)

本文主要介绍基于51单片机的可演奏电子琴设计&#xff08;完整仿真源文件及代码见文末链接&#xff09; 仿真图如下 其中通过矩阵键盘可以实现不同的音乐播放 仿真运行视频 Proteus仿真--基于51单片机的可演奏电子琴设计&#xff08;仿真文件程序&#xff09; 附完整Proteu…

竞赛 深度学习机器视觉车道线识别与检测 -自动驾驶

文章目录 1 前言2 先上成果3 车道线4 问题抽象(建立模型)5 帧掩码(Frame Mask)6 车道检测的图像预处理7 图像阈值化8 霍夫线变换9 实现车道检测9.1 帧掩码创建9.2 图像预处理9.2.1 图像阈值化9.2.2 霍夫线变换 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分…

Flutter 组件集录 | InheritedNotifier 内置状态管理组件

theme: cyanosis 1. 前言 在上一篇 《Flutter 知识集锦 | 监听与通知 ChangeNotifier》 中&#xff0c;我们介绍了 ChangeNotifier 对象通知监听者的能力。并通过一个简单的模拟下载进度案例&#xff0c;介绍了它的使用方式&#xff1a; | 案例演示 | 监听-通知关系 | | --- | …

DBeaver 23.2.3发布,带来多项增强和修复

数据库管理工具DBeaver最新版本23.2.3已经发布。这个版本带来了一系列的增强和修复&#xff0c;提升了用户的使用体验和工作效率。 以下是DBeaver 23.2.3版本的一些亮点功能&#xff1a; 数据编辑器方面的改进&#xff1a; Excel (XLSX) 导出现在支持列自动拟合&#xff0c;…

人大金仓迁移报错ERROR: invalid byte sequence for encoding “UTF8“: 0x00

Oracle迁移人大金仓&#xff0c;报错&#xff1a; com.kingbase8.utilKSOLException: ERROR: invalid byte sequence for encoding “UTF8”: 0x00 报错信息&#xff0c;如图所示&#xff1a; 解决方案 1、设置参数&#xff0c;在kingbase.conf 最后面添加参数&#xff1a;ign…