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

《数组:让程序一下子记住一堆数据》

前言

之前我们只用单个变量存数据,比如int num1, num2, num3;。 如果要存储 50 个学生的成绩、20 个商品价格,难道要手动定义 50 个变量?代码会又臭又长,完全没法维护。

分支(if/switch)让程序会做选择,循环(for/while)让程序重复干活,而数组,就是程序用来批量存放同类数据的 “收纳盒”。 有了数组,我们不用一堆零散变量,一行代码就能存几十上百个数据,搭配循环遍历,处理批量数据事半功倍。

一、什么是一维数组?

1.1 基础定义语法

数据类型 数组名[存储个数];

通俗解释:

  • 数据类型:规定盒子里只能放同一种东西(int 只能存整数、char 只能存字符)
  • 数组名:这个收纳盒的名字,和变量命名规则一样
  • []里的数字:这个盒子最多能装多少个数据

示例:

// 能存放10个整数成绩的数组 int score[10]; // 能存放8个身高小数的数组 float height[8];

1.2 数组下标核心规则(新手必踩坑点)

数组里每一个格子都有编号,这个编号叫做下标: ✅ 下标从0开始计数 长度为 5 的数组,下标范围:0、1、2、3、4❌ 不能使用下标 5,会出现数组越界,读取到乱码

1.3 一维数组 3 种初始化写法

// 写法1:全部元素赋值 int arr1[5] = {1,2,3,4,5}; // 写法2:只给部分元素赋值,剩下自动补0 int arr2[5] = {10,20}; // 等价 {10,20,0,0,0} // 写法3:省略长度,编译器自动统计元素个数 int arr3[] = {2,4,6,8}; // 数组长度自动为4

二、数组 + for 循环:批量处理数据

手动一个个打印数组元素非常麻烦,for循环专门用来遍历数组所有下标,一键读取全部数据。

实战代码 1:遍历打印全班成绩

#include <stdio.h> int main() { // 存储5名学生成绩 int score[5] = {85, 92, 78, 96, 66}; // i代表数组下标,从0循环到4 for(int i = 0; i < 5; i++) { printf("第%d名学生成绩:%d\n", i+1, score[i]); } return 0; }

运行输出:

第1名学生成绩:85 第2名学生成绩:92 第3名学生成绩:78 第4名学生成绩:96 第5名学生成绩:66

实战代码 2:输入成绩,计算总分、平均分

结合之前学的分支、循环、数组三合一综合案例:

#include <stdio.h> int main() { int score[5]; int sum = 0; double avg; // 循环录入5个成绩存入数组 for(int i = 0; i < 5; i++) { printf("请输入第%d位学生成绩:", i+1); scanf("%d", &score[i]); sum += score[i]; } avg = sum / 5.0; printf("\n班级总分:%d,平均分:%.2f\n", sum, avg); // if分支判断班级成绩是否合格 if(avg >= 60) { printf("班级平均成绩合格!"); } else { printf("班级平均分不及格,需要加强练习!"); } return 0; }

三、字符数组:存放文字的数组

int 数组存数字,char字符数组专门存放单个文字、字母、符号,是字符串的底层基础。

3.1 字符数组基础用法

#include <stdio.h> int main() { // 定义长度为6的字符数组,存放5个字母 char ch[6] = {'H','e','l','l','o'}; // 循环打印每个字符 for(int i = 0; i < 5; i++) { printf("%c", ch[i]); } return 0; }

输出结果:Hello

3.2 朴素认识字符串

上面逐个写字符太麻烦,C 语言给字符数组简化写法,直接放一段文字,这就是字符串

// 简化写法,等价 char str[6] = {'H','e','l','l','o','\0'}; char str[6] = "Hello";

💡 关键知识点: 双引号包裹的文字,会自动在末尾隐藏一个结束标记\0,用来告诉程序文字到此结束。 我们平时写的文字、姓名、账号,本质全是带\0的字符数组。

