先上代码:
#include<stdio.h>
#include<math.h>
double result=0,sum=0;
typedef struct subject
{
double chengji;
double xuefen;
double jidian;
double quanzhong;
}SUBJECT,*PS;
int main()
{ int i,j,k,n;
SUBJECT a[25];
PS b[25];
for(i=0;i<20;i++)
{
b[i]=&a[i];
}
printf("请输入共有几门课程(最多不超过25门):");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入第%d门课程的成绩与对应学分(中间以空格分开)",i+1);
scanf("%lf%lf",&b[i]->chengji,&b[i]->xuefen);
b[i]->jidian=(b[i]->chengji-50)/10;
sum+=b[i]->xuefen;
}
for(i=0;i<n;i++)
{
b[i]->quanzhong=b[i]->xuefen/sum;
result+=b[i]->quanzhong*b[i]->jidian;
}
printf("结果为:%.2f\n",result);
return 0;
}
运行截图:
与教务系统比对:
算法:每一门课程的(单科成绩-50)/10 算到该门课程的 单科绩点。
然后,计算权重:(该门课程学分 / 所有课程总学分)
最后,单科绩点*权重,再累加就得到期末平均绩点。
其实最难的还是算法,知道了就不难实现了。我认为在这里知道算法比程序实现更重要(校规校纪要考的哦!)。