跳到主要内容

C 编程:使用动态内存分配查找最大数

为了理解这个示例,你应该具备以下 C语言编程 主题的知识:

示例:查找最大元素

#include <stdio.h>
#include <stdlib.h>

int main() {

int n;
double *data;
printf("请输入元素总数:");
scanf("%d", &n);

// 为 n 个元素分配内存
data = (double *)calloc(n, sizeof(double));
if (data == NULL) {
printf("错误!!!内存未分配。");
exit(0);
}

// 存储用户输入的数字。
for (int i = 0; i < n; ++i) {
printf("请输入第%d个数:", i + 1);
scanf("%lf", data + i);
}

// 寻找最大数
for (int i = 1; i < n; ++i) {
if (*data < *(data + i)) {
*data = *(data + i);
}
}
printf("最大数 = %.2lf", *data);

free(data);

return 0;
}

输出

请输入元素总数:5
请输入第1个数:3.4
请输入第2个数:2.4
请输入第3个数:-5
请输入第4个数:24.2
请输入第5个数:6.7
最大数 = 24.20

解释

在这个程序中,我们让用户输入元素总数,这个数存储在变量 n 中。然后,我们为 ndouble 值分配了内存。

// 为 n 个 double 值分配内存
data = (double *)calloc(n, sizeof(double));

然后,我们使用了一个 for 循环来获取用户输入的 n 个数据。

// 存储元素
for (int i = 0; i < n; ++i) {
printf("请输入第%d个数:", i + 1);
scanf("%lf", data + i);
}

最后,我们使用另一个 for 循环来计算最大数。

// 计算最大数
for (int i = 1; i < n; ++i) {
if (*data < *(data + i))
*data = *(data + i);
}
}

注意: 除了 calloc(),也可以使用 malloc() 函数来解决这个问题。