求一道C++题答案,急,在线等,谢谢!!!

试建立一个类Sale用于描述销售活动,具体要求如下:
私有数据成员
int sid: 商品编号。
float price: 商品价格。
int quantity: 该商品库存数量。

公有成员函数
(1) 缺省构造函数:初始化数据成员为0或NULL值。
(2) 带参构造函数:用参数初始化数据成员。
(3) void List( ): 输出本对象的数据信息。
(4) void Modify(… ): 用给定的参数修改数据成员的值。(自己定义参数)
(5) int Sell(int n):卖出本商品n件。先比较quantity和n值,若quantity≥n,计算应付金额total(n>10优惠10%,n>30优惠20%)。修改该商品库存数量quantity,输出商品编号、价格、购买数量与应付金额,并返回1。否则,显示提示信息“库存数量不够”和quantity值并返回0。

主函数:定义不少于3个并取不同值的Sale对象作为测试数据。对计算操作的返回值进行判断,根据是否进行了优惠输出提示信息。应使每个成员函数至少被调用一次。

#include <iostream>

using namespace std;

class Sale
{
private:
int sid; // 商品编号。
float price; // 商品价格。
int quantity; // 该商品库存数量。
public:
Sale()
{
Modify(0, 0, 0);
}
Sale(int sid, float price, int quantity)
{
Modify(sid, price, quantity);
}
void List()
{
cout << "商品编号:" << sid << endl;
cout << "商品价格:" << price << endl;
cout << "库存数量:" << quantity << endl;
}
void Modify(int sid, float price, int quantity)
{
this->sid = sid;
this->price = price;
this->quantity = quantity;
}
int Sell(int n)
{
float total;
float pe;
if (quantity < n)
{
cout << "库存数量不够!" << endl << "当前库存数量为:" << quantity << endl;
return 0;
}
if(n <= 0)
{
cout << "输入错误!" << endl;
return 0;
}
if(n <= 10)
pe = 1.0f;
else if(n > 10 && n <= 20)
pe = 0.9f;
else if(n > 30)
pe = 0.8f;
total = price * n * pe;
quantity -= n;
this->List();
cout << "购买数量:" << n << endl;
cout << "应付金额:" << total << endl;
cout << "优惠:" << (1 - pe) * 100 << "%" << endl;
return 1;
}
};

int main()
{
Sale s1(1, 20.5f, 20);
Sale s2(2, 15.8f, 10);
Sale s3(3, 50.5f, 5);
s1.List();
s2.List();
s3.List();
s1.Sell(15);
s2.Sell(10);
if(!s3.Sell(10))
{
s3.Modify(3, 50.5f, 10);
s3.Sell(10);
}

return 0;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

C++考试题 求解答
2. 答案是C c.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数(这个不懂)这个就是虚函数的特性,只要派生类的函数与基类的函数同名、同原型,自动为虚函数,d.派生类的虚函数与基类的虚函数具有不同的参数个数和类型(这个求解释)这个如果同名不同参数(不同原型),这个是重载...

C++问题,需要详细解答过程,详细!!!
问题一:a=10,b=0 分析:b%=b++||++a可以看成b%=((b++)||(++a)),由于b++为非零,所以表达式=((b++)||(++a))肯定为真,即1,所以程序就不判断++a了,因此a仍然为10,b%=1当然为0了。问题二:d=1 分析:char最大为127,unsigned char最大为255,所以256显然溢出了,所以ch...

这个C++题目答案是多少?
若是想得到结果是a=(3+4)*(3+5)=56,则应该这样定义:#define T(x,y) (x+y)

一道C++的函数选择题 要求详细解答
首先 答案是B 为什么?因为,c++的规定就是,当函数的参数是值类型的时候,传递的是值,而不是地址,所以会为这个传来的值 新分配一个地址单元。在这里的实际参数a本来已经有一个地址单元了,然后根据上面这个c++的规定,所以会为a的值另外分配一个地址单元,变量名是w。不过 这个“&”符号你要去学...

C++考试题目求解答解析,小白求解,30分送上!
我发现我想多了。外部标识符是声明在这里,却定义在别的地方的,貌似正好符合这个题意。第15题:a是length的缩写,求长度;b是copy的缩写,复制;c,额,不知道是什么的缩写,记住吧;d是compare的缩写,比较两个字符串的大小。第17题:答案c已经说的很明白了。

这是一个C++二级考试的题,请高手指教一下
答案是B 首先你要明白逗号表达式的含义才能掌握。逗号表达式:比如(表达式1,表达式2),它最终返回的是第二个表达上也就是表达式2的值。因此,在A中,首先先执行括号里面的语句y=z=8,得到y==8,z==8,接着执行4*6,得到24,并且该表达式返回第二个表达上的值,也就是24,因此x==24。同理...

问一道c++的题? int a=11 a++*1\/3等于多少?请各位高手把算法说详细点...
1:a++,表达式结果为11,a为12 2:11*1\/3按左到右,11*1=11,11\/3=3 所以结果为3

谁可以帮我做一下这个C++C语言的作业
【答案】main主函数价格括号,正确如下:1 main()c++语言的每个表达式的结束都需要加上分号;故第6.9行错误,正确如下;6 k=1 ;9 for(i=m;i!=n;i+=k)2、程序功能为:判断从键盘上输入的一个字符,并按下列要求输出。若该字符是数字 输出 字符串"0-9";若该字符是大写字母 输出字符串"A-Z...

跪求一道c++简单计算题答案
1. 操作符优先级 2. 类型提升 该表达式中的优先级排序:() > (类型转换) > *、\/、% > + 所以其求解顺序为:x+a%3*(int)(x+y)%2\/4 =x+a%3*(int)7.2%2\/4 =x+a%3*7%2\/4 =x+1*7%2\/4 =x+7%2\/4 =x+1\/4 =x+0 =x+0.0 \/\/类型提升,将整型的0提升为表达...

求c++习题解答
第三题是 m=m*2 一共循环了10次 就是2的10次方 所以是1024 第四题 可以看出 a=10 b=5 而也第一个循环循环了5次 所以i=5 而第二个循环 可以看出a=10 c=5 但是c是先加在判断 所以循环4次 j=4 第三个循环 a=10 d=5 do while 是先运算 后判断 所以要比上一个...

相似回答