回顾:动态数组
本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 37 课,共 63 课。
挑战
简单编写一个 C 程序,根据用户输入创建动态数组、处理数据,并演示正确的内存管理。程序应完成以下操作:
- 从用户处读取一个整数
n,表示要存储的元素数量 - 使用
malloc()和sizeof()为包含n个整数的数组动态分配内存 - 检查内存分配是否成功。如果失败,则打印
Memory allocation failed!并终止程序 - 如果分配成功,则打印
Array of size [n] created successfully! - 从用户处读取
n个整数值,并将它们存储到已分配的数组中 - 计算并打印所有元素的总和,格式为:
Sum: [value] - 找出并打印最小值,格式为:
Minimum: [value] - 统计大于平均值的元素数量,并按以下格式打印:
Elements above average: [count] - 按以下格式打印使用的内存总量(以字节为单位):
Memory used: [bytes] bytes - 使用
free()释放内存 - 打印
Memory successfully freed!,以确认已正确清理
记得包含 <stdlib.h> 头文件,以便使用 malloc() 和 free()。这个挑战将检验你对动态内存管理的全面理解,涵盖从分配、使用到正确清理的整个过程。
例如,如果输入为:
5
12 8 15 3 20输出应为:
Array of size 5 created successfully!
Sum: 58
Minimum: 3
Elements above average: 3
Memory used: 20 bytes
Memory successfully freed!这个综合挑战展示了动态内存管理的完整生命周期,同时也演示了如何对已分配的数组执行有实际意义的数据处理操作。
亲手试试
#include <stdio.h>
#include <stdlib.h>
int main() {
// 读取元素数量
int n;
scanf("%d", &n);
// TODO: 在下方编写你的代码
// 1. 使用 malloc() 为 n 个整数分配内存
// 2. 检查内存是否分配成功
// 3. 将 n 个整数读入数组
// 4. 计算总和,找出最小值,统计高于平均值的元素数量
// 5. 输出结果并释放内存
return 0;
}逻辑与流程中的所有课
自己练习: C 在线编译器