如何计算和提取stdin中的一些元素?
例如,len()在Python中很容易使用,但在C中不易使用?
我试图计算平均值,当用户输入例如:
1 3 5 7 8 10 11-1
我试过以下方法:

while (user_input != -1)
{
    total   += user_input;
    scanf ("%d", &user_input);

    //cannot work
    average = total /  ...
}
printf("Average = %f\n", average);

最佳答案

你要做你想做的事就得有个柜台它只是int counter = 0;在循环中:counter++

int counter = 0;
while (user_input != -1)
{
    total   += user_input;
    counter ++;
    scanf ("%d", &user_input);
}
average = total / counter;
printf("Average = %f\n", average);

显然,您必须检查scanf()是否至少返回了1
---编辑---
以下程序(对应于上一个程序)有效,并按要求工作不了解scanf()工作原理的人应该置身事外:
#include <stdio.h>

int main(int argc, char *argv[])
{
   int total = 0;
   float average = 0.0f;
   int userinput = 0;
   int counter = -1;
   while(userinput != -1){
      counter ++;
      if(scanf("%d",&userinput) == 1 && userinput != -1){
         total += userinput;
      }
   }
   average = ((float)total/(float)counter);
   printf("Average = %f", average);
   return 0;
}

输入:10 20 30 40 50 60 -1
输出:Average = 35

关于c - 如何从stdin中读取一行数字并计算其平均值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14424219/

10-08 22:47