练习三 控制结构编程题12. 小希找工作

【问题描述】

         小希看到小芳很容易就找到了她满意的工作,他也想去尝试一下,并参考了小芳找工作的方法。

         与小芳不同的是,小希希望根据三个条件综合评估来选择。

                月薪得分:  月薪/5000*100取整

                带薪假得分:有20分,无0分

                离家距离得分:不超过2000公里为100分。每超过200公里减10分,不足200公里按200公里计算,直至0分为止。

          给定3个公司A、B、C的数据,根据分数最大来判断小希应该接受哪家公司的offer。如果分数相同,按照A、B、C的顺序进行优先选择。

【输入形式】

           输入为3行(分别为A、B和C公司的数据),每行包含3个数据,分别表示公司给定的月薪(整数)、有无带薪休假(y-有,n-无)、离家距离(整数),所有的输入保证没有两个公司最终的得分相等。
【输出形式】

            输出一行一个字符(A或B或C,表示小希应该选择的公司)
【样例输入】

24723 y 23588
37395 n 32313
36389 n 21061

【样例输出】

B
#include <iostream>
using namespace std;

int money(int n){
	return n*100/5000;
}
int vacation(char a){
	if (a=='y'){
		return 20;
	}
	else return 0;
}
int distance (int b){                     //距离这里情况较多,要仔细分析
	int score;
	if (b<=2000){
		score = 100;
	}
	if (b>2000&&b%200==0){
		score = 100-10*(b-2000);
		if (score<0){
			score = 0;
		}
	}
	else if(b>2000&&b%200!=0){
		score = 100-10*(199+b-2000)/200;    //不足200按200算就加199再除200
		if (score<0){
			score = 0;
		}
	}
	return score;
}
int main(){
	int moneya,moneyb,moneyc;
	char a,b,c;
	int disa,disb,disc;
	int asum,bsum,csum;
	cin>>moneya>>a>>disa;
	cin>>moneyb>>b>>disb;
	cin>>moneyc>>c>>disc;
	
	asum = money(moneya)+vacation(a)+distance(disa);    //注意如何调用函数,是像命名函数一样
	bsum = money(moneyb)+vacation(b)+distance(disb);      把你的输出值放在函数名后
	csum = money(moneyc)+vacation(c)+distance(disc);
	if (asum>bsum&&bsum>csum||asum>csum&&csum>bsum){
		cout<<"A";}
	else if(bsum>asum&&asum>csum||bsum>csum&&csum>asum){
		cout<<"B";
	}
	else cout<<"C";
	cout<<asum<<endl;
	cout<<bsum<<endl;
	cout<<csum<<endl;
	return 0;
}

大神写的

#include <iostream>
#include <string>
using namespace std;

int Salaryscore(int salary){
	return (salary/5000)*100;
}

int Vacationscore(char vacation){
	return (vacation == 'y')?20:0; 
}

int Distancescore(int distance){
	if (distance<=2000){
		return 100;
	}
	else{
		int extra = distance - 2000;
		int score = 100-((extra + 199)/200)*10;
		return (score<0)?0:score;
	}
}

int main(){
	string company[]={"A","B","C"};
	int salary[3];
	char vacation[3];
	int distance[3];
	
	for (int i=0;i<3;i++){
		cin>>salary[i]>>vacation[i]>>distance[i];
	}
	int score[3];
	for (int i =0;i<3;i++){
		score[i]=Salaryscore(salary[i])+Vacationscore(vacation[i])+Distancescore(distance[i]);
	}
	int max = 0;
	for(int i =1;i<3;i++){
		if(score[i]>score[max]){
			max = i;
		}
	}
	cout<<company[max];
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值