1. 程式人生 > >學分績點

學分績點

題目描述

北京大學對本科生的成績施行平均學分績點制(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);)

#include <iostream>

using namespace std;

int main(){
    int n;
    int credit[10], grade[10];
    
    while((cin >> n) && n != 0){
        for(int i = 0; i < n; i++)
            cin >> credit[i];
        for(int i = 0; i < n; i++)
            cin >> grade[i];
        
        float sum = 0;
        
        for(int i = 0; i < n; i++){
            if(grade[i] >= 90 && grade[i] <= 100)
                sum += (credit[i] * 4.0);
            if(grade[i] >= 85 && grade[i] <= 89)
                sum += (credit[i] * 3.7);
            if(grade[i] >= 82 && grade[i] <= 84)
                sum += (credit[i] * 3.3);
            if(grade[i] >= 78 && grade[i] <= 81)
                sum += (credit[i] * 3.0);
            if(grade[i] >= 75 && grade[i] <= 77)
                sum += (credit[i] * 2.7);
            if(grade[i] >= 72 && grade[i] <= 74)
                sum += (credit[i] * 2.3);
            if(grade[i] >= 68 && grade[i] <= 71)
                sum += (credit[i] * 2.0);
            if(grade[i] >= 64 && grade[i] <= 67)
                sum += (credit[i] * 1.5);
            if(grade[i] >= 60 && grade[i] <= 63)
                sum += (credit[i] * 1.0);
            //if(grade[i] < 60)
              //  sum += 0;
        }
        
        int credit_sum = 0;
        for(int i = 0; i < n; i++)
            credit_sum += credit[i];
        float GPA = sum / credit_sum;
        printf("%.2f\n", GPA);
    }
    return 0;
}