标题:为何得不出答案,关于指针
只看楼主
陈宇水
Rank: 2
来 自:东莞
等 级:论坛游民
帖 子:29
专家分:34
注 册:2013-5-5
结帖率:100%
已结贴  问题点数:10 回复次数:4 
为何得不出答案,关于指针
#include<stdio.h>
main()
{
   
    float a[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}};
    void average(float (*p)[4],int n);
   
    average(a,12);
    return 0;
}
void average(float (*p)[4],int n)
{
    float sum,aver;
    int i,j;
   
    for(sum=0,i=0;i<3;i++)
    for(j=0;j<3;j++)
    sum+=*(*(p+i)+j);/*本人认为是这一栏有问题,但不知出于那*/
    aver=sum/n;
printf("%f",aver);
}
正确答案是82.25,得不出答案。求指教。
搜索更多相关主题的帖子: return average void 
2013-05-10 20:38
Ryker
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:145
专家分:420
注 册:2013-2-19
得分:5 
因为 float (*p)[4] 没有初始化..数组a并没有被传给函数,还有那个 n ..

真奇怪,指针声明在函数原型中..这么特别的爱好 ...

函数头部定义变量不好吗?

[ 本帖最后由 Ryker 于 2013-5-10 20:51 编辑 ]
2013-05-10 20:48
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2391
专家分:13384
注 册:2013-3-3
得分:5 
for(sum=0,i=0;i<3;i++)
    for(j=0;j<4;j++)
    sum+=*(*(p+i)+j);/*本人认为是这一栏有问题,但不知出于那*/
    aver=sum/n;
循环条件是4不是3,参数不需要初始化的

Maybe
2013-05-10 21:00
Ryker
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:145
专家分:420
注 册:2013-2-19
得分:0 
回复 3楼 邓士林
呃..我看错了..我把那句看成函数调用了...

没看下面还有一句...

我还是习惯函数原型在头文件下面写...写在函数里实在是...纠结啊
2013-05-10 22:26
jackliuwenli
Rank: 1
等 级:新手上路
帖 子:6
专家分:5
注 册:2013-3-28
得分:0 
   
    for(sum=0,i=0;i<3;i++)

    for(j=0;j<  4   ;j++)

    sum+=*(*(p+i)+j);     /*(*(p+i)+j)= *(p[i]+ j),3行4列,12个数据,你只加到了3行3列,9个数,所以,数值变小了*/
    aver=sum/n;
2013-05-10 23:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-406765-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050763 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved