zcmerlin 2016-07-07 17:03 采纳率: 70%
浏览 1280
已采纳

C语言编译通过,输入后报错

找了些题做,编译通过,但在输入后就报错中止,不知道哪里有问题,请大家帮帮忙看下哪里出错了

 #include <stdio.h>

//10名学生考试,根据考试成绩判定及格线,及格线为10的整数倍,至少保证60%的学生及格,若所有人均高于60分,则及格线为60

int main(void)
{
    float score[10];
    int i, k, level;

    for (i = 0; i < 10; i++)     /*依次输入学生成绩*/
    {
        scanf_s("%.1f", &score[i]);
    }

    for (level = 90; level >= 0; level -= 10)     /*从90分开始向下递减*/
    {
        k = 0;
        for (i = 0; i < 10; i++)     /*判定高于此分数线的人数*/
        {
            if (score[i] > level)
                k++;
        }
        if (k >= 6)
            break;
    }

    if (level > 60)     /*如果所有学生分数大于60,则及格线为60*/
        level = 60;

    printf("level is %d", level);

    system("pause");
    return 0;
}

图片说明

  • 写回答

7条回答 默认 最新

  • folk_ 2016-07-08 01:05
    关注

    大概按照你的意思改了一下
    程序有很多细节没有处理好
    首先是输入时数组越界
    其次循环控制条件
    最后输出的结果可能不是你想要的结果
    你可以自己去思考一下是怎么回事
    希望对你有帮助
    #include
    #include

    int main(void)
    {
    float score[10];
    int i, k, level;
    //循环控制条件应为i for (i = 0; i {
    scanf("%1f", &score[i]);
    }
    k = 0;//应放在程序外面 否者每次循环都会初始化为零
    for (level = 90; level >= 0; level -= 10) /*从90分开始向下递减*/
    {
    for (i = 0; i < 10; i++) /*判定高于此分数线的人数*/
    {
    if (score[i] > level)
    k++;
    }
    if (k >= 6)
    break;
    }

    if (level > 60)     /*如果所有学生分数大于60,则及格线为60*/
        level = 60;
    
    printf("level is %d", level);
    
    system("pause");
    return 0;
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?