题目描述
ABC公司决定给员工加薪,加薪情况如下所示:
薪水 涨薪幅度
0 - 400.00 15%
400.01 - 800.00 12%
800.01 - 1200.00 10%
1200.01 - 2000.00 7%
超过 2000.00 4%
读取员工的工资,计算并输出员工的新工资,以及员工增加的收入和涨薪幅度。
输入格式
共一行,包含一个保留两位小数的浮点数。
输出格式
输出格式如下所示:
第一行输出”Novo salario: X”,X表示员工新工资,保留两位小数。
第二行输出”Reajuste ganho: Y”,Y表示员工增加的具体收入数值,保留两位小数。
第三行输出”Em percentual: Z”,Z表示涨薪幅度,注意用百分比表示。
数据范围
0≤原工资≤2500.00
输入样例:
400.00
输出样例:
Novo salario: 460.00
Reajuste ganho: 60.00
Em percentual: 15 %
我的算法
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
float sal;
cin>>sal;
if(sal>=0&&sal<=400.00){
printf("Novo salario: %.2f\n",sal+sal*0.15);
printf("Reajuste ganho: %.2f\n",sal*0.15);
printf("Em percentual: 15 %%");
}
else if(sal>=400.01&&sal<=800.00){
printf("Novo salario: %.2f\n",sal+sal*0.12);
printf("Reajuste ganho: %.2f\n",sal*0.12);
printf("Em percentual: 12 %%");
}
else if(sal>=800.01&&sal<=1200.00){
printf("Novo salario: %.2f\n",sal+sal*0.10);
printf("Reajuste ganho: %.2f\n",sal*0.10);
printf("Em percentual: 10 %%");
}
else if(sal>=1200.01&&sal<=2000.00){
printf("Novo salario: %.2f\n",sal+sal*0.07);
printf("Reajuste ganho: %.2f\n",sal*0.07);
printf("Em percentual: 7 %%");
}
else{
printf("Novo salario: %.2f\n",sal+sal*0.04);
printf("Reajuste ganho: %.2f\n",sal*0.04);
printf("Em percentual: 4 %%");
}
return 0;
}
要注意一个地方,在printf()中双引号输出一个%时是输不出来的,要两个%%才输出一个%
优化算法
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
float sal,x;
cin>>sal;
if(sal>=0&&sal<=400.00)
x=0.15;
else if(sal>=400.01&&sal<=800.00)
x=0.12;
else if(sal>=800.01&&sal<=1200.00)
x=0.10;
else if(sal>=1200.01&&sal<=2000.00)
x=0.07;
else
x=0.04;
printf("Novo salario: %.2f\n",sal+sal*x);
printf("Reajuste ganho: %.2f\n",sal*x);
printf("Em percentual: %.0f %%",x*100);
return 0;
}
第一个代码中最后虽然只输出三个printf,但每个else中都有三个printf,出现了重复,以后出现重复的代码要想法变得简约!
这个判断不简洁,只需单边判断就可
深感cin类与printf类各有各的优势‘
为什么最后一行输出需要加一个\n,不然输出的格式没有%
这里需要用“%%”转译为%
#include [HTML_REMOVED]
using namespace std;
int main(){
double s;
float i;
cin >> s;
if(s>=0 && s<=400.00){
i=1.15;
}
else if(s>400.01 && s<=800.00){
i=1.12;
}
else if(s>800.01 && s<=1200.00){
i=1.10;
}
else if(s>1200.01 && s<=2000.00){
i=1.07;
}
else{
i=1.04;
}
printf(“Novo salario: %.2lf\n”,si);
printf(“Reajuste ganho: %.2lf\n”,si-s);
printf(“Em percentual: %d “,int((i+0.001-1)*100));
cout<<”%”;
}
写的很好
sal=400会出错