让我迷惑的C++程序~请高手指导~

来源:百度知道 编辑:UC知道 时间:2024/05/26 14:10:09
大概就是求几样商品的总数和总价格然后得出平均价格,里面会用到静态函数和变量,程序很简单,但出错问题我却想了很久想不通,请高手不吝赐教,万分感谢。
#include<iostream>
using namespace std;
class Shop
{
public:
Shop(int n,int q float p):num(n),qua(q),pri(p){}
void total();
static float average();
void display();
static dis; //折扣,由用户输入
private:
int num;
int qua;
float pri; //实际单价
static int t;
static float sum;
};
int Shop::t=0;
float Shop::sum=0;
void Shop::total()
{
float rate=1.0;
if(qua>10)
rate=rate*0.98;
sum+=qua*pri*rate*(1-dis);
t+=qua;
}
float Shop::average()
{
return(sum/t);
}
int main()
{
Shop s[3]={Shop(1001,5,23.5),Shop(1002,12,24.56),Shop(1003,100,21.5)};
cout<<"please input the discount: ";
cin>>Shop.dis;
for(int i=0;i<3;i++)
s[i].total();
cout<<"The price is "<<Shop::average()

回答者:L_o_o_n_i_e - 副总裁 十一级 不要误导,那个是静态成员的使用。静态成员需要在外部声明。
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;

class Shop
{
public:
Shop(int n,int q ,float p):num(n),qua(q),pri(p){}//这里参数少了个,分隔
void total();
static float average();
void display();
static float dis; //折扣,由用户输入//类型没有定义
private:
int num;
int qua;
float pri; //实际单价
static int t;
static float sum;
};

float Shop::dis; //静态变量必须要在外部声明
int Shop::t=0;
float Shop::sum=0;
void Shop::total()
{
float rate=1.0;
if(qua>10)
rate=rate*0.98;
sum+=qua*pri*rate*(1-dis);
t+=qua;
}
float Shop::average()
{
return(sum/t);
}
int main()
{
Shop s[3]={Shop(1001,5,23.5),Shop(1002,12,24.56),Shop(1003,100,21.5)};
cout<<"please input the discount: ";
cin>>Shop.dis;
for(int i=0;i&