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 }
题目内容:
完成一个对候选人得票的统计程序。假设有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的定义类型,以及结构体的初始化

浙公网安备 33010602011771号