看看一简单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=
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
程序写的很乱,没有说明你想实现什么功能