gpt4 book ai didi

c - 特定代码的输出不正确。 (最大、最小、等级_扫描仪)

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:19 24 4
gpt4 key购买 nike

最近几天我一直在努力解决这个问题,但没有成功。目标是找到总分、平均分、最低分和最高分并显示它们。

这是我的代码,除了最小值、最大值和等级输入之外的所有内容似乎都有效

// Includes printf and scanf functions
#include <stdio.h>

int main(void) {
unsigned int counter; // number of grade to be entered next
int grade; // grade value
int total; // sum of grades entered by user
float average; // average of grades
int maxi; // Max grade
int mini; // min grade
int i;
int max;
int min;

maxi = 1;
mini = 1;

printf("Enter number of grades: "); // User enters number of grades
scanf("%d", &counter); // Countss number of grades
//scanf("%d%d", &min, &max);

for (i = 1; i <= counter; i++) {
printf("Enter grade %d: ", i); // User enters grade
scanf("%d", &grade); // Counts grades
//scanf("%d",&counter);

if (grade < 0 || grade > 100) {
printf("Please enter a number between 0 and 100!\n"); // Lets user know if input is invalid
i--;
break;
}
else {
total = total + grade;
average = (float)total / counter; // NOTE: integer division, not decimal
}
}

max = (grade < maxi) ? maxi : grade;
min = (grade > mini) ? mini : grade;

printf("Class average is: %.3f\n", average); // Displays average
printf("Your maximum grade is %d\n", max); // Displays Max
printf("Your minimum grade is %d\n", min); // Displays minimum
printf("Sum: %d\n", total); // Displays total
}

输出:

Enter number of grades: 2
5
7
Enter grade 1: 4
Enter grade 2: 3
Class average is: 3.500
Your maximum grade is 3
Your minimum grade is 1
Sum: 7

出于某种原因,当我启动程序时,我必须输入一些数字,在本例中是 5 和 7,然后它会提示我“输入成绩”,然后它会从那里计算所有内容。此外,最大值似乎始终是我输入的最后一个等级,并且当输入中没有任何位置为 1 时,最小值显示为 1。我应该为最大值/最小值使用条件运算符,我尝试查找它并读这本书,但他们只使用像 a、b、c 等字母。这让我很困惑,所以我不确定我是否做错了。

难道这就是把一切都搞砸的原因吗?如果不是我做错了什么?

另一件事是,如果我想让计数器有 1-100 的输入,我想我需要一个 While 循环,对吗?

编辑:刚刚意识到我必须删除最大值和最小值的 scanf。这就是为什么我必须先输入 2 个数字

最佳答案

我认为有两个主要问题

  • 变量 total 未初始化,因此第一次出现 total = total + grade; 会调用未定义的行为。

    您必须将其显式初始化为 0

  • 相同的变量 grade 用于保存重复的输入。循环后,grade 将只保留最后输入的值。

    您需要使用数组来存储输入和比较,或者在循环内比较和更新最小值和最大值。

关于c - 特定代码的输出不正确。 (最大、最小、等级_扫描仪),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52499456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com