首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个变长数组的有关问题

2012-08-01 
一个变长数组的问题。编译能通过,不过运行的时候就出错,什么原因??我的编译器是mingw用变长数组实现12.编写

一个变长数组的问题。
编译能通过,不过运行的时候就出错,什么原因??我的编译器是mingw


用变长数组实现12.编写…个程序,提示用户输入3个数集,每个数集包括5个double值。程序应当实现下列所有功能:
  a.把输入信息存储到一个3x5的数组中
  b.计算出每个数集(包含5个数值)的平均值
  c.计算所有数值的平均数
  d.找出这15个数中的最大值.
  e.打印出结果
  每个任务需要用一个单独的函数来实现(使用传统C处理数组的方法)。对于任务b,需要编写计算并返回一维数组平均值的函数,循环3次调用该函数来实现任务b。对于其他任务,函数应当把整个数组做为参数,并且完成任务c和d的函数应该向它的调用函数返回答案。

C/C++ code
//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);}


[解决办法]
我用VC编译 表示通过不了
 int e,w;
 double array[e][w];
真的能这样吗?我感觉 这个就是错的
[解决办法]
要动态分配

热点排行