如何更改C中的构造

时间:2018-04-03 15:32:55

标签: c arrays

我正在为编程课程的入门工作。 这是我教授的问题:

更改程序而不添加其他循环,因此它确定输入的成绩是否有效,如果没有,则显示错误消息并一直询问,直到输入有效成绩。更改程序,因此它计算得分A,B,C,D和F的等级数。不要使用堆叠的if或if-else结构。不要使用else if格式。输出一个表格,列出每个字母等级的数量。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>

/*Ask the user to enter 10 test scores.
The pass mark is 70%.
Calculate the average score, and count how many
of the students have passed the test.
*/

#define SCORES_COUNT 10
#define BAD_SCORE 60
#define PASSING_SCORE 70
#define GOOD_SCORE 80
#define EXCELLENT_SCORE 90

int main()
{
    int scores[SCORES_COUNT];
    int i, sum = 0, sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0;

    for (i = 0; i < SCORES_COUNT; i++)
        {
        printf("Enter score for student %i: ", i + 1);
        scanf("%i", &scores[i]);
        if (scores[i] > 100 || scores[i] < 0)
            {
            printf("\n\tERROR: Invalid number! Enter a score above zero and below one hundred!\n\n");
            printf("Enter score for student %i: ", i + 1);
            scanf("%i", &scores[i]);
            }
        }

    for (i = 0; i < SCORES_COUNT; i++)
    {   
        if (scores[i] >= EXCELLENT_SCORE)
        {
            sum++;
        }
        if (scores[i] >= GOOD_SCORE && scores[i] < EXCELLENT_SCORE)
        {
            sum1++;
        }
        if (scores[i] >= PASSING_SCORE && scores[i] < GOOD_SCORE)
        {
            sum2++;
        }
        if (scores[i] >= BAD_SCORE && scores[i] < PASSING_SCORE)
        {
            sum3++;
        }
        if (scores[i] < BAD_SCORE)
        {
            sum4++;
        }
    }

    printf("\nGrades Distribution\n");
    printf("\nA:  %i", sum);
    printf("\nB:  %i", sum1);
    printf("\nC:  %i", sum2);
    printf("\nD:  %i", sum3);
    printf("\nF:  %i\n", sum4);

    system("pause");
    return 0;   
}

该程序运行正常,但我的老师告诉我不要使用堆叠if或if-else结构。因为我是初学者,这是我知道怎么做的唯一方式。

有人可以告诉我如何更改所有if结构,或者如何在不使用任何if结构的情况下获得相同的结果?

0 个答案:

没有答案