又练了一道语法题,题并不是很难,最简单的方法就是用几个if...else语句就能实现该题目要求,但输出一直错误,看到自己和标准答案的区别在于最后有无“%”
我的头文件是cstdio用来精确小数点,输入输出为scanf、printf
#include<cstdio>
int main(){
double n;
scanf("%lf",&n);
if(n>=0 && n <=400){
printf("salario: %.2lf\nReajuste ganho: %.2lf\nEm percentual: 15 %",n*1.15,n*0.15);
}else if(n<= 800){
printf("salario: %.2lf\nReajuste ganho: %.2lf\nEm percentual: 12 %",n*1.12,n*0.12);
}else if(n<= 1200){
printf("salario: %.2lf\nReajuste ganho: %.2lf\nEm percentual: 10 %",n*1.1,n*0.1);
}else if(n<= 2000){
printf("salario: %.2lf\nReajuste ganho: %.2lf\nEm percentual: 7 %",n*1.07,n*0.07);
}else if(n> 2000){
printf("salario: %.2lf\nReajuste ganho: %.2lf\nEm percentual: 4 %",n*1.04,n*0.04);
}
return 0;
}
查了资料显示,单个"%"不能输出,只能使用两个"%",才能够printf打印出"%"
同时,这个代码也有极大的冗余度
于是将上述代码进行处理,将多次输出简化,先进行判断并确定x的值,在进行输出处理。
#include<cstdio>
int main() {
double n,x;
scanf("%lf",&n);
if(n>=0&&n<=400)
x=0.15;
else if(n<=800)
x=0.12;
else if(n<=1200)
x=0.10;
else if(n<=2000)
x=0.07;
else
x=0.04;
printf("salario: %.2f\n",n*(1+x));
printf("Reajuste ganho: %.2f\n",n*x);
printf("Em percentual: %.0f %%",x*100);
return 0;
}