考研机试 60.学分绩点
时间:2021/03/09
一.题目描述
北京大学对本科生的成绩施行平均学分绩点制(GPA)。既将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。 公式如下: 实际成绩 绩点 90——100 4.0 85——89 3.7 82——84 3.3 78——81 3.0 75——77 2.7 72——74 2.3 68——71 2.0 64——67 1.5 60——63 1.0 60以下 0 1.一门课程的学分绩点=该课绩点*该课学分 2.总评绩点=所有学科绩点之和/所有课程学分之和 现要求你编写程序求出某人A的总评绩点(GPA)。
输入描述
第一行 总的课程数n(n<10); 第二行 相应课程的学分(两个学分间用空格隔开); 第三行 对应课程的实际得分; 此处输入的所有数字均为整数。
输出描述
输出有一行,总评绩点,精确到小数点后2位小数。(printf("%.2f",GPA);)
题目链接
https://www.nowcoder.com/practice/a0c09a7e0da04e728810a8aca7226b7b?
tpId=40&tqId=21391&rp=1&ru=%2Fta%2Fkaoyan&qru=%2Fta%2Fkaoyan%2Fquestion-ranking&tab=answerKey
二.算法
题解
这道题没有什么特别的知识点,使用判断和循环语句就能解决,唯一要注意的是读题:60以下的绩点是0,不是0.1,好坑。此外要学会使用printf语句输出指定小数位数的结果。
代码
import java.util.Scanner; public class Main{ public static void main(String[] args){ //读取输入 Scanner in = new Scanner(System.in); int n = in.nextInt(); double[] credit = new double[n]; //学分 double[] g = new double[n]; //绩点 for(int i = 0; i < n; i++){ credit[i] = in.nextDouble(); } for(int i = 0; i < n; i++){ double grade = in.nextDouble(); if(grade >= 90 && grade <= 100){ g[i] = 4; }else if(grade >= 85 && grade <=89){ g[i] = 3.7; }else if(grade >= 82 && grade <= 84){ g[i] = 3.3; }else if(grade >= 78 && grade <= 81){ g[i] = 3; }else if(grade >= 75 && grade <= 77){ g[i] = 2.7; }else if(grade >= 72 && grade <= 74){ g[i] = 2.3; }else if(grade >= 68 && grade <= 71){ g[i] = 2; }else if(grade >= 64 && grade <= 67){ g[i] = 1.5; }else if(grade >= 60 && grade <= 63){ g[i] = 1; }else if(grade < 60){ g[i] = 0; } } //计算学分绩点 double count1 = 0; //所有学科绩点之和 double count2 = 0; //所有课程学分之和 for(int i = 0; i < n; i++){ count1 += (g[i] * credit[i]); count2 += credit[i]; } double GPA = count1 / count2; //输出总评绩点 System.out.printf("%.2f", GPA); } }
努力,向上,自律