gpt4 book ai didi

c - 需要在数组中找到最大、最小、平均数 - 没有声明大小

转载 作者:太空宇宙 更新时间:2023-11-04 08:12:59 25 4
gpt4 key购买 nike

所以我有这个数组,我需要找到最小值、最大值和平均值。我已经弄清楚如何获得 Max,我的代码看起来适合最小值,但它不起作用,所以我一定遗漏了一些东西。我还需要找到输入数字的平均值。我在这方面能找到的所有内容都只有在您设置了数组大小时才有效。我为数组设置了最大大小,但它没有被用户输入填充。几天来我一直在关注和测试它,但仍然无法弄清楚。

我知道平均来说我需要类似的东西(在顶部添加声明),但我不知道如何让它工作:

for (i = 0; i < numOfGrades; i++) {
sum += grades[i];
}
avg = (double) sum / numOfGrades;

这是我的其余代码:

#include <stdio.h>

int main(){

int grades [100];
int i = 0;
int small, big, input;

printf("Enter a series of grades. When done, enter any number above 100.\n\n");

while (i <= 100) { //while loop to set maximum for array
printf("Enter grade:");

if (scanf("%d", &input) == 1) {
if (input >= 0 && input <=100) {
grades[i] = input; //if good, add to array
i++;
}
else {
printf("\n\nExiting entry.\n");
printf("\n\nGrades entered:\n\n");
i = i - 1;
break; //exiting loop
}
}
}
int x, y;
for (x = 0; x <= i; x++) {
printf("Grade: %d\n", grades[x]); //print array
}
big = small = grades[0];
for (y = 0; y < i; y++) {
if (grades[y] > big) {
big = grades[y];
}
else if (grades[y] < small) {
small = grades[y];
}
}
printf("Highest number : %d\n", big);
printf("Smallest number: %d\n", small);

return 0;
}

最佳答案

在这里你做正确的事:

 for (x = 0; x <= i; x++) {

因为 x <= i将带你从 0 到 i 的值.然后在你的min/max循环你这样做:

 for (y = 0; y < i; y++) {

所以你要从 0 到 i-1 .您有 2 个选择:

  1. y <= i使上面的循环正确.
  2. 不要递减 iwhile循环(不要这样做 i = i - 1; )这样,i表示输入的数字个数,而不是输入数字的个数-1(您需要将 x <= i 固定为 x < i )。

这是一个活生生的例子。 http://ideone.com/ZEaDue

计算平均值,你做对了,可以重新使用i虽然:

int sum = 0, avg = 0;
for (y = 0; y < i; y++) {
sum += grades[y];
}
avg = (double) sum / i;
printf("Avg: %d\n", avg);

关于c - 需要在数组中找到最大、最小、平均数 - 没有声明大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37795132/

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