首页 > 解决方案 > 在我现有的代码中添加 3 个基本功能

问题描述

我有一个我一直在构建的成绩簿程序,它运行良好,但现在我想将 3 个新函数插入到现有代码中。我无法绕开我需要采取的逻辑路径来使其工作。我需要一种简单的方法来获得最后打印的最高、最低和平均成绩。这是我的程序...

#include <stdio.h>    
#include <stdlib.h>    
#include <ctype.h>    
#define MAX_GRADE_COUNT 200

int main() {
    int grade[MAX_GRADE_COUNT];
    int i;
    int count = 0;
    char continueResponse;

    printf("Welcome to Gradebooker!\n\n");
    for(i = 0; i < MAX_GRADE_COUNT; i++) {
        printf("Please enter grade (0-100): ");
        scanf(" %d", &grade[i]);
        count++;
        printf("Do you have more grades to enter?(Y/N): ");
        scanf(" %c", &continueResponse);
        if(toupper(continueResponse) != 'Y') {
            printf("\n >> Thank you for using Gradebooker! <<\n");
            break;
        }
    }
    printf("\n\nCurrent Gradebooker listings: \n\n");

    for(i = 0; i < count; i++) {
        printf("\t%5d\n", grade[i]);
    }

    return 0;
}

标签: c

解决方案


程序需要在第二个循环中计算最大值、最小值和平均值,如下所示:

int sum = 0;
int minimum = INT_MAX;
int maximum = 0;
for(i = 0; i < count; i++) {
    printf("\t%5d\n", grade[i]);
    sum += grade[i];
    if(grade[i] < minimum) minimum = grade[i];
    if(grade[i] > maximum) maximum = grade[i];
}
float average = (float)sum / count;
printf("min grade: %d\n", minimum);
printf("max grade: %d\n", maximum);
printf("average: %f\n", average);

最小值以大于列表中所有值的值开始(INT_MAX例如,int可以采用的最大可能值)。然后,对于数组中的每个等级,如果它小于当前minimum变量中的等级,它会用该等级替换它。这样minimum最终将包含最小的等级。

最大值相同,但相反。

对于平均,它累加所有成绩的总和(sum需要在开始时初始化为0),然后将其除以最后的成绩数。这给出了 中的算术平均值average

使用float,它将平均值计算为浮点数(因此平均值可以是非整数)。需要它,(float)sum / count以便它首先将转换(转换)sum为浮点数,然后对其进行浮点除法。否则, with sum / countis 将进行整数除法(返回向下舍入的整数),然后将其作为浮点数存储在average变量中。


推荐阅读