解答网友问题003
2015-03-25 01:23
211 查看
网友问题链接
首先,average的第一个参数的维数不能为空。
其次,访问数组指针的方式不对。
double average(double(*p)[], double *q, int n, int m) { int i, j; double NU, AE;//每列总和与每行总和 for (i = 0; i < n; i++) { for (NU = 0, j = 0; j < m; j++) { NU += (*p + i)[j];//每列的和 } q[i] = NU / m;//每行的平均值 AE += NU;//每行的和 } return AE / (n*m);//总平均值 } |
第一行的平均值没错!第2行开始的平均值有错! 猜测NU+=(*p+i)[j];这出错了!试过NU+=p[i][j];无法编译! 也是个改参数!把(*p)[]改成**p,把NU+=(*p)[j]改成NU+=(*(*p+i)+j); 无法编译! 需求是求2次平均值! 1个是行的平均值, 1个是总平均值! |
首先,average的第一个参数的维数不能为空。
其次,访问数组指针的方式不对。
#include<stdio.h> //这个average函数中,第一个参数的维数不能为空。 double average(double(*p)[3], double *q, int n, int m) { //m代表列数,n代表行数。q指向一个数组,共有n个元素。 int i, j; double NU = 0;//每行的总和 ,需要在这里进行初始化 double AE = 0;//所有数据的总和 for (i = 0; i < n; i++) { for (NU = 0, j = 0; j < m; j++) { NU += p[i][j];//每行的和 //这里不是(*p + i)[j],你可以写p[i][j]或者*(p+i)[j] } q[i] = NU / m;//每行的平均值 AE += NU;//AE 是总和 } return AE / (n*m);//总平均值 } void main() { double buf[2][3] = { { 1.2, 2.3, 3.4 }, { 4.5, 5.6, 6.7 } }; double p[2] = { 0 }; double aver=average(buf, p, 2, 3); for (int i = 0; i < 2; i++) printf("%g\t", p[i]); putchar(10); printf("%g\n", aver); }
相关文章推荐
- 关于Installshield里一些常见问题的解答(二)--此篇非原创,只是集成了一些网友的解答
- 关于一些网友及自己非常小白时常见问题的解答【RM中运用商业素材问题】
- 关于网友Flex问题相关解答
- 应聘时最漂亮的回答】网友总结了26个面试问题解答
- 通过帮网友解答问题训练同学们使用awk,sed案例
- PS中修改gif图片遇到的问题 - 网友解答
- 解答网友问题005
- 关于Installshield里一些常见问题的解答(二)--此篇非原创,只是集成了一些网友的解答
- 解答网友问题002
- 老男孩为网友工作疑难问题解答一例
- 解答网友问题004
- 网友常见网络问题解答
- 一个简单的Shell 解答网友问题
- 金山软件论坛 - 综合交流区 - 系统+软件+编程 - 『网友常见问题及解答』
- 近期网友遇到的一些问题,整理出来 大家可以学习 交流 MySQL问题及解答
- 解答网友问题001
- 红旗桌面4.0正式版最新使用方法和问题解答100例
- 关于网友"Flex-Tomcat-MySql"结合的问题!