首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >写给大一新生的C语言入门指南 —— 数组

写给大一新生的C语言入门指南 —— 数组

作者头像
用户11877422
发布2025-11-03 18:22:17
发布2025-11-03 18:22:17
910
举报

大一新生轻松学C语言:数组用法入门,从理论到实操一看就会

对于刚接触C语言的同学来说,当需要处理多个同类型数据时,一个个定义变量不仅繁琐,还容易出错。这时候,数组就成了我们的好帮手。数组能像收纳盒一样,把多个同类型数据整齐存放,方便管理和使用。今天咱们就用最简单的方式,结合具体代码,一步步学会数组的使用。

一、认识数组:就像一排整齐的储物柜

想象一下,学校的储物柜一排有5个,每个柜子都能放书包,而且每个柜子都有自己的编号(1号、2号……5号)。数组就和这排储物柜很像,它是一组能存放相同类型数据的连续空间,每个空间都有自己的编号(专业叫“下标”)

比如,要存放5个同学的数学成绩,用数组来存就很合适。这时候数组就像5个连在一起的“成绩储物柜”,每个柜子里放一个同学的成绩,而且所有成绩都是整数类型。

二、数组的定义:三步打造专属“数据收纳盒”

定义数组很简单,就像给储物柜做规划,只需要确定三件事:存什么类型的数据、给这组空间起个名字、一共有多少个空间

1. 基本格式
代码语言:javascript
复制
数据类型 数组名[元素个数] = {初始值};
  • 数据类型:比如int(整数)、float(小数)、char(字符),决定了数组能存什么类型的数据。
  • 数组名:给数组起的名字,和变量名一样,要符合命名规则(只能由字母、数字、下划线组成,不能以数字开头)。
  • 元素个数:必须是整数,比如[5]就表示数组有5个“空间”。
  • 初始值:可选参数,就是一开始存进数组的数据,用大括号括起来,数据之间用逗号隔开。
2. 整数数组(最常用)

比如定义一个能存5个整数的数组,用来放同学的成绩:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    // 定义一个有5个元素的整数数组,初始值为85、92、78、90、88
    int scores[5] = {85, 92, 78, 90, 88};
    return 0;
}

这里的scores就是数组名,[5]表示数组有5个元素,每个元素都是整数,分别是85、92、78、90、88。

3. 不写初始值的情况

如果暂时不知道要存什么数据,可以先定义一个空数组,之后再往里面放数据:

代码语言:javascript
复制
int ages[3]; // 定义一个能存3个整数的数组,暂时不存数据
4. 省略元素个数(有初始值时)

如果在定义数组时给出了初始值,还可以省略元素个数,数组会自动根据初始值的数量确定元素个数:

代码语言:javascript
复制
int nums[] = {10, 20, 30, 40}; // 数组会自动变成有4个元素的数组

三、数组的访问:找到“储物柜编号”就能用

数组的每个元素都有自己的“编号”(下标),下标从0开始,这是新手最容易搞错的地方。比如有5个元素的数组,下标分别是0、1、2、3、4,对应数组的第1到第5个元素。

1. 访问数组元素

要获取数组中的某个元素,只需要用“数组名[下标]”的格式:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int scores[5] = {85, 92, 78, 90, 88};
    
    // 访问第1个元素(下标0)
    printf("第1个同学的成绩:%d\n", scores[0]);
    
    // 访问第3个元素(下标2)
    printf("第3个同学的成绩:%d\n", scores[2]);
    
    // 访问第5个元素(下标4)
    printf("第5个同学的成绩:%d\n", scores[4]);
    
    return 0;
}

运行结果:

代码语言:javascript
复制
第1个同学的成绩:85
第3个同学的成绩:78
第5个同学的成绩:88
2. 修改数组元素

