11、数组

1、数组概念

        数组就是存储多个相同数据类型的数据。

        比如:存储26个字母,存储一个班级的学生成绩。

2、数组使用

       数组要遵循先定义再使用        

        2.1、数组定义的格式        

                存储数据---空间  ---- 数据类型

                多少个 --- 数据个数

                >> 数据类型 数组名[数据个数];

                标识符: 数字 字母 _ $

                               不能以数字开头  

                                不能和关键字重复

                例:

                       a、 存储班级的平均分--班级有20个人

                                存储数据 -- 成绩 --- float

                                数据个数:20

                                float scores[20];

                  

                        b、定义一个数组用来存放班级同学的年龄,班级有5个同学

                                int  a[5];

                                 

        

        2.2、数组的下标

                定义数组后,数组会为空间进行编号,从0开始,到数据个数-1 ---- 规定

                用数组的时候切记不要超标

       2.3、数组空间访问

                数组名[下标]                

                ------------------------------------------------------------------------------------------

                | // 数组定义 -[总个数]     |      // 数组使用 --- [下标]                            |

                ------------------------------------------------------------------------------------------

                | int a[5];                         |      // a[0]  a[1]  a[2]  a[3]  a[4]  ---- int        |

                ------------------------------------------------------------------------------------------

                练习:

                        需求:定义一个存放5个int型数据的数组,对空间进行赋值操作,然后将数据从空间里面读取出来。 

#include<stdio.h>int main(void)
{int a[5];a[0] = 10;a[1] = 20;a[2] = 90;a[3] = 45;a[4] = 5;// 把数组中的所有数据输出一下printf("%d ",a[0]);printf("%d ",a[1]);printf("%d ",a[2]);printf("%d ",a[3]);printf("%d ",a[4]);return 0;
} 

                          改进1:对数组里面的数据进行求和。        

#include<stdio.h>int main(void)
{int a[5];a[0] = 10;a[1] = 20;a[2] = 90;a[3] = 45;a[4] = 5;// 把数组中的所有数据输出一下printf("%d ",a[0]);printf("%d ",a[1]);printf("%d ",a[2]);printf("%d ",a[3]);printf("%d ",a[4]);int res;res = a[0] + a[1] + a[2] + a[3] + a[4];		printf("数据之和为:%d\n",res);return 0;
} 

                        改进2:使用循环对数组的数据访问进行从挨揍,下标是连续的

#include<stdio.h>int main(void)
{int a[5];a[0] = 10;a[1] = 20;a[2] = 90;a[3] = 45;a[4] = 5;// 把数组中的所有数据输出一下int i;for(i=0;i<5;i++){printf("%d ",a[i]);} printf("\n");int res;for(i=0;i<5;i++){res = res + a[i];} 	printf("数据之和为:%d\n",res);return 0;
} 
        2.4、数组初始化

                初始化就是定义时候给值

                int a[5] = {1,7,9,10,20};

                int b[5] = {1,2,3};         // {1,2,3,0,0}初始化的时候没有赋值的空间补0

                int c[5] = {1,2,3,4,5,6,7}; // {1,2,3,4,5} 初始化超出部分舍弃

                // 省略个数的初始化,后面{}有几个值就开几个空间

                int d[] = {1,2,3};    //int d[3] = {1,2,3};

                错误:不要写 不要写 不要写!!!!

                        int e[];  //定义的时候不能省略,不然不知道开多少空间

                        int f[] = {};  // 不会开空间

                        int t[] = {0}; // 开1个空间 ,没有必要用数组了

                注意:数组只能在初始化的时候整体赋值。

                        int a[5];

                        a = {1,2,3,4,5}; // 错误的,数组名是一个常量 0x0062fe50

                练习:

                        对初始化的数组进行访问

#include<stdio.h>int main(void)
{int a[5] = {1,7,9,10,20};// 0 1 2 3 4int i; // 下标for(i=0;i<5;i++){// iprintf("%d ",a[i]);} 	 return 0;
}
        2.5、数组要素分析

                数组中数据的类型(元素类型):除了数组名[数据个数] 剩下的就是里面存放的数据的类型

                数组的类型:                除了 数组名  剩下的就是数组的类型

                        数组名:                数组名称[]前面的

3、二维数组        

        可以理解为存放多个同种类型的一维数组,理解按照行和列来理解二维数组

        先定义再使用的原则

        

        3.1、二维数组定义


            数据类型 数组名[总行数][总列数];
    
            例:
                a、定义一个二维数组,用来存放2个int [5]的数据        
                    int arr[2][5];
                b、定义一个二维数组,用来存储5个人名
                    分析:
                        1个人名是1个字符串 -- 1个字符数组,假设人名最多占20个字符
                        5个人名是5个字符串 --5个字符数组,可以理解为开5行字符串空间,每行20个字符

                    char names[5][20];

        3.2、二维数组使用   

                行下标:0 ~ 总行数-1

                列下表:0 ~ 总列数-1

                数据名称:数组名[行下标][列下标]

                数据地址:&数组名[行下标][列下标]

                例:

                        定义一个2行5列存储int型数据的二维数据,对数组中的int型空间进行读写操作。

#include<stdio.h>int main(void)
{int arr[2][5];arr[0][0] = 10;arr[0][1] = 20;arr[0][2] = 60;arr[0][3] = 40;arr[0][4] = 90;arr[1][0] = 100;arr[1][1] = 7;arr[1][2] = 39;arr[1][3] = 50;arr[1][4] = 89;printf("第0行数据:"); printf("%d ",arr[0][0]);printf("%d ",arr[0][1]);printf("%d ",arr[0][2]);printf("%d ",arr[0][3]);printf("%d ",arr[0][4]);printf("\n");printf("第1行数据:"); printf("%d ",arr[1][0]);printf("%d ",arr[1][1]);printf("%d ",arr[1][2]);printf("%d ",arr[1][3]);printf("%d ",arr[1][4]);printf("\n");	return 0;
}

                        改进:使用循环操作二维数组的读写操作。

#include<stdio.h>int main(void)
{int arr[2][5];arr[0][0] = 10;arr[0][1] = 20;arr[0][2] = 60;arr[0][3] = 40;arr[0][4] = 90;arr[1][0] = 100;arr[1][1] = 7;arr[1][2] = 39;arr[1][3] = 50;arr[1][4] = 89;int i,j;for(i=0;i<2;i++){printf("第%d行数据:",i); for(j=0;j<5;j++){printf("%d ",arr[i][j]);}printf("\n");}return 0;
}

4、数组名是数组首元素的地址

        数组名是数组首元素的地址,说的是数组名在使用的时候某些情况下可以当做它首元素的地址来看,他们类型一致,数值也一致。如果实二维数组需要分层来看。

        ​​​​​​​        ​​​​​​​                

#include<stdio.h>int main(void)
{int a1[5];printf("%p %p\n",a1,&a1[0]);  // 0062FE8C   0062FE8Cint a2[2][5];printf("%p %p\n",a2,&a2[0]);        // 0062FE64 0062FE64 printf("%p %p\n",a2[0],&a2[0][0]);  // 0062FE64 0062FE64 printf("%p %p\n",a2[1],&a2[1][0]);  // 0062FE78 0062FE78 	return 0;
}

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

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

相关文章

六、文本搜索工具(grep)和正则表达式

一、grep工具的使用 1、概念 grep&#xff1a; 是 linux 系统中的一个强大的文本搜索工具&#xff0c;可以按照 正则表达式 搜索文本&#xff0c;并把匹配到的行打印出来&#xff08;匹配到的内容标红&#xff09;。 2、语法 grep [options]…… pattern [file]…… 工作方式…

【python】爬去二手车数据 未完成

技术方案 python selenium 先下载Microsoft Edge WebDriver Microsoft Edge WebDriver 官网 先看一下自己的edge版本 搜索到版本然后下载自己的版本 安装依赖 pip install seleniumimport time from selenium import webdriverdriver webdriver.Edge(executable_pathr&qu…

玩游戏常常出现vc++runtime library error R6025 这是什么意思,该怎么解决?

当玩游戏时常常出现“vc runtime library error R6025”错误&#xff0c;这通常表明微软C开发运行库组件存在问题。以下是对该错误及其解决方法的详细解释&#xff1a; 错误含义 “vc runtime library error R6025”是一个与Visual C运行时库相关的错误&#xff0c;该错误表明…

【深度学习基础】一篇入门模型评估指标(分类篇)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;深度学习_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. 模…

深度学习基础02_损失函数BP算法(上)

目录 一、损失函数 1、线性回归损失函数 1.MAE损失 2.MSE损失 3.SmoothL1Loss 2、多分类损失函数--CrossEntropyLoss 3、二分类损失函数--BCELoss 4、总结 二、BP算法 1、前向传播 1.输入层(Input Layer)到隐藏层(Hidden Layer) 2.隐藏层(Hidden Layer)到输出层(Ou…

从技术视角看AI在Facebook全球化中的作用

在全球化日益加深的今天&#xff0c;人工智能&#xff08;AI&#xff09;作为一种变革性技术&#xff0c;正在深刻影响全球互联网巨头的发展方向。Facebook作为全球最大的社交媒体平台之一&#xff0c;正通过AI技术突破语言、文化和技术的障碍&#xff0c;推动全球化战略的实现…

41 基于单片机的小车行走加温湿度检测系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;采样DHT11温湿度传感器检测温湿度&#xff0c;滑动变阻器连接数码转换器模拟电量采集传感器&#xff0c; 电机采样L298N驱动&#xff0c;各项参数通过LCD1602显示&#x…

Python3 爬虫 Scrapy的使用

安装完成Scrapy以后&#xff0c;可以使用Scrapy自带的命令来创建一个工程模板。 一、创建项目 使用Scrapy创建工程的命令为&#xff1a; scrapy startproject <工程名> 例如&#xff0c;创建一个抓取百度的Scrapy项目&#xff0c;可以将命令写为&#xff1a; scrapy s…

【S500无人机】--地面端下载

之前国庆的时候导师批了无人机&#xff0c;我们几个也一起研究了几次&#xff0c;基本把无人机组装方面弄的差不多了&#xff0c;还差个相机搭载&#xff0c;今天我们讲无人机的调试 硬件配置如下 首先是地面端下载&#xff0c;大家可以选择下载&#xff1a; Mission Planne地…

Android -- 简易音乐播放器

Android – 简易音乐播放器 播放器功能&#xff1a;* 1. 播放模式&#xff1a;单曲、列表循环、列表随机&#xff1b;* 2. 后台播放&#xff08;单例模式&#xff09;&#xff1b;* 3. 多位置同步状态回调&#xff1b;处理模块&#xff1a;* 1. 提取文件信息&#xff1a;音频文…

常用端口与Udp协议

目录 1.再谈端口 1.1 五元组 1.2 端口号范围划分 1.3 两个指令 1.3.1 netstat 1.3.2 pidof 2.UDP协议 2.1 协议整体格式 2.2 udp特点 2.3 udo缓冲区 1.再谈端口 1.1 五元组 端口号表示了一个主机上进行通信的不同的应用程序&#xff1b;在Tcp/IP协议中&#xff0c;用…

计算机毕业设计SpringCloud+大模型微服务高考志愿填报推荐系统 高考大数据 SparkML机器学习 深度学习 人工智能 Python爬虫 知识图谱

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

C/C++ 数据结构与算法【线性表】 顺序表+链表详细解析【日常学习,考研必备】带图+详细代码

1&#xff09;线性表的定义 线性表&#xff08;List&#xff09;&#xff1a;零个或多个数据元素的有限序列。 线性表的数据集合为{a1,a2,…,an}&#xff0c;假设每个元素的类型均为DataType。其中&#xff0c;除第一个元素a1外&#xff0c;每一个元素有且只有一个直接前驱元素…

搭建AD域服务器

搭建AD域服务器 使用深信服HCI搭建AD域服务器 1、新建虚拟机 2、填写参数 3、省略安装过程 4、进入服务器管理器 5、 6、 7、 8、 9、 10、 11、 12、 13、 14、 15、 16、 17、 18、 19、 20、 21、 22、 23、

【算法day4】链表:应用拓展与快慢指针

题目引用 两两交换链表节点删除链表的倒数第n个节点链表相交环形链表 1.两两交换链表节点 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&am…

【Gitlab】gitrunner并发配置

并发介绍 涉及到并发控制的一共有4个参数: concurrent , limit ,request_concurrency,parallel 全局的配置: [rootiZ2vc6igbukkxw6rbl64ljZ config]# vi config.toml concurrent 4 #这是一个总的全局控制&#xff0c;它限制了所有pipline&#xff0c;所有runner执行器…

vue 2 父组件根据注册事件,控制相关按钮显隐

目标效果 我不注册事件&#xff0c;那么就不显示相关的按钮 注册了事件&#xff0c;才会显示相关内容 实现思路 组件在 mounted 的时候可以拿到父组件注册监听的方法 拿到这个就可以做事情了 mounted() {console.log(this.$listeners, this.$listeners);this.show.search !…

四:工具、环境准备-compute node

一&#xff1a;工具、环境准备-controller node 二&#xff1a;OpenStack环境准备-controller node 三&#xff1a;安装服务-controller node 四&#xff1a;工具、环境准备-compute node 五&#xff1a;OpenStack环境准备-compute node 六&#xff1a;安装服务-compute node 七…

Vue3在PC端接入萤石云监控

参考文档&#xff1a;文档概述 萤石开放平台API文档 1.安装依赖 npm i ezuikit-js 2.封装组件 src/components/PlayerVideo/index.vue <template><div id"video-container" style"width: 100%;"></div> </template> <scrip…

快排详解(4种写法:霍尔/挖坑法/双指针/非递归)

//本文所写快排的结果都是从小到大排序 思路 快排就是把数组的第一个值记为key,然后定义两个指针,一个叫begin,一个叫end. begin指针从数组的头部出发,寻找比key大的值;end指针从数组的尾部出发,寻找比key小的值; 然后交换begin和end的值 ......最后,begin和end相遇就停下…