算法题集锦3:学分绩点

不羁的心 提交于 2020-03-03 15:49:05

链接:学分绩点
来源:牛客网

问题描述:

在这里插入图片描述

解题思路:

此题的解法不难,按照题上的说法顺着思路往下写即可

1、写一个函数,可以根据成绩返回绩点。(对应代码GPA函数)
2、用数组存储输入的学分和成绩,遍历数组求得答案

总评绩点 = 所有学科绩点之和 / 所有课程学分之和
一门课程的学分绩点 = 该课绩点 * 该课学分

解题代码:

import java.util.Scanner;

public class Main1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextInt()){
        int n=sc.nextInt(); //输入总共有多少门课程
        int[] gradeCredit=new int[n];//存储每门课学分的数组
        int[] grade=new int[n];//存储每门课分数的数组

        for(int i=0;i<n;i++){
            gradeCredit[i]=sc.nextInt(); //读入输入的第二行
        }
        for(int i=0;i<n;i++){
            grade[i]=sc.nextInt();//读入输入的第三行
        }
        System.out.printf("%.2f",averageCredit(gradeCredit,grade));
    }
}
    public static double averageCredit(int[] gradeCredit,int[] grade){
        double sum=0.0;//表示所有课程加起来应得的学分和
        double allClassCredit=0.0; //表示该学生能实际得到的学分绩点
        for(int i=0;i<grade.length;i++){
            allClassCredit+=gradeCredit[i]*GPA(grade[i]);
            sum+=gradeCredit[i];
        }
        return allClassCredit/sum;
    }
    //求每门课的成绩对应的学分绩点
    public static double GPA(int grade){
        double gpa = 0.0;
        if(grade>=90&&grade<=100)
            gpa=4.0;

        if(grade>=85&&grade<=89)
            gpa=3.7;

        if(grade>=82&&grade<=84)
            gpa=3.3;

        if(grade>=78&&grade<=81)
            gpa=3.0;

        if(grade>=75&&grade<=77)
            gpa=2.7;

        if(grade>=72&&grade<=74)
            gpa=2.3;

        if(grade>=68&&grade<=71)
            gpa=2.0;

        if(grade>=64&&grade<=67)
            gpa=1.5;

        if(grade>=60&&grade<=63)
            gpa=1.0;

        if(grade<60)
            gpa=0.0;

        return gpa;
    }
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!