爱敲代码的迷糊蛋 2023-10-08 21:52 采纳率: 100%
浏览 6
已结题

救大命,我是真的不知道错哪了

devc++上将sample带入运行成功,但提交练习题时仍旧通不过,uu们快帮我康康呀,题目:Description
输入一个正整数 repeat (0<repeat<10),做repeat 次下列运算:
输入一个职工的月薪 salary,输出应交的个人所得税tax(保留2 位小数)。
tax = rate * (salary-850)
当 salary <= 850 时,rate = 0;
当 850 < salary <= 1350 时,rate = 5;
当 1350 < salary <= 2850 时,rate = 10;
当 2850 < salary <= 5850 时,rate = 15;
当 5850 < salary 时,rate = 20;
Input
见sample
Output
见sample
Sample Input
2 200 2000
Sample Output
tax=0.00 tax=115.00
HINT
当结果为0时,你的程序可能输出的是 -0.00,请判断为0时,使用printf("tax=0.00\n");


#include<stdio.h>
int main()
{
    int repeat,i,salary;
    double tax,r;
    scanf("%d",&repeat);
    for(i=0;i<repeat;i++){
        scanf("%d",&salary);
        if( salary <= 850){
            r=0;
        }else if( 850<salary&&salary<=1350 ){
            r=0.05;
        }else if(1350 < salary &&salary<= 2850 ){
            r=0.1;
        }else if(2850 < salary &&salary<= 5850){
            r=0.15;
        }else{
        
            r=0.2;
    }
        tax = r*(salary-850);
        if(r==0){
            printf("tax=0.00\n");
        }else{
        
        printf("tax=%.2f\n",tax);
    }
    }
    return 0;
 } 


  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-10-08 22:07
    关注

    引自强大而免费的微信小程序:皆我百晓生。


    根据你提供的代码,有几个问题可能导致程序在提交练习题时不能通过测试:

    1. 循环次数:根据题目要求,输入一个正整数 repeat,代表要做 repeat 次运算。在你的代码中,已经正确读取了 repeat 的值,但循环次数有误。应将循环条件改为 i < repeat,而不是 i <= repeat

    2. 个人所得税计算:根据题目描述,个人所得税 tax 的计算公式应为 tax = r * (salary - 850),而在你的代码中,将 salary - 850 放在了括号外面。应将计算公式修改为 tax = r * (salary - 850)

    3. 零税判断:根据题目的提示,当个人所得税为 0 时,应使用 printf("tax=0.00\n") 输出,但在你的代码中,应判断 tax 是否等于 0,而不是判断 r 是否为 0。将判断条件修改为 if (tax == 0)

    下面是修改后的代码:

    #include<stdio.h>
    
    int main()
    {
        int repeat, i, salary;
        double tax, r;
    
        scanf("%d", &repeat);
        for (i = 0; i < repeat; i++) {
            scanf("%d", &salary);
            if (salary <= 850) {
                r = 0;
            } else if (850 < salary && salary <= 1350) {
                r = 0.05;
            } else if (1350 < salary && salary <= 2850) {
                r = 0.1;
            } else if (2850 < salary && salary <= 5850) {
                r = 0.15;
            } else {
                r = 0.2;
            }
            
            tax = r * (salary - 850);
            if (tax == 0) {
                printf("tax=0.00\n");
            } else {
                printf("tax=%.2f\n", tax);
            }
        }
    
        return 0;
    }
    

    请按照上述修改建议对你的代码进行更改,并再次尝试提交练习题。希望这可以帮助你通过测试!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月21日
  • 已采纳回答 12月13日
  • 创建了问题 10月8日

悬赏问题

  • ¥15 centos7系统下abinit安装时make出错
  • ¥15 hbuildex运行微信小程序报错
  • ¥50 HAL ADCDMA单次触发转换
  • ¥15 关于#python#的问题:我知道这个问题对你们来说肯定so easy
  • ¥15 wpf datagrid如何实现多层表头
  • ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
  • ¥20 网站后台使用极速模式非常的卡
  • ¥20 Keil uVision5创建project没反应
  • ¥15 mmseqs内存报错
  • ¥15 vika文档如何与obsidian同步