将n个整数添加到非固定数组

时间:2014-10-21 17:23:35

标签: c arrays for-loop while-loop eof

我现在一直在寻找解决方案,但却找不到任何东西。

我需要一个程序,它接受用户输入(随机数量的整数)直到EOF,总结它们并让我回到平均值。

我尝试使用数组,但我不确定这是我的错误。 我设法让它使用固定大小的数组。但我需要一个灵活的......这甚至可能吗?

这是我到目前为止所得到的:

#include <stdio.h>

int main()
{
  int count = 3;
  int numbers[count];
  long sum;
  float average;
  int i;
  for (i = 0; i < count; i++) {
    while (scanf("%d", &numbers[i]) != EOF) {
        sum += numbers[i];
    }
  }
  average = (float)sum/count;
  printf("Average of your numbers is: %.2f\n",average);
  return 0;
}

4 个答案:

答案 0 :(得分:1)

如果您只是想找到平均值,那么您不需要实际存储这些数字。

int count = 0;
int sum = 0;
int num = 0;
double avg = 0.0;

for(; scanf("%d", &num) != EOF; sum += num, count++)
    ;

avg = sum / count;

答案 1 :(得分:0)

用OP检查后,他不介意输入是否存储在数组中。在这种情况下,您可能需要考虑这个:

int num=0;
int sum=0
int count=0;

do
{
    printf("Enter number:");
    scanf("%d", num);

    sum += num;
    count++;

    printf("Proceed(y/n)?");
    scanf("%c", proceed);

}while(proceed == 'y');

此代码可能有点麻烦,您需要输入&#39; y&#39;继续输入,但这可以解决您当前输入n个输入的问题。

答案 2 :(得分:0)

如果已填充现有数组,则需要重新分配数组的大小。这应该有效:

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

int main() {
    int input;
    int size = 0;
    int* arr = NULL;
    int* temp = NULL;

    long sum = 0;
    float average = 0;

    do {
        scanf("%d", &input);
        size++;

        temp = (int*) realloc(arr, sizeof(int)*size);

        if(temp != NULL) {
            arr = temp;
            arr[size-1] = input; 
        }

        sum += input;
    } while(input != 0);

    average = sum / size;
    printf("sum: %lu\n", sum);
    printf("average: %f\n", average);
    return 0;
}

答案 3 :(得分:-3)

如果您所做的只是添加数字

,则不必是数组
int number = 0;
int count  = 0;
while(scanf("%d", &number)!=EOF)
{
    sum += number;
    count++;
}

这也永远不会有效,因为计数应该是一个常数

int count = 3;
int numbers[count];