我现在一直在寻找解决方案,但却找不到任何东西。
我需要一个程序,它接受用户输入(随机数量的整数)直到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;
}
答案 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];