Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C程序中实现avg_C - Fatal编程技术网

在C程序中实现avg

在C程序中实现avg,c,C,但是我不希望出现这样的提示:您希望用户能够向您的应用程序发出信号,表明他们已经完成了元素的输入。因此,您可以从n=0开始,然后在每次用户提供新元素时递增它,并在用户执行您可以检测到的“操作”时退出循环 首先,假设用户通过在Windows上按Ctrl-Z或在Unix上按Ctrl-D来关闭输入。输入将因EOF而失败-scanf()将不再返回1。因此,您可以检查以下内容: printf("\nPlease Enter How many Number you want?\n");

但是我不希望出现这样的提示:您希望用户能够向您的应用程序发出信号,表明他们已经完成了元素的输入。因此,您可以从
n=0
开始,然后在每次用户提供新元素时递增它,并在用户执行您可以检测到的“操作”时退出循环

首先,假设用户通过在Windows上按Ctrl-Z或在Unix上按Ctrl-D来关闭输入。输入将因EOF而失败-
scanf()
将不再返回
1
。因此,您可以检查以下内容:

  printf("\nPlease Enter How many Number you want?\n");
  scanf("%d",&n);

作为一名学习者,我建议您考虑伪代码而不是实际代码

上面的答案真的很好。我只想补充几点:

作为一名程序员,你必须教硬件你想要它做什么。思考:

  • 你有没有告诉你的程序需要输入多少个数字?它是有限的还是无限的
  • 您的程序如何知道何时停止接收输入
  • 我希望您同意,如果用户 不输入任何内容或只输入
    0
  • 如果用户输入字符,会发生什么
  • 另一件重要的事情是,您需要清楚地指定为什么不想在代码中执行某些操作?这可能有助于我们更好地了解这些限制。


    如果你以前考虑过这些事情并提出问题,你会学得更好。社区是来帮助你的。

    “我不想那样。”。那么您希望
    n
    从哪里来?目前,从未设置
    n
    。在使用它之前,必须将其设置为某个值:
    while(i您从未设置
    n
    ,即使您解决了这个问题,您仍然在进行整数除法,这显然是您不希望的(因为
    average
    声明为
    double
    )。如果不在while之前输入n值,则不会对while循环进行限制。或者从另一个意义上说,您没有告诉程序要取多少个数字或何时停止循环。因此,您需要在while循环本身之前取n值。
      printf("\nPlease Enter How many Number you want?\n");
      scanf("%d",&n);
    
    #include <stdio.h>
    
    
    int main(int argc, char** argv)
    {
        int n = 0;
        int sum = 0;
    
        printf("\nPlease Enter the elements one by one. ");
    #ifdef _WIN32
        printf("Press Ctrl-Z to finish.\n");
    #else
        printf("Press Ctrl-D to finish.\n");
    #endif
        for (;;)
        {
          int number;
          int result = scanf("%d", &number);
          if (result == 1) break;
          sum = sum + number;
          n ++;
        }
        
        double average = (double)sum / n;
        
        printf("\nSum of %d number(s) = %d\n",n, sum);
        printf("Average of %d number(s) = %.2f\n",n, average);
        return 0;
    }
    
    #include <stdio.h>
    
    void skip_input_till_next_line(void)
    {
        for (;;) {
            char c;
            if (scanf("%c", &c) != 1) break;
            if (c == '\n') break;
        }
    }
    
    int main(int argc, char** argv)
    {
        int n = 0;
        int sum = 0;
    
        printf("\nPlease Enter the elements one by one. ");
    #ifdef _WIN32
        printf("Press Ctrl-Z to finish.\n");
    #else
        printf("Press Ctrl-D to finish.\n");
    #endif
        for (;;)
        {
          int number;
          int result = scanf(" %d", &number);
          if (result == EOF) break;
          if (result != 1) {
              // We've got something that is not a number
              fprintf(stderr, "Invalid input. Please try again.\n");
              skip_input_till_next_line();
              continue;
          }
          sum = sum + number;
          n ++;
        }
        
        double average = (double)sum / n;
        
        printf("\nSum of %d number(s) = %d\n",n, sum);
        printf("Average of %d number(s) = %.2f\n",n, average);
        return 0;
    }