关于c++语法小知识

又练了一道语法题,题并不是很难,最简单的方法就是用几个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;
}

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值