3.3 字符串快速输入输出示例

#include <stdio.h> int main() { char name[20]; // 最多存19个汉字/字母,留1位给\0 printf("请输入你的名字:"); scanf("%s", name); // 字符串输入不用加& printf("你输入的名字是:%s", name); return 0; }

四、新手高频踩坑总结 ⚠️

  1. 下标越界:数组长度为 5,只允许使用 0~4,访问 arr [5] 会读取内存垃圾,程序异常
  2. 下标从 0 开始:不要习惯性把循环起始值写成 1,会漏掉第一个数据
  3. 数组类型统一:int 数组只能存数字,char 数组只能存字符,不能混合存放
  4. 字符串预留结束位:存放 "Hello" 至少要开辟长度 6 的字符数组,给\0留位置

下期预告

下一篇专栏文章讲解二维数组,实现多科目成绩存储、矩阵打印,结合 while 菜单循环,完成完整学生成绩管理系统,巩固数组 + 分支 + 循环全套知识点。

http://www.jsqmd.com/news/1033086/

相关文章:

  • 拒绝断货焦虑!拥有大库存量的Nitronic60不锈钢厂商推荐 - 品牌2026
  • 2026年中武汉宝宝照推荐指南:一岁一咔家庭照相馆深度解析 - 品牌鉴赏官2026
  • Python实现协同过滤算法:从零搭建个性化小说推荐系统
  • Gemini Pro 2026实操指南:普通人如何用提示工程+本地化实现AI深度协作
  • Navicat密码解密终极指南:如何快速找回遗忘的数据库密码
  • 2026红石崖街道正规的空调回收公司有哪些 - 品牌排行榜
  • 2026餐饮店隔油池堵了怎么办?绍兴管道疏通商铺类专项服务评测,主打就是真实! - 极速版本
  • Orange3:如何通过可视化编程实现零代码机器学习分析
  • NXP MC33771 BMS评估板硬件配置与调试实战指南
  • ZigBee ZCL属性管理:核心函数原理、实战与调试指南
  • 从零上手经典8位MCU评估板:硬件调试与CodeWarrior开发全流程
  • 1N6506二极管阵列深度解析:从ESD保护到高速开关的实战应用
  • OpenSlide 终极指南:快速掌握虚拟切片图像处理技术
  • 深度学习入门完全指南:用Deeplearning4j-examples快速掌握Java深度学习
  • 电脑常见问题汇总
  • 2026年台州税务咨询选对=省心 企赢税务AI智能财税推荐 - 本地品牌推荐
  • AI Agent 入门:从会回答到能完成任务
  • 深度应用:YOLO检测模型解决实际视觉识别难题的关键策略
  • AI-Scientist:10分钟自动化科研工作流,让LLM为你完成科学发现全流程
  • SVN 分支管理最佳实践 SVN 与 Git 命令对照表
  • 开发者最喜欢的PHP开源商城源码排行榜(2026版)——为什么有些商城源码拥有几万Star,却依然很少进入企业项目?
  • i.MX35 PDK嵌入式Linux开发套件:从硬件认知到多媒体应用实战
  • 绝区零一条龙:5分钟掌握全自动战斗与日常任务的智能助手
  • 深圳搬家公司口碑榜:本地人都在用的5家正规又靠谱的搬家公司 - 从来都是英雄出少年
  • 告别“改代码式”运维!eBPF 技术如何实现全语言、零侵入的应用可观测?
  • 3步实现智能企业研究:用Agent技能精准洞察市场机会
  • 全面掌握盲水印技术:4大实战场景深度应用指南
  • Windows 11官方纯净镜像获取、验证与安装全流程实战指南
  • 3步快速解决华硕笔记本色彩配置文件丢失问题:G-Helper免费修复指南
  • Gateway API 实战:在单节点 Kubernetes 上使用 Envoy Gateway 跑通 HTTPRoute、Header 匹配和金丝雀分流