关于C语言动态分配内存的问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 03:17:55
已经有样例代码如下:
#include <stdio.h>

#define N 5

int main()
{
int i;
float a[N];
float max, min, sum, average;

// 读入N个浮点数,存入数组a中
printf("请输入5个浮点数:");
for (i=0; i<N; i++)
{
scanf("%f", &a[i]);
}
// 在数组中找出最大值和最小值,并计算总和及平均数
sum = 0;
max = a[0];
min = a[0];
for (i=1; i<N; i++)
{
sum += a[i];
if(a[i]>max) max=a[i];
if(a[i]<min) min=a[i];
}
average = sum/n;

// 输出结果
printf("max=%f, min=%f, sum=%f, average=%f\n", max, min, sum, average);

return 0;
}

请修改样例代码,以实现:从用户处读入整数n,确定要输入的数据个数;然后再读入n个浮点数存入数组中;再找出最大值和最小值,计算总和及平均数。
#include <stdio.h>
#include <stdlib.h>

int main()
{
int i, n;
float *pa = NULL;
float max, min, sum, average;

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

int main()
{
int i, n;
float *pa = NULL;
float max, min, sum, average;

// 读入整数n
printf("请输入数据量:");
scanf("%d", &n);

// 动态分配数组内存给pa,并检查是否分配成功;如果内存分配失败则退出。
pa = (float*)calloc(n, sizeof(float) ); /////////////////(float*)
if (pa == NULL) return 1;

// 读入n个浮点数,存入pa所指内存
for (i=0; i<n; i++)
{
scanf("%f", &pa[i]);
}

// 在数组中找出最大值和最小值,并计算总和及平均数
sum = 0;
max = pa[0];
min = pa[0];
for (i=1; i<n; i++) /////////N -> n
{
sum += pa[i];
if(pa[i]>max) max=pa[i]; /////a -> pa
if(pa[i]<min) min=pa[i];
}
average = sum/n;

// 输出结果
printf("max=%f, min=%f, sum=%f, average=%f\n", max, min, sum, average);

// 释放pa所指内存
free(pa);

return 0;
}