C语言入门 Day_12 一维数组0

news2025/2/27 17:15:36

目录

前言

1.创建一维数组

2.使用一维数组

3.易错点

4.思维导图


前言

存储一个数据的时候我们可以使用变量, 比如这里我们定义一个记录语文考试分数的变量chinese_score,并给它赋值一个浮点数(float)。

float chinese_scoer=98.0;
printf("语文考试分数是%f\n",chinese_scoer);

假如我们需要记录多个类似的数据,比如这里记录语文数学英语物理化学生物这6科考试的分数,我们就需要6个变量,这样的话就有点麻烦

假设我们要记录100个数据呢?全用变量的话一来变量名很多,二来代码也会很冗长,这时候我们就需要一些新的机制

float chinese_score = 98.0;
float math_score = 96.0;
float english_score = 90.0;
float physics_score = 88.0; 
float chemistry_score = 87.0;
float  organism_score = 81.0;

这里我们就要介绍一个新的存储方式——数组,

它可以一次性存储多个相同类型的数据。

如果变量就像一个盒子的话,一次可以存储一个数据;

那么数组就像一个抽屉,可以存储多个数据。

1.创建一维数组

1.1

我们创建一个有六个元素的浮点型数组用来存储成绩:

float exam_score[6]={98.0,96.0,90.0,88.0,87.0,81.0};


1. 数组的数据类型,float浮点型

2. 数组名,exam_score

3. 数组的长度是6,也就是能容纳6个数据

4. 方括号,里面写的是数组的长度

float exam_score[6]={98.0,96.0,90.0,88.0,87.0,81.0};


5.赋值符号 =

6.数组的六个元素,都是浮点型

7.数组的元素,需要用花括号括起来

8.数组中的元素用逗号,隔开

1.2

上面我们完成了数组的初始化工作,创建了一个浮点数的数组,它里面存储了六个值。我们把这些值叫做数组的元素

数组的命名规则和变量是一致的,由大小写字母,数字和下划线组成,不能由数字开头

同时,我们不仅能创建浮点数的数组,之前学过的所有数据类型的数组都可以创建,只不过需要注意的是,完成创建以后,所有数组的元素都是这个类型的。

例如:

int student_age[3]={18,19,21};


1.我们创建一个有三个元素的整型数组student_age,并进行赋值:

2.然后输入数组名字student_age:

3.填入数组的长度[3],注意使用英文的方括号[]:

int student_age[3]={18,19,21};


4.填入赋值符号= :

5.填入数组元素的花括号{}

6.填入分隔数组元素的逗号, :

1.3

完成了数组的创建/定义之后,我们就可以使用里面的数据元素了,这里的使用包括了读取修改

创建一维数组就像是做好了一个抽屉,并在抽屉中放好了东西(数据);

使用一维数组就是在这个抽屉中取出东西(数据),或者在抽屉的每个格子里面放入不同的东西(数据)。

2.使用一维数组

2.1

数组中的元素存储是有序的,

有序的意思就是数组元素是按照顺序一个一个排好的

他们都有固定的位置,方便查找和修改

下列代码就会输出1,2,3,因为我们依次打印了这个数组的第一个元素,第二个元素,第三个元素:

int int_list[3]={1,2,3};
printf("%d\n",int_list[0]);
printf("%d\n",int_list[1]);
printf("%d\n",int_list[2]);

1.创建了一个有三个元素的整型数组

2.打印数组里面的第一个元素   printf("%d\n", int_list[0])

3 数组里面的第一个元素  int_list[0]

int int_list[3]={1,2,3};
printf("%d\n",int_list[0]);
printf("%d\n",int_list[1]);
printf("%d\n",int_list[2]);

4.数组元素的位置,也是用方括号+数字表示   [0]

5.打印数组里面的第二个元素 printf("%d\n", int_list[1]);

6.打印数组里面的第三个元素  printf("%d\n", int_list[2]);

2.2

这种有序的数据结构又叫做线性表,也就是说每个元素都像一根线一样一一排列的。我们可以通过索引/下标的方式来访问数组中的元素。

2.3

我们来看看数组里面的下标,也就是方括号里面的数字

int int_list[3]=[1,2,3];
printf("%d\n",int_list[0]);
printf("%d\n",int_list[1]);
printf("%d\n",int_list[2]);

1. 方括号里面是3,表明这个数组的长度是3

