这是关于一个求绩点的代码

这是关于一个求绩点的代码,但问题在
1:课程数和需要输入的成绩数不一致(总需要多输入一次成绩),
2:本身的计算结果也存在误差。

#define _CRT_SECURE_NO_WARNINGS
#include
int main()
{
    int num; int i = 0;
    int  score[20]; double  grade[20];
    double jidian = 0;
    double sumgrade = 0;
    double sum = 0, item = 0;
    printf("欢迎使用!\n");
    printf("请输入课程数:/门");
    scanf("%d", &num);
    printf("请按照学分 分数输入\n");
    for (i = 1; i scanf("%lf %d\n", &grade[i], &score[i]);
        if (score[i] < 60)
            jidian = 0.0;
        else if (score[i] >= 60 && score[i] <= 63)
            jidian = 1.0;
        else if (score[i] >= 64 && score[i] <= 67)
            jidian = 1.5;
        else if (score[i] >= 68 && score[i] <= 71)
            jidian = 2.0;
        else if (score[i] >= 72 && score[i] <= 74)
            jidian = 2.3;
        else if (score[i] >= 75 && score[i] <= 77)
            jidian = 2.7;
        else if (score[i] >= 78 && score[i] <= 81)
            jidian = 3.0;
        else if (score[i] >= 82 && score[i] <= 84)
            jidian = 3.3;
        else if (score[i] >= 85 && score[i] <= 89)
            jidian = 3.7;
        else if (score[i] >= 90 && score[i] <= 100)
            jidian = 4.0;
        
        item = jidian * grade[i];
        sum = sum + item;
        sumgrade = sumgrade + grade[i];
        
    }

    double result;

    result = sum / sumgrade;
    printf("平均学分绩点%lf", result);





    return 0;
}



#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
    int num; int i = 0;
    int  score[20]; double  grade[20];
    double jidian[] = { 0.0, 1.0, 1.5, 2.0, 2.3, 2.7, 3.0, 3.3, 3.7, 4.0 };
    double sum = 0, item = 0;
    printf("欢迎使用!\n");
    printf("请输入课程数:/门");
    scanf("%d", &num);
    printf("请按照学分 分数输入\n");
    for (i = 0; i < num; i++)
    {
        scanf("%lf %d", &grade[i], &score[i]);
        if (score[i] >= 60 && score[i] <= 100)
            item = jidian[score[i] / 10 - 6] * grade[i];
        else
            item = 0;
        sum += item;
    }

    double result;
    result = sum / num;
    printf("平均学分绩点%lf", result);

    return 0;
}