一个变长数组的问题。
编译能通过,不过运行的时候就出错,什么原因??我的编译器是mingw
用变长数组实现12.编写…个程序,提示用户输入3个数集,每个数集包括5个double值。程序应当实现下列所有功能:
a.把输入信息存储到一个3x5的数组中
b.计算出每个数集(包含5个数值)的平均值
c.计算所有数值的平均数
d.找出这15个数中的最大值.
e.打印出结果
每个任务需要用一个单独的函数来实现(使用传统C处理数组的方法)。对于任务b,需要编写计算并返回一维数组平均值的函数,循环3次调用该函数来实现任务b。对于其他任务,函数应当把整个数组做为参数,并且完成任务c和d的函数应该向它的调用函数返回答案。
//C Primer Plus 第十章 编程练习 13#include <stdio.h>void save(int a,int b,double ar[a][b]);void average(int,int,double ar[*][*],double *,double *,double *);double average_array(int,int,double ar[*][*]);double max_array(int,int,double ar[*][*]);void display(int,int,double ar[*][*],double array0,double array1,double array2,double average_total,double max);int main(void){ int e,w; double array[e][w]; double average0,average1,average2,average_total,max; save(3,5,array); average(3,5,array,&average0,&average1,&average2); average_total = average_array(3,5,array); max = max_array(3,5,array); display(3,5,array,average0,average1,average2,average_total,max); return 0;} void save(int a,int b,double ar[a][b]){ int i,j; puts("Please enter array for 3*5:"); for(i = 0;i < a;i++) for(j = 0;j < b;j++) scanf("%lf",&ar[i][j]);}void average(int a,int b,double ar[a][b],double *p0,double *p1,double *p2){ int i; for(i = 0,*p0 = 0;i < b;i++) *p0 += ar[0][i]; *p0 /= b; for(i = 0,*p1 = 0;i < b;i++) *p1 += ar[1][i]; *p1 /= b; for(i = 0,*p2 = 0;i < b;i++) *p2 += ar[2][i]; *p2 /= b;}double average_array(int a,int b,double ar[a][b]){ int i,j; double average = 0; for(i = 0;i < a;i++) for(j = 0;j < b;j++) average += *(*(ar + i) + j); average /= a * b; return average;}double max_array(int a,int b,double ar[a][b]){ int i,j; double max = ar[0][0]; for(i = 0;i < a;i++) for(j = 0;j < b;j++) if(max < ar[i][j]) max = ar[i][j]; return max;}void display(int a,int b,double ar[a][b],double p0,double p1,double p2,double average1,double max1){ int i,j; printf("a.\narray = \n"); for(i = 0;i < a;i++) { for(j = 0;j < b;j++) printf("%g\t",ar[i][j]); printf("\n"); } printf("b.\n"); printf("average0 = %g\n",p0); printf("average1 = %g\n",p1); printf("average2 = %g\n",p2); printf("c.\n"); printf("total average = %g\n",average1); printf("d.\n"); printf("max = %g\n",max1);}