这道题是 C Primer Plus第十章的第十三题,我写了a,b,c三小题,没报错但运行不对,请问我这样写错在哪里?

可能有点乱,不好意思,,,,求大佬解答... 可能有点乱,不好意思,,,,求大佬解答 展开
 我来答
最大的宝宝
2020-02-12 · TA获得超过828个赞
知道小有建树答主
回答量:1569
采纳率:67%
帮助的人:399万
展开全部

#define ROWS 3

#define COLS 5


// 用户输入数据

void save(double a[][COLS], int row)

{

for (int i = 0; i < COLS; i++)

{

scanf("%lf", &a[row][i]);

}

}


// 输出数组元素

void print(double a[][COLS], int rows)

{

for (int i = 0; i < rows; i++)

{

for (int j = 0; j < COLS; j++)

{

printf("%15lf", a[i][j]);

}

printf("\n");

}

}


// 计算数组单独一行的平均值

double ave(double a[COLS])

{

double sum = 0.0;


for (int i = 0; i < COLS; i++)

{

sum += a[i];

}

return sum / COLS;

}


// 计算数组的平均值

double ave2(double a[][COLS], int rows)

{

double sum = 0.0;


for (int i = 0; i < rows; i++)

for (int j = 0; j < COLS; j++)

{

sum += a[i][j];

}

return sum / (rows * COLS);

}


// 返回数组最大的元素值

double _max(double a[][COLS], int rows)

{

double max = a[0][0];


for (int i = 0; i < rows; i++)

{

for (int j = 0; j < COLS; j++)

{

if (a[i][j] > max)

max = a[i][j];

}

}

return max;

}


int main()

{

double a[ROWS][COLS];


for (int row = 0; row < ROWS; row++)

{

save(a, row);

}

print(a, ROWS);


for (int row = 0; row < ROWS; row++)

{

printf("%lf ", ave(a[row]));

}

printf("\n");


printf("%lf\n", ave2(a, ROWS));


printf("%lf\n", _max(a, ROWS));


return 0;

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2020-02-12 · TA获得超过317个赞
知道小有建树答主
回答量:345
采纳率:90%
帮助的人:86.6万
展开全部
函数ave中,double b[ROWS]不能用作返回值,因为b的作用域是ave函数,即ave函数调用结束之后,b已变得不可用了。
修改:

double* ave(double a[][COLS]);

修改为
double* ave(double a[][COLS], double b[ROWS]);
同时修改ave函数实现,返回数组b的首地址。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式