C语言数组实战:从基础语法到学生成绩统计小程序
刚学完C语言数组的基础语法,总觉得知识点很零散,于是试着用数组做了一个简单的学生成绩统计小程序,既巩固了知识点,也感受到了编程的实用价值。这篇博客就记录一下数组的核心知识点和小程序的开发过程~一、数组基础知识点梳理
- 数组的定义与初始化:数组是一组相同类型数据的有序集合,定义格式为“数据类型 数组名[数组长度]”。初始化分为完全初始化(如int arr[5] = {1,2,3,4,5})和部分初始化(如int arr[5] = {1,2},未初始化元素默认为0),注意不能越界访问数组元素。
- 数组的访问与遍历:通过下标访问数组元素,下标从0开始。遍历数组常用for循环,通过循环变量控制下标,依次访问每个元素,这是数组操作的核心逻辑。
二、学生成绩统计小程序开发过程
- 需求分析:实现录入10名学生的数学成绩,计算平均分、最高分和最低分,并输出所有成绩。
- 代码实现步骤:
- 定义数组存储成绩:int scores[10]; (因为要存储10个成绩,数组长度设为10)
- 录入成绩:用for循环遍历数组,通过scanf函数依次录入10个成绩,这里要注意提示用户输入对应的学生成绩,提升交互性。
- 计算统计数据:定义sum(总和)、avg(平均分)、max(最高分)、min(最低分)四个变量,先初始化sum为0,max和min为数组第一个元素。再通过for循环遍历数组,累加求和,同时比较更新max和min。
- 输出结果:依次输出所有学生成绩,再输出计算得到的平均分、最高分和最低分,注意平均分保留1位小数,用printf("%.1f", avg)实现。
- 完整代码:
#include <stdio.h>int main() {int scores[10];int sum = 0, max, min;float avg;
// 录入10名学生成绩
for (int i = 0; i < 10; i++) {
printf("请输入第%d名学生的数学成绩:", i + 1);
scanf("%d", &scores[i]);
sum += scores[i];
}
// 计算最高分和最低分
max = scores[0];
min = scores[0];
for (int i = 1; i < 10; i++) {
if (scores[i] > max) {
max = scores[i];
}
if (scores[i] < min) {
min = scores[i];
}
}
// 计算平均分
avg = sum / 10.0;
// 输出结果
printf("\n10名学生的数学成绩如下:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", scores[i]);
}
printf("\n平均分:%.1f\n", avg);
printf("最高分:%d\n", max);
printf("最低分:%d\n", min);
return 0;
}
三、遇到的问题与解决方法
- 问题1:数组越界错误。一开始把循环条件写成i <= 10,导致访问了scores[10],程序报错。解决:记住数组下标从0开始,长度为10的数组最大下标是9,循环条件改为i < 10。
- 问题2:平均分是整数。一开始sum和10都是整数,除法结果为整数,无法保留小数。解决:把10改为10.0,让除法变成浮点数除法,得到正确的平均分。
【总结】通过这个小程序,我对数组的使用有了更扎实的掌握,也明白了编程中“逻辑严谨”的重要性。以后会多做这类小实战,把理论知识转化为实际应用能力。
