【问题标题】:How to calculate the average of the values in an array?如何计算数组中值的平均值?
【发布时间】:2020-12-02 14:39:40
【问题描述】:

我有一个程序,您可以在其中通过数组读取任意数量的值。问题是我的老师会测试这个程序,我无法预测她会输入多少个值。因此我不知道如何计算平均平均值,因为我无法对 number1、number2、number3 进行编程......不幸的是,我仍然是初学者,因此我不知道您是否可以使用存储的值进行计算在数组中。

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

int main()
{
    float datenbank[500];
    float messwert = 0;
    int anzahl = 0;

    do {
        printf("Geben sie bitte einen Messwert ein: ");
        scanf("%d", &datenbank);
        datenbank[anzahl] = messwert;
        anzahl++;
        printf("%d Messwerte wurden schon eingegeben\n", anzahl);
        printf("Wollen sie noch einen Messwert eingeben:\n 1) yes\n 2) no\n");

        switch(messwert) {
            case 1:
                yes;
                break;
            case 2:
                no;
                break;
            default:
                printf("Unverstaentliche Antwort");
                break;
        }

        if (messwert = yes) {
            printf("Geben sie bitte einen weiterern Messwert ein: ");
            scanf("%d", &datenbank);
        } else {
            printf("Zahl Nr. %d = %d\n"); 
        }
    }
    return 0;
}

【问题讨论】:

  • 需要一个数组来计算平均值吗?换句话说,您是需要存储每个值,还是只需要知道值的总和和数量?
  • 是的,不幸的是,我必须用数组来做。这就是任务

标签: arrays c if-statement


【解决方案1】:

您应该能够通过将总和除以数字计数来获得平均平均值

但是在您的代码中,您仍然有很多错误,例如 scanf("%d", &amp;datenbank);,您正在使用 Datenbank,但我相信您打算改用 scanf("%d", &amp;messwert)

这里还有一个问题,messwert 的类型是浮点数,你要求用户输入一个整数,你应该使用 scanf("%f", &amp;messwert) 而不是

另一个问题是printf("Wollen sie noch einen Messwert eingeben:\n 1) yes\n 2) no\n") 这行之后出现的问题,您要求用户输入 1 或 2,但没有让他放置答案,您应该在要求用户输入之后使用 scanf("%f", &amp;messwert)输入 1 或 2

您的代码中的另一个问题是switch(messwert),因为messwert 是float,您不能在switch 中使用它,您应该像switch((int)messwert) 这样将其转换为int,如果使用错误并输入1.9,您的程序应该只关心1 所以如果用户输入 1.9 那么他回答是

我不确定你输入的情况在 C 中没有一个叫做 yes 或 no 的东西你应该把它存储在一个值中你作为程序员给它一个含义所以让我们假设 yes 是 10 和 no是11应该是

case 1:
                messwert = 10;
                break;
case 2:
                messwert = 11;
                break;

现在我相信你希望它循环直到用户输入 no 你应该使用 while 循环而不是 if 语句所以 if (messwert = yes) 更改为 while(messwert = 10) 这是你使用 = 而不是 == 比较的另一个问题您没有比较 if messwert 等于 10 您说将 messwert 中的值更改为 10 它应该是 while(messwert == 10)

当用户输入 no 时,这将退出您想要给出平均数字的循环,这很好,您已经有了数字计数和值,您只需要总和

你可以使用 for 循环来做到这一点

for(int x = 0; x < anzahl; x++)
{
    sum += datenbank[x];
}

完成后,您只需将总和除以 anzahl 并打印值

这里有一些提示可以帮助您不需要输入的数字以及用户是否想在一个变量中继续

在我更正的代码中,没有任何内容要求用户输入另一个答案,如果他回答 3 on you want to continue question

【讨论】:

  • 感谢您的帮助。我会记住你的建议。
猜你喜欢
  • 2013-10-25
  • 1970-01-01
  • 2014-05-14
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多