【问题标题】:arithmetic average of an array with range -5 to 5 in cc中范围-5到5的数组的算术平均值
【发布时间】:2017-10-18 00:34:15
【问题描述】:

我想从一个数组中生成算术平均值,但只能使用某个范围内的值(这里从 -5 到 5)

这段代码可以吗?

#include <stdio.h>

int main()
{
int n, i;
float num[100], sum = 0.0, average;

printf("Enter the numbers of elements: ");
scanf("%d", &n);

while (n > 10 || n <= 0)
{
    printf("Error! number should in range of (1 to 10).\n");
    printf("Enter the number again: ");
    scanf("%d", &n);
}

for(i = 0; i < n; ++i)
{
    printf("%d. Enter number: ", i+1);
    scanf("%f", &num[i]);
    if( num[i]< 5 && num[i]>-5){
sum+= num[i];

}

average = sum / n;
printf("Average = %.2f", average);

return 0;

编辑:很抱歉,我一定是错过了暂时复制整个代码。

我知道这是一个简单的问题,但我似乎无法让它发挥作用。也许睡眠不足让我发疯了

【问题讨论】:

  • 你运行它时发生了什么?
  • n 的值是多少?你如何初始化sum?对于某些指定的输入,预期结果是什么,实际结果是什么?请花一些时间到read about how to ask good questions 学习如何创建Minimal, Complete, and Verifiable Example
  • 如果可以,那就没问题了。如果没有,请向我们展示整个代码并告诉我们您的错误。
  • "这段代码可以吗?" -- 没有。n 没有更新,没有检查范围内没有元素的数组,...跨度>
  • @Badda 它可以工作,没关系 -- 不!

标签: c arrays math


【解决方案1】:

你的代码错了。

而且它的格式很差,这就是为什么你看不出它是错误的原因:

您的格式错误的代码:

...

for(i = 0; i < n; ++i)
{
    printf("%d. Enter number: ", i+1);
    scanf("%f", &num[i]);
    if( num[i]< 5 && num[i]>-5){
sum+= num[i];

}     // it looks as if the for loop end here, but it doesn't

average = sum / n;
printf("Average = %.2f", average);

return 0;
}     // the for loop actually ends here

同样的代码格式正确:

for (i = 0; i < n; ++i)
{
  printf("%d. Enter number: ", i + 1);
  scanf("%f", &num[i]);

  if (num[i]< 5 && num[i]>-5) {
    sum += num[i];
  }

  average = sum / n;
  printf("Average = %.2f", average);

  return 0;
}                  // <<< the for loop ends here

正确的代码(查看 cmets 以获得解释):

...
int nbofnumbers = 0;   // number of numbers in the interval [-5,5]

for (i = 0; i < n; ++i)
{
  printf("%d. Enter number: ", i + 1);
  scanf("%f", &num[i]);

  if (num[i]< 5 && num[i]>-5) {
    nbofnumbers++;
    sum += num[i];
  }
}                              // for loop must end here

average = sum / nbofnumbers;   // we divide by the number of numbers
                               // in the interval [-5,5], not by n
printf("Average = %.2f", average);

return 0;
...

【讨论】:

    猜你喜欢
    • 2015-06-01
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多