如果想修改数组中的某个元素,直接给对应下标的元素赋值即可:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int scores[5] = {85, 92, 78, 90, 88};
    
    // 修改第2个同学的成绩(下标1)
    scores[1] = 95;
    printf("修改后第2个同学的成绩:%d\n", scores[1]);
    
    // 给空数组赋值
    int ages[3];
    ages[0] = 19; // 第1个元素存19
    ages[1] = 20; // 第2个元素存20
    ages[2] = 18; // 第3个元素存18
    printf("3个同学的年龄:%d, %d, %d\n", ages[0], ages[1], ages[2]);
    
    return 0;
}

运行结果:

代码语言:javascript
复制
修改后第2个同学的成绩:95
3个同学的年龄:19, 20, 18
3. 注意:下标不能越界

数组的下标有范围限制,只能从0到“元素个数-1”。如果下标超过这个范围,就会出现“越界”错误,可能导致程序输出乱码甚至崩溃。

比如一个有5个元素的数组,下标最大是4,如果访问scores[5]就会越界:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int scores[5] = {85, 92, 78, 90, 88};
    // 错误示例:下标5超出范围(最大下标是4)
    printf("越界访问的结果:%d\n", scores[5]);
    return 0;
}

运行这个程序,输出的结果是不确定的,可能是一串乱码,所以一定要避免下标越界。

四、数组和循环:完美搭档处理批量数据

当数组元素比较多时,一个个访问或修改太麻烦。这时候,循环就能派上大用场,尤其是for循环,能轻松遍历数组中的所有元素。

1. 用循环给数组赋值

比如给一个有5个元素的数组赋值10、20、30、40、50:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int nums[5]; // 定义一个有5个元素的数组
    
    // 用for循环给数组赋值
    for (int i = 0; i < 5; i++) {
        nums[i] = (i + 1) * 10;
    }
    
    // 用循环打印数组元素
    for (int i = 0; i < 5; i++) {
        printf("nums[%d] = %d\n", i, nums[i]);
    }
    
    return 0;
}

运行结果:

代码语言:javascript
复制
nums[0] = 10
nums[1] = 20
nums[2] = 30
nums[3] = 40
nums[4] = 50
2. 用循环计算数组元素的总和与平均值

比如计算5个同学的成绩总和和平均分:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int scores[5] = {85, 92, 78, 90, 88};
    int sum = 0; // 用来存总和
    float avg; // 用来存平均值
    
    // 用循环计算总和
    for (int i = 0; i < 5; i++) {
        sum = sum + scores[i];
    }
    
    // 计算平均值(用5.0确保结果是小数)
    avg = sum / 5.0;
    
    printf("成绩总和:%d\n", sum);
    printf("平均成绩:%.1f\n", avg);
    
    return 0;
}

运行结果:

代码语言:javascript
复制
成绩总和:433
平均成绩:86.6
3. 用循环找出数组中的最大值和最小值

比如找出5个成绩中的最高分和最低分:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int scores[5] = {85, 92, 78, 90, 88};
    int max = scores[0]; // 假设第1个元素是最大值
    int min = scores[0]; // 假设第1个元素是最小值
    
    // 循环比较每个元素
    for (int i = 1; i < 5; i++) {
        if (scores[i] > max) {
            max = scores[i]; // 更新最大值
        }
        if (scores[i] < min) {
            min = scores[i]; // 更新最小值
        }
    }
    
    printf("最高分:%d\n", max);
    printf("最低分:%d\n", min);
    
    return 0;
}

运行结果:

代码语言:javascript
复制
最高分:92
最低分:78

五、其他类型的数组:用法都差不多

除了整数数组,字符数组和浮点型数组也很常用,它们的用法和整数数组基本一样。

1. 字符数组(存放单个字符或字符串)

字符数组可以存放单个字符,也可以存放字符串(一串字符):

代码语言:javascript
复制
#include <stdio.h>

int main() {
    // 存放单个字符的数组
    char chars[3] = {'A', 'B', 'C'}; // 注意用单引号
    printf("字符数组中的元素:%c, %c, %c\n", chars[0], chars[1], chars[2]);
    
    // 存放字符串的数组(字符串要用双引号)
    char name[6] = "Lucy"; // "Lucy"有4个字符,数组长度至少要5(最后有一个结束标志'\0')
    printf("字符串:%s\n", name); // 用%s输出字符串
    
    return 0;
}

