c++中类里的私有成员用函数数输不出来
#include<iostream.h>classARR{private:intn;inta[100];doubleaver;public:ARR(intx[],ints...
#include<iostream.h>class ARR{private:int n; int a[100]; double aver;public:ARR (int x[], int size) { n=size; for(int i=0;i<n;i++) { a[i]=x[i]; } } void Average(void); void Show(void);};void ARR::Average(void){ int j=0; for(double aver=0;j<n;j++) aver=aver+a[j]; aver=aver/n;}void ARR::Show(void){ int l=1; for(int k=0;k<n;k++) { cout<<a[k]<<'\t'; if(l==5) { cout<<'\n'; l=1; } else l++; } cout<<'\n'<<"aver="<<aver<<endl;}void main(){ int b[]={3,4,6,8,10,34,2}; ARR b1(b,7); b1.Average(); b1.Show();}
输出的aver是-9.25596e+061是为什么? 展开
输出的aver是-9.25596e+061是为什么? 展开
展开全部
首先,我把你给的代码格式整理一下:
代码存在几个问题:
(1)第一行,改为#include <iostream>
(2)在#include下面添加using namespace std; (下面你有用到cout,但是没有指定命名空间)
(3)也就是为什么数不出正确结果的重点了,注意你写的求平均数的代码(第19行),在里面,你重新声明了一个double aver变量,需要注意的是,这个是一个局部变量,而不是你在类中声明的变量。而且,你放在了for循环中,即每执行一次,aver(局部变量)就会重新被赋值为0;
所以,针对以上问题,可以改为:
把for循环中的double aver拎出来,同时,不用重新声明,只需要将aver赋值为0,这样就是使用的类变量aver,而像之前的代码中,你的运算结果其实应该是不确定的,因为你没有给类变量aver进行赋值,所以,其值会是毫无意义的。
运行结果:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询