C语言数组查找

embedded/2024/12/26 9:35:11/

数组概念

就是一堆数的一个集合,包含于指针,但是与指针不同的是数组是开辟了空间的

char a[20]    //开辟了20个空间
char *p       //一个指针,并没有开辟空间
  1. 数组名作为指针

    • 在C语言中,数组名通常可以被看作是一个指向数组首元素的指针。例如,如果你有一个数组 int arr[10];,那么表达式 arr 可以被看作是指向 arr[0] 的指针。
  2. 指针算术

    • 你可以对指针进行算术操作,如增加或减少指针的值,使其指向数组中的其他元素。例如,如果 int *p = arr;,那么 p + 1 将指向 arr[1]

数组有什么独有的特征

1、这些数都是连在一起的,相当于在一个内存空间内,把数组里面的东西按顺序放到了一起

2、数组可以有多维度的,比较难理解,每个一维数组可以理解为一个向量

3、数组写入、打印数据要通过循环遍历

……

好了,说完了好处就是缺点了

1、连续的,所以插入、删除数组里一个元素非常不容易,所以就创造出了链表

2、大量占用内存栈

3、循环写入、写出数据

4、只能一个一个的遍历修改数据,所以后来就出现了结构体

5、需要定义长度,且长度不能是变量(C就是老登,C++和python就可以)

……

顺序查找

直接上题

本关任务:数组中已存互不相同的10个整数,从键盘输入一个整数,输出与该值相同的数组元素下标。

答案:

#include<stdio.h>
#define N 10
int main()
{int i,x,t,a[10]={63,72,24,91,35,12,49,107,57,84};scanf("%d",&x);/********** Begin **********/for(i=0;i<N;i++){if(a[i] == x){printf("查找成功,%d的下标:%d",a[i],i);break;}}if(i == N){printf("查找失败");}/********** End **********/return 0;
}

这里面有一些小技巧

1、定义N在前面,这样可以方便修改数组长度

2、在循环里面没有办法打印查找失败,要不然就会发现查找成功也会弹出查找失败,要不就是一直弹出查找失败,看似标点法也不管用, 这是就要用循环是否发生截止来判断。

这种技巧依赖于这样一个事实:如果循环是因为找到了元素而提前退出的,那么i的值将不会达到N;只有当循环遍历了所有元素而没有找到匹配项时,i才会等于N。因此,通过检查i是否等于N,可以判断查找是否失败。

也是一个老油条办法,一定要见过

总结

今天看了看数组的一些性质,还有一些办法,最重要的是另一种判断思路,即判断循环是否提前结束。以上均是本人理解,如有不对欢迎补充~

放个天子


http://www.ppmy.cn/embedded/148859.html

相关文章

谷歌浏览器 Chrome 提示:此扩展程序可能很快将不再受支持

问题现象 在Chrome 高版本上的扩展管理页面&#xff08;地址栏输入chrome://extensions/或者从界面进入&#xff09;&#xff1a; &#xff0c; 可以查看到扩展的情况。 问题现象大致如图: 问题原因 出现此问题的根本原因在于&#xff1a;谷歌浏览器本身的扩展机制发生了…

redis数据类型:list

数据结构 源码版本&#xff1a;7.2.2路径&#xff1a;src/adlist.h 关于list的 头文件中涉及到的这三个结构体如下 /* Node, List, and Iterator are the only data structures used currently. */ # 节点 typedef struct listNode {struct listNode *prev; # 前元素的指针s…

QT多媒体开发(一):概述

Qt Multimedia 模块为多媒体编程提供支持。多媒体编程实现的功能主要包括播放音频和视频文件&#xff0c;通过麦克风录制音频&#xff0c;通过摄像头拍照和录像等。 QT6 中多媒体模块相比QT5变化较大&#xff0c;所以用QT6编译 QT5写的多媒体 程序基本无法通过。 Qt 5 多媒体模…

Spark和Hive的联系

通常来说&#xff0c; Spark 和 Hive 本质上是没有关系的&#xff0c;两者可以互不依赖。但是在企业实际应用中&#xff0c;经常把二者结合起来使用。Spark 和 Hive 结合和使用的方式&#xff0c;主要有以下三种&#xff1a; 1 、 Hive on Spark 在这种模式下&#xff0c;数据…

Day56 图论part06

108.冗余连接 并查集应用类题目,关键是如何把题意转化成并查集问题 代码随想录 import java.util.Scanner;public class Main{public static void main (String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();DisJoint disjoint = new DisJo…

【Java】Jackson序列化案例分析

1.Jackson介绍 Jackson 是一个流行的 Java 库&#xff0c;用于处理 JSON 数据。它提供了高效的序列化和反序列化功能&#xff0c;能够将 Java 对象转换为 JSON 格式&#xff0c;反之亦然。 它由 FasterXML 开发和维护。Jackson 的设计目标是提供高效、灵活且易于使用的 JSON 处…

微软的AI转型故事

在一次备受瞩目的深度访谈中&#xff0c;微软的CEO萨提亚纳德拉与著名投资人比尔格里和布拉德格斯特纳展开了一场关于微软十年转型与AI未来的深入探讨。这次对话不仅回顾了微软在纳德拉领导下的重大发展轨迹&#xff0c;也为AI时代的战略布局提供了洞见。 纳德拉的职业起点 故…

openwrt 负载均衡方法 openwrt负载均衡本地源接口

openwrt 负载均衡方法 openwrt负载均衡本地源接口_mob6454cc647bdb的技术博客_51CTO博客 本人注重原理分析&#xff0c;要求对其原理掌握&#xff0c;否则按教程操作&#xff0c;你怕是什么都学不会&#xff0c;仔细看&#xff0c;认真记比较好。 首先确认一下基本细节 1、路由…