Menu
CoddyTech

回顾:动态数组

本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 37 课,共 63 课。

challenge icon

挑战

简单

编写一个 C 程序,根据用户输入创建动态数组、处理数据,并演示正确的内存管理。程序应完成以下操作:

  1. 从用户处读取一个整数 n,表示要存储的元素数量
  2. 使用 malloc() 和 sizeof() 为包含 n 个整数的数组动态分配内存
  3. 检查内存分配是否成功。如果失败,则打印 Memory allocation failed! 并终止程序
  4. 如果分配成功,则打印 Array of size [n] created successfully!
  5. 从用户处读取 n 个整数值,并将它们存储到已分配的数组中
  6. 计算并打印所有元素的总和,格式为:Sum: [value]
  7. 找出并打印最小值,格式为:Minimum: [value]
  8. 统计大于平均值的元素数量,并按以下格式打印:Elements above average: [count]
  9. 按以下格式打印使用的内存总量(以字节为单位):Memory used: [bytes] bytes
  10. 使用 free() 释放内存
  11. 打印 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 在线编译器