运行结果:

代码语言:javascript
复制
字符数组中的元素:A, B, C
字符串:Lucy
2. 浮点型数组(存放小数)

比如存放5个同学的身高(单位:米):

代码语言:javascript
复制
#include <stdio.h>

int main() {
    float heights[5] = {1.75f, 1.68f, 1.82f, 1.70f, 1.65f};
    
    // 用循环打印每个同学的身高
    for (int i = 0; i < 5; i++) {
        printf("第%d个同学的身高:%.2f米\n", i + 1, heights[i]);
    }
    
    return 0;
}

运行结果:

代码语言:javascript
复制
第1个同学的身高:1.75米
第2个同学的身高:1.68米
第3个同学的身高:1.82米
第4个同学的身高:1.70米
第5个同学的身高:1.65米

六、实战案例:用数组做一个简单的学生信息管理

我们来综合运用数组和循环,做一个能输入5个学生的成绩,然后计算总分、平均分、最高分和最低分的小程序:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int scores[5]; // 存放5个成绩
    int sum = 0;
    int max, min;
    
    // 输入5个成绩
    printf("请输入5个学生的成绩:\n");
    for (int i = 0; i < 5; i++) {
        printf("第%d个成绩:", i + 1);
        scanf("%d", &scores[i]); // 输入成绩到数组
    }
    
    // 计算总分
    for (int i = 0; i < 5; i++) {
        sum += scores[i];
    }
    
    // 找最高分和最低分
    max = scores[0];
    min = scores[0];
    for (int i = 1; i < 5; i++) {
        if (scores[i] > max) {
            max = scores[i];
        }
        if (scores[i] < min) {
            min = scores[i];
        }
    }
    
    // 输出结果
    printf("\n===== 成绩统计结果 =====\n");
    printf("总分:%d\n", sum);
    printf("平均分:%.1f\n", sum / 5.0);
    printf("最高分:%d\n", max);
    printf("最低分:%d\n", min);
    
    return 0;
}

运行示例:

代码语言:javascript
复制
请输入5个学生的成绩:
第1个成绩:90
第2个成绩:85
第3个成绩:95
第4个成绩:80
第5个成绩:88

===== 成绩统计结果 =====
总分:438
平均分:87.6
最高分:95
最低分:80

七、数组用法小总结

  • 数组是存放相同类型数据的连续空间,就像一排储物柜。
  • 定义数组的格式:数据类型 数组名[元素个数] = {初始值};
  • 数组下标从0开始,最大下标是“元素个数-1”,不要越界。
  • 访问和修改数组元素用数组名[下标]
  • 处理多个元素时,用for循环遍历数组更高效。
  • 常见的数组类型有整数数组、字符数组、浮点型数组,用法相似。

数组是C语言中处理批量数据的基础,学会了数组,以后处理列表、统计数据等问题会变得非常简单。刚开始用的时候可能会记错下标,多写几次代码练习,很快就能熟练掌握。希望这篇文章能帮你轻松学会数组的使用,要是有不懂的地方,欢迎在评论区交流哦!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大一新生轻松学C语言:数组用法入门,从理论到实操一看就会
    • 一、认识数组:就像一排整齐的储物柜
    • 二、数组的定义:三步打造专属“数据收纳盒”
      • 1. 基本格式
      • 2. 整数数组(最常用)
      • 3. 不写初始值的情况
      • 4. 省略元素个数(有初始值时)
    • 三、数组的访问:找到“储物柜编号”就能用
      • 1. 访问数组元素
      • 2. 修改数组元素
      • 3. 注意:下标不能越界
    • 四、数组和循环:完美搭档处理批量数据
      • 1. 用循环给数组赋值
      • 2. 用循环计算数组元素的总和与平均值
      • 3. 用循环找出数组中的最大值和最小值
    • 五、其他类型的数组:用法都差不多
      • 1. 字符数组(存放单个字符或字符串)
      • 2. 浮点型数组(存放小数)
    • 六、实战案例:用数组做一个简单的学生信息管理
    • 七、数组用法小总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档