【洛谷学习自留】p8823 期末考试成绩

解题思路:

        简单的分情况讨论题目,由于最多只会重新计算一次分数,甚至不需要使用递归。

        但正常情况下,我们一般会先从大于90的情况依次往下判断,但为了提高性能,我们可以这样处理。

        根据题目可知,当x<60时,会进行一次开方乘十的运算,然后用运算结果重新进行一次计算,那么我们不如直接进行一次是否小于60的判断,判断完了,如果小于60,就进行sqrt(x),然后再进行是否大于等于90的判断。判断完成后再判断是否大于等于60。

        这样说起来感觉很绕,直接上代码。

代码实现:

import java.util.Scanner;
import static java.lang.Math.sqrt;


public class p8823 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double score = sc.nextFloat();
        double answer = compute(score);
        String str = String.format("%.1f",answer);    //用于格式化输出小数点后1位。
        double result = Double.parseDouble(str);
        System.out.println(result);
    }

    //用来判断的方法
    public static double compute(double score){

        double result = 0;
        if(score<60){                       //先判断是不是小于60。
          score=(int)sqrt(score)*10;
        }                                   //如果score<60,将计算过的score传回来。

                                
        if(score>=90){                      //判断完成,用score进行接下来的判断。如果                    
                                              score>=90,result=4.0;
            result = 4;

        }
        else if(score>=60){
            result = 4-(90-score)/10;       //如果score>=60,result=(4-(90-score)/10);
        }

        return result;                      //如果score还是小于60,不修改result的默认值0;
        
    }
}

  • 19
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用 SQL 的 CASE-WHEN 语句来替换地块类别。下面是一个例子: ``` UPDATE table_name SET dklb = CASE WHEN dklb = 10 THEN '承包地块' WHEN dklb = 21 THEN '自地' WHEN dklb = 22 THEN '机动地' WHEN dklb = 23 THEN '开荒地' WHEN dklb = 99 THEN '其他集体土地' ELSE dklb END ``` 这句话就是说更新表中所有dklb字段中等于10 的为承包地块,等于21的为自地,等于22的为机动地,等于23的为开荒地,等于99的为其他集体土地,其他的保持不变。 当然,还可以在查询中使用CASE-WHEN,来达到替换字段值相同的目的,如下 ``` SELECT dklb, CASE WHEN dklb = 10 THEN '承包地块' WHEN dklb = 21 THEN '自地' WHEN dklb = 22 THEN '机动地' WHEN dklb = 23 THEN '开荒地' WHEN dklb = 99 THEN '其他集体土地' ELSE '其他' END AS dklb_name FROM table_name; ``` 如上,就是选取表中的dklb字段和替换后的dklb_name,其中dklb_name是用原来的dklb字段来替换达到相同的目的,在这里是只是展示目的,并没有对原始数据进行修改 ### 回答2: 可以使用SQL的CASE WHEN语句来替换地块类别字段dklb的值。根据题目描述,我们需要将字段dklb的值替换为相应的地块类别。 假设表名为land,可以使用以下SQL语句来实现替换操作: ``` UPDATE land SET dklb = CASE WHEN dklb = 10 THEN '承包地块' WHEN dklb = 21 THEN '自地' WHEN dklb = 22 THEN '机动地' WHEN dklb = 23 THEN '开荒地' WHEN dklb = 99 THEN '其他集体土地' ELSE '未知类别' END; ``` 上述语句中,CASE WHEN语句会根据字段dklb的值进行判断,当满足条件时,将对应的地块类别字符串赋值给dklb字段。如果字段值不在给定的条件范围内,则会被替换为'未知类别'。 执行以上SQL语句后,字段dklb的值将被替换成相应的地块类别,实现了对地块类别的替换操作。 ### 回答3: 可以使用SQL的CASE WHEN语句来替换地块类别字段。 CASE WHEN语句的语法如下: CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE result END 根据题目要求,我们可以使用如下的CASE WHEN语句来替换地块类别字段‘dklb’: SELECT CASE WHEN dklb = 10 THEN '承包地块' WHEN dklb = 21 THEN '自地' WHEN dklb = 22 THEN '机动地' WHEN dklb = 23 THEN '开荒地' WHEN dklb = 99 THEN '其他集体土地' ELSE '未知' END AS 地块类别 FROM my_table; 以上语句将根据‘dklb’字段的值,返回对应的地块类别。如果‘dklb’的值为10,则返回‘承包地块’,如果‘dklb’的值为21,则返回‘自地’,以此类推。如果‘dklb’的值不在这些条件中,则返回‘未知’。 注意:将my_table替换为实际的表名。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值