c - 在我现有的代码中添加 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;
}
解决方案
程序需要在第二个循环中计算最大值、最小值和平均值,如下所示:
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 / count
is 将进行整数除法(返回向下舍入的整数),然后将其作为浮点数存储在average
变量中。
推荐阅读
- html - 响应式横幅 CSS/HTML
- php - wordwrap() 中颜色编码的解决方法是什么
- mysql - 插入 MySQL 十进制列时出现超出范围错误
- javascript - 如何正确编码 img src data:image/svg+xml 的内容?
- angular - NxWorkspace 应用于具有多个 Angular 客户端的现有 .Net Core API
- python - 如何正确更新 tkinter 标签元素
- typescript - 打字稿地图。基于类中键的值类型推断
- javascript - 如何在 JS 中将字符串/文本转换为 EBCDIC?
- python - 如何在 Keras 中结合 CountVectorizer 和 LSTM
- node.js - 使用来自 Azure Identity 和 nodejs 的访问令牌的 Azure Sql 连接