Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.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语言计算用户输入的平均值_C_Average - Fatal编程技术网

用c语言计算用户输入的平均值

用c语言计算用户输入的平均值,c,average,C,Average,免责声明:我是编程新手 我正在解决这个问题 到目前为止,我写了这篇文章,它接受用户的输入,并根据这些输入计算平均值 #include <stdio.h> int main() { int n, i; float num[100], sum = 0.0, average; for(i = 0; i < n; ++i) { printf("%d. Enter number: ", i+1); scanf("%f",

免责声明:我是编程新手 我正在解决这个问题

到目前为止,我写了这篇文章,它接受用户的输入,并根据这些输入计算平均值

#include <stdio.h>

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

    for(i = 0; i < n; ++i)
    {
        printf("%d. Enter number: ", i+1);
        scanf("%f", &num[i]);
        sum += num[i];
    }
 average = sum / n;
printf("Average = %.2f", average);
    return 0;
}
我希望用户输入-1表示他们已经完成了数据输入;我不知道该怎么做。如果可能的话,有人能解释一下或者给我一个如何做的想法吗


谢谢大家!

你只需要平均值。无需存储为此输入的所有号码

您只需要将-1之前的数字输入存储在一个变量中,比如count,它在循环的每次迭代时递增,以及一个类似sum的变量来保存迄今为止输入的所有数字的总和

在您的程序中,您在使用n之前没有初始化它。n只有值不确定的垃圾

你甚至不需要平均变量。您可以在打印平均值的同时打印总和/计数

在-1停止阅读

如果不希望以后使用数据,则不需要数组num[]。
希望这会有所帮助

无需声明数组来存储输入的数字。您只需检查下一个输入的数字是否等于-1,如果不等于-1,则将其添加到总和中

请注意,根据分配,用户必须输入整数。平均值可以计算为整数或浮点数

程序可以按以下方式运行

#include <stdio.h>

int main( void )
{
    unsigned int n = 0;
    unsigned long long int sum = 0;

    printf("Enter a sequence of positive numbers (-1 - exit): ");

    for (unsigned int num; scanf("%u", &num) == 1 && num != -1; )
    {
        ++n;
        sum += num;
    }

    if (n)
    {
        printf("\nAverage = %llu\n", sum / n);
    }
    else
    {
        puts("You did not eneter a number. Try next time.");
    }

    return 0;
}

如果您需要将平均值计算为浮点数,那么只需将变量sum声明为具有double类型,并在printf语句中使用相应的格式说明符来输出平均值。

如果完全错误,我尝试使用If语句idk作为数据项的结尾,但我想表明我至少做了一个请将您的问题以文本形式发布。还添加与问题内联的代码。可能重复:由于在条件中用户必须输入整数-无需将其读取为%f,请使用int num和%d
#include <stdio.h>

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

    while(1) {

        printf("%d. Enter number: ", i+1); 
        scanf("%f", &x);

        if(x == -1)
            break;

        num[i] = x;
        sum += num[i];
        i++;

    }

    average = sum / i;

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

    return 0;
}
#include <stdio.h>

int main( void )
{
    unsigned int n = 0;
    unsigned long long int sum = 0;

    printf("Enter a sequence of positive numbers (-1 - exit): ");

    for (unsigned int num; scanf("%u", &num) == 1 && num != -1; )
    {
        ++n;
        sum += num;
    }

    if (n)
    {
        printf("\nAverage = %llu\n", sum / n);
    }
    else
    {
        puts("You did not eneter a number. Try next time.");
    }

    return 0;
}
Enter a sequence of positive numbers (-1 - exit): 1 2 3 4 5 6 7 8 9 10 -1

Average = 5