標籤:online judge 九度 java
-
題目描述:
-
北京大學對本科生的成績施行平均學分績點制(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);)
-
範例輸入:
-
54 3 4 2 391 88 72 69 56
-
範例輸出:
-
2.52
-
import java.text.DecimalFormat;import java.util.Scanner; public class Main{ public static void main(String args[]) { Scanner cin=new Scanner(System.in); DecimalFormat decimal_format=new DecimalFormat("#.00"); int total_course; int i,j,k; int [] course_GPA=new int[10]; int [] course_Grades=new int [10]; while(cin.hasNext()) { int total_GPA=0; float sum=0; total_course=cin.nextInt(); for(i=0;i<total_course;i++) { course_GPA[i]=cin.nextInt(); total_GPA+=course_GPA[i]; } for(j=0;j<total_course;j++) { course_Grades[j]=cin.nextInt(); } for(k=0;k<total_course;k++) { if(course_Grades[k]>=90) { sum+=4.0*course_GPA[k]; } if((course_Grades[k]>=85)&&(course_Grades[k]<=89)) { sum+=3.7*course_GPA[k]; } if((course_Grades[k]>=82)&&(course_Grades[k]<=84)) { sum+=3.3*course_GPA[k]; } if((course_Grades[k]>=78)&&(course_Grades[k]<=81)) { sum+=3.0*course_GPA[k]; } if((course_Grades[k]>=75)&&(course_Grades[k]<=77)) { sum+=2.7*course_GPA[k]; } if((course_Grades[k]>=72)&&(course_Grades[k]<=74)) { sum+=2.3*course_GPA[k]; } if((course_Grades[k]>=68)&&(course_Grades[k]<=71)) { sum+=2.0*course_GPA[k]; } if((course_Grades[k]>=64)&&(course_Grades[k]<=67)) { sum+=1.5*course_GPA[k]; } if((course_Grades[k]>=60)&&(course_Grades[k]<=63)) { sum+=1.0*course_GPA[k]; } if(course_Grades[k]<60) { sum+=0.0*course_GPA[k]; } } //System.out.println("總績點"+sum+" "+"總學分"+total_GPA); System.out.print(decimal_format.format(sum/total_GPA)); System.out.print("\n"); } }}/************************************************************** Problem: 1133 User: Carvin Language: Java Result: Accept****************************************************************/
轉載的C++:
#include<stdio.h>double ScorePoint(int a) { if(a>=90) return 4.0; else if(a>=85) return 3.7; else if(a>=82) return 3.3; else if(a>=78) return 3.0; else if(a>=75) return 2.7; else if(a>=72) return 2.3; else if(a>=68) return 2.0; else if(a>=64) return 1.5; else if(a>=60) return 1.0; else return 0; } int main() { int i,n,sum;//n 總的課程數 sum 所有所有課程學分之和 double psum;//所有學科績點之和 int a[10],b[10]; //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin); while(scanf("%d",&n) != EOF) { sum = 0; psum = 0; //輸入課程學分 for(i = 0;i < n;i++){ scanf("%d",&a[i]); //所有課程學分之和 sum += a[i]; } //輸入課程的實際得分 for(i = 0;i < n;i++){ scanf("%d",&b[i]); //一門課程的學分績點=該課績點*該課學分 psum += ScorePoint(b[i]) * a[i]; } printf("%.2f\n",psum/sum); } return 0; } /************************************************************** Problem: 1133 User: Carvin Language: C++ Result: Accepted Time:0 ms Memory:1020 kb****************************************************************/
-
題目1133:學分績點 (C++/Java)