为了方便广大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; }