為了方便廣大BUAA的同志們計算自己的GPA績點,我用C語言寫了一個簡單的北航GPA計算程序。
不過這個程序運行的結果與實際大體一致,卻仍然有些許誤差(我自己的測試誤差基本在0.1以內)。本人菜雞一枚,找不到問題所在,如果有哪位同志發現問題歡迎在下面評論(~ ̄▽ ̄)~
/*此程序用於北航GPA計算 百分制學科輸入“成績【空格】學分【回車】” 五級制學科,與百分制學科輸入類似,“優秀”“良好”“中等”“及格”“不及格”分別對應成績“101”“102”“103”“104”“105” 輸入“-1”代表輸入完畢,按回車即可得到GPA*/ //此程序測試時與實際GPA基本一致,但有少許誤差,請以實際GPA為准 //如果有哪位同志知道誤差產生原因可以在下面評論呦~~ (~ ̄▽ ̄)~ #include<stdio.h> int main() { int grade[100]={};//用於儲存單科成績 double point[100]={};//用於儲存單科學分 double gpa[100]={};//用於儲存單科gpa int i; double GPA; double sum1=0;//學分績點和 double sum2=0;//學分和 for(i=0;i<100;i++) { scanf("%d",&grade[i]); if(grade[i]==-1) { break; } scanf("%lf",&point[i]); } int n=i; for(i=0;i<n;i++) { if(grade[i]==101) { gpa[i]=4; } else if(grade[i]==102) { gpa[i]=3.5; } else if(grade[i]==103) { gpa[i]=2.8; } else if(grade[i]==104) { gpa[i]=1.7; } else if(grade[i]==105) { gpa[i]=0; } else { gpa[i]=4.0-((100.0-grade[i])*(100.0-grade[i])*3.0)/1600.0; } sum1=sum1+gpa[i]*point[i]; sum2=sum2+point[i]; } GPA=sum1/sum2; printf("%lf",GPA); return 0; }