动态内存分配:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main() {
double average = 0, max = 0, min = 0, sum = 0;
int* p, n;
scanf("%d", &n);
if ((p = (int*)calloc(n, sizeof(int))) == NULL) {//complex allocate
printf("not able to allocate memory. \n");
exit(1);
}
else {
scanf("%d", p);
sum = *p;//这一步是为了与后面进行比较
max = sum;//同上
min = sum;//同上
for (int i = 1; i < n; i++) {
scanf("%d", p + i);//用指针实现内存动态分配
sum += *(p + i);//求出和,方便求average
if (max < *(p + i)) {
max = *(p + i);//取出最大值
}
if (min > * (p + i)) {
min = *(p + i);//取出最小值
}
}
average = sum / n;
printf("average = %.2f\nmax = %.2f\nmin = %.2f", average, max, min);
free(p);//释放动态分配的空间
}
return 0;
}
这是不用动态分配的写法,大家可以比较一下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main(){
int n = 0, i = 0;
scanf("%d", &n);
int a[n];
while (i != n) {
scanf("%d", &a[i]);
i++;
}
double sum = 0, avg = 0, max = 0, min = a[0];
for (i = 0; i < n; i++) {
sum = sum + a[i];
if (max < a[i]) {
max = a[i];
}
if (min > a[i]) {
min = a[i];
}
}
avg = sum / n;
printf("average = %.2f\nmax = %.2f\nmin = %.2f", avg, max, min);
return 0;
}