2.  打印第一个元素,下标是0

3.   打印第二个元素,下标是1

4.   打印第三个元素,下标是2

2.4

我们可以注意到,在使用数组的时候,我们下标是从0开始的,比如第一个元素是int_list[0]

这是由一个C语言内在的机制决定的,因为第一个元素是在线性表的头部,所以它的位置和线性表的开头位置是重合的;

因此我们增加0的位置就能访问这个元素了,因为第一个元素就在开头。

而访问第二个元素的时候,我们需要越过第一个元素,这时候需要+1,因此第二个元素的下标是1。

2.5

比较有意思的是,从C语言开始,后面所有的编程语言在类似数组这样线性表的结构里面,都使用0来表示第一个元素。

所以久而久之这也成了程序员的一个梗,第一个数不是1,是0

例如:

char char_list[5]={'p','a','p','e','r'};
printf("%c\n",char_list[0]);
printf("%c\n",char_list[1]);
printf("%c\n",char_list[2]);
printf("%c\n",char_list[3]);
printf("%c\n",char_list[4});

输出结果

papper


1.我们定义一个字符数组并赋值,然后打印输出它,填入第一个下标0:

2.填入第二个下标和方括号[1],需要注意的是,由于没有换行符/n,所以这五个字符字母是在同一排输出的:

2.6

除了访问数组的元素以外,我们还可以修改数组的元素,因为数组的元素也和变量一样,可以重新赋值和修改。

创建一个数组并初始化赋值1,0,2,4,然后修改这个数组的元素,赋值1,1,1,1:

int int_list[4]={1,0,2,4};
int int_list[1]={1};
int int_list[2]={1};
int int_list[3]={1};

1.定义一个整型数组,赋值1,0,2,4

2.给第二个数组元素赋值1,因为第一个数组元素就是1,无需修改

3.给第三个数组元素赋值1

4.给第四个数组元素赋值1

2.7

既然是个线性结构,我们就不能超出这个这个线性表的长度,比如一个数组长度是‘3’,我们可使用的范围就是0到2

超出这个范围就属于越界”,程序会报错

3.易错点

如图 

方括号[]中常量表达式表示数组元素的个数;

数组元素的索引是从0开始的;

数组大小必须是大于0的正整数

4.思维导图

在撰写这篇文章时,我参考了《白纸编程》这个app的观点和思想,我要感谢他们对我的启发和帮助。

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

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

相关文章

2023应届生java面试紧张失误之一:CAS口误说成开心锁-笑坏面试官

源于:XX网,如果冒犯,表示歉意 面试官:什么是CAS 我:这个简单,开心锁 面试官:WTF? 我:一脸自信,对,就是这个 面试官:哈哈大笑&#xff…

YOLOv7框架解析

YOLOv7概念 YOLOv7是基于YOLO系列的目标检测算法,由Ultra-Light-Fast-Detection(ULFD)和Scaled-YOLOv4两种算法结合而来。它是一种高效、准确的目标检测算法,具有以下特点: 1. 高效:YOLOv7在保持准确率的…

一个 MySQL 数据库死锁的案例和解决方案

本文介绍了一个 MySQL 数据库死锁的案例和解决方案。 场景 生产环境出了一个偶现的数据库死锁问题,导致少部分业务处理失败。 分析特征之后,发现是多个线程并发执行同一个方法,更新关联的数据时可能会出现,把场景简化概括一下&…

MySQL基础篇:数据库概述和部署

SQL 概述 SQL,一般发音为sequel,SQL的全称Structured Query Language),SQL用来和数据库打交道,完成和数据库的通信,SQL是一套标准。但是每一个数据库都有自己的特性别的数据库没有,当使用这个数据库特性相关的功能,这…

CDH6.3.2集成Kerberos

CDH6.3.2集成Kerberos 一.参考doc CDH enable kerberos: Kerberos Security Artifacts Overview | 6.3.x | Cloudera Documentation CDH disable kerberos:https://www.sameerahmad.net/blog/disable-kerberos-on-CDH; https://community.cloudera.com/t5/Support-Questions…

ModaHub魔搭社区:自动化机器学习神器Auto-Sklearn

Auto-Sklearn Auto-Sklearn是一个开源库,用于在 Python 中执行 AutoML。它利用流行的 Scikit-Learn 机器学习库进行数据转换和机器学习算法。 它是由Matthias Feurer等人开发的。并在他们 2015 年题为“efficient and robust automated machine learning 高效且稳健的自动…

LeetCode刷题---Two Sum(一)

文章目录 🍀题目🍀解法一🍀解法二🍀哈希表 🍀题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每…

javaee spring aop 注解实现

切面类 package com.test.advice;import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*;//切面类 Aspect public class MyAdvice {//定义切点表达式Pointcut("execution(* com.test.service.impl.*.add(..))")public void pc(){}//B…

Spring-Kafka生产者源码分析

文章目录 概要初始化消息发送小结 概要 本文主要概括Spring Kafka生产者发送消息的主流程 代码准备&#xff1a; SpringBoot项目中maven填加以下依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent&…

大胆尝试这些新的CSS属性,释放CSS的力量吧(一)

本文章系《Unleashing the Power of CSS》&#xff08;释放CSS的力量&#xff0c;暂且这么翻译吧&#xff09;一书的学习笔记&#xff0c;希望通本书的学习&#xff0c;系统的梳理下CSS相关的高级新特性。本篇文章是其第一部分&#xff0c;由于全书英文版&#xff0c;理解和阅读…

mac制作ssl证书|生成自签名证书,nodejs+express在mac上搭建https+wss(websocket)服务器

注意 mac 自带 openssl 所以没必要像 windows 一样先安装 openssl&#xff0c;直接生成即可 生成 ssl/自签名 证书 生成 key # 生成rsa私钥&#xff0c;des3算法&#xff0c;server_ssl.key是秘钥文件名 1024位强度 openssl genrsa -des3 -out server_ssl.key 1024让输入两…

MySQL开机自启动设置(Windows)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

黑马 软件测试从0到1 常用分类 模型 流程 用例

课程内容&#xff1a; 1、软件测试基础 2、测试设计 3、缺陷管理 4、Web常用标签 5、项目实战 以终为始&#xff0c;由交付实战目标为终&#xff0c;推出所学知识&#xff1b;从认识软件及软件测试&#xff0c;到如何设计测试、缺陷标准及缺陷管理&#xff0c;最终以项目实战贯…

pytorch异常——loss异常,不断增大,并且loss出现inf

文章目录 异常报错异常截图异常代码原因解释修正代码执行结果 异常报错 epoch1:loss3667.782471 epoch2:loss65358620.000000 epoch3:loss14979486720.000000 epoch4:loss1739650891776.000000 epoch5:loss12361745880317952.000000 epoch6:loss2740315398365287284736.000000…

PMD代码检查:为了提升性能,正确使用记录日志的语句(GuardLogStatement)

https://docs.pmd-code.org/pmd-doc-6.55.0/pmd_rules_java_bestpractices.html#guardlogstatement 对应记录日志的语句&#xff0c;要首先检查对应的日志级别有没有实际打开&#xff1b;如果没有实际打开&#xff0c;那么就要跳过字符串的生成环节&#xff0c;以提升性能。 另…

C#,数值计算——Midsql的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class Midsql : Midpnt { private double aorig { get; set; } 0.0; public new double func(double x) { return 2.0 * x * funk.funk(aorig x * x); } p…

MySQL中表的设计

在MySQL中表的设计&#xff0c;需要一定的经验才能理解&#xff0c;由于笔者目前在读中&#xff0c;理解不是很深刻&#xff0c;仅根据自己的想法外界的一些参考资料做出下述文字描述&#xff0c;一些错误&#xff0c;请大佬及时指正~~ 在本篇文章中&#xff0c;介绍一点简单粗…

Windows7安装SSH客户端的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

归并排序的详解!

本文旨在讲解归并排序的实现&#xff08;递归及非递归&#xff09;搬好小板凳&#xff0c;干货来了&#xff01; 前序&#xff1a; 在介绍归并排序之前&#xff0c;需要给大家介绍的是什么是归并&#xff0c;归并操作&#xff0c;也叫归并算法&#xff0c;指的是将两个顺序序列…

11 - 深入了解NIO的优化实现原理

Tomcat 中经常被提到的一个调优就是修改线程的 I/O 模型。Tomcat 8.5 版本之前&#xff0c;默认情况下使用的是 BIO 线程模型&#xff0c;如果在高负载、高并发的场景下&#xff0c;可以通过设置 NIO 线程模型&#xff0c;来提高系统的网络通信性能。 我们可以通过一个性能对比…