看看一简单C++程序 找错误,改正

来源:百度知道 编辑:UC知道 时间:2024/06/05 18:16:52
#include <iostream>
using namespace std;
class M
{private:

static int n;
static float sum;

int quantity;
float price;
float s;
public:
static int average(M *p,int);
void total(M *p,int);
void display();
M(int qu,int p):quantity(qu),price(p){}
};

int M::n=0;
float M::sum=0;

void M::total(M *p,int a)
{s=quantity*price;
for(int i=0;i<a;i++)
sum+=(*(p+i)).s;
}

float M::average(M *p,int b)
{for(int i=0;i<b;i++)
n+=(*(p+i)).quantity;
return (sum/n);}

void M::display()
{float temp;
temp=average(M *p,int b);
cout<<sum<<endl;
cout<<temp<<endl;}

int main()
{M m[3]={
M(5,23.5),
M(12,24.56),
M(100,21.5)
};
for(int i=

设计思路有问题,要么你的程序得重新写。

void M::display()
{float temp;
temp=average(M *p,int b); //这里的参数从何而来?
cout<<sum<<endl;
cout<<temp<<endl;}

改为display(M *p,int b)
{float temp;
temp=average(p, b); //这里的参数
cout<<sum<<endl;
cout<<temp<<endl;
}

主函数内改为 display(m,3);

float M::average(M *p,int b)
{for(int i=0;i<b;i++)
n+=(*(p+i)).quantity;
return (sum/n);}
这个也有潜在问题,比如说 sum/n 是整数 ,应改为((double)sum)/n

程序写的很乱,没有说明你想实现什么功能