1.8

小明经营着一个不大的水果店(似曾相识哦~),只销售苹果、香蕉和桔子。为了促销,小明制定了如下定价策略:

苹果:按斤论价,每斤P元,买W斤,则需支付W*P元。
香蕉:半价,每斤P元,买W斤,则需支付W/2*P元。
桔子:按斤论价,每斤P元,买W斤。如果W>10,则打半价,即需支付W * P/2元;否则如果W>5,则打八折,即需支付W * P * 0.8元;其他情况不打折,即需支付W*P元。
请用C++来计算某个顾客采购的水果的总价。该程序至少应有:
Fruit类:是个抽象类,是Apple、Banana和Orange的父类。支持重载的加法运算。
Apple、Banana和Orange类:分别对应于苹果、香蕉和桔子三种水果,每种水果执行不同的定价策略。
输入

输入为多行,每行格式为:

C W P

其中C是水果类型(a、b、o分别代表苹果、香蕉和桔子),W和P分别是顾客购买的相应水果的重量和每斤水果的单价。输入完成后输入字符q结束输入。

输出

输出顾客需支付的总金额。

样例输入

a 1 1
b 1 1
o 1 1
q

样例输出
2.5

 1 #include<iostream>
 2 using namespace std;
 3 class fruit
 4 {
 5     public:
 6     double w,p;    
 7     virtual double jiage(void)=0;
 8 };
 9 
10 class apple:public fruit
11 {
12     public:
13     apple()
14     {
15         cin>>w>>p;
16     }
17     double jiage();
18 };
19 double apple::jiage()
20  {
21      return w*p;
22  }
23  
24 class banana:public fruit
25 {
26     public:
27         banana()
28         {
29             cin>>w>>p;
30         }
31     double jiage();
32 };
33 double banana::jiage()
34  {
35  return w*p*0.5;    
36  } 
37  
38 class orange:public fruit
39 {
40     public:
41     orange()
42     {
43     cin>>w>>p;
44     }
45     double jiage();
46 };
47 double orange::jiage()
48  {
49  if(w>10)    return w*p*0.5;
50  else if(w>5) return w*p*0.8;
51  else return w*p;
52  }
53 int main(void)
54 {
55 char type;
56 double total=0;
57 while(cin>>type)
58 {
59     switch(type)
60     {
61         case 'a':
62         {
63         apple a;
64         apple *p=&a;
65         total+=p->jiage();
66         break;    
67         }
68         case 'b':
69         {
70         banana b;
71         banana *p=&b;
72         total+=p->jiage();
73         break;    
74         }    
75         case 'o':
76         {
77         orange o;
78         orange *p=&o;
79         total+=p->jiage();
80         break;    
81         }
82     }
83 if(type=='q') break;
84     }
85     cout<<total;    
86 }
 
计票程序(50分)

题目内容:

完成一个对候选人得票的统计程序。假设有3个候选人,名字分别为Li,Zhang和Fun。使用结构体存储每一个候选人的名字和得票数。记录每一张选票的得票人名,输出每个候选人最终的得票数。结构体可以定义成如下的格式:

struct person {

    char name[20];

    int count;

}leader[3] = {“Li”, 0, “Zhang”, 0, “Fun”, 0};

输入格式:

第一行有一个整数n,表示以下有n张选票信息将会输入。保证n不大于100。

以后的n行中,每一行包含一个人名,为选票的得票人。保证每一个人名都是Li,Zhang和Fun中的某一个。

输出格式:

有三行,分别为Li,Zhang和Fun每人的得票数。格式为首先输出人名,其后输出一个冒号,最后输出候选人的得票数。

请注意行尾输出换行。

输入样例:

10

Li

Li

Fun

Zhang

Zhang

Fun

Li

Fun

Zhang

Li

输出样例:

Li:4

Zhang:3

Fun:3

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 int main() 
 5 {
 6 struct person {
 7 
 8     char name[20];
 9 
10     int count;
11 
12 }leader[3] = {"Li", 0, "Zhang", 0, "Fun", 0};    
13 int n,i;
14 string spark;
15 cin>>n;
16 for(i=0;i<n;i++)
17 {
18 cin>>spark;
19 if(spark==leader[0].name)    leader[0].count++;
20 else if(spark==leader[1].name) leader[1].count++;
21 else leader[2].count++;
22 }
23 cout<<"Li:"<<leader[0].count<<endl;
24 cout<<"Zhang:"<<leader[1].count<<endl;
25 cout<<"Fun:"<<leader[2].count;    
26 }

注意:在写两个if条件语句时出现了问题,以及spark的定义类型,以及结构体的初始化

posted @ 2022-01-08 13:36  闻淤野  阅读(958)  评论(0)    收藏  举报