计算平均收益错误结果

时间:2018-04-01 14:11:16

标签: c

我写的用于计算数字总和的for循环不能正常工作。 程序使用动态分配的数组查找给定数字的平均值。

#include<stdio.h>
main()
{
    int no_of_nos;
    printf("Enter the number of numbers yuo want to do average : ");

    scanf("%d",&no_of_nos);

    int x[no_of_nos+1];
    int i;

    for(i=0;i<no_of_nos;i+=1)
    {
        printf("Enter the values for the element of the array : ");

        scanf("%d",&x[i]);
    }

    int sum=0,j;

    for(j=0;j<no_of_nos;j++)
    {
        sum = x[j] + x[j+1];
    }

    printf("The sum of the given numbers = %d \n",sum);

    float average = sum / no_of_nos;

    printf("The average of the given numbers = %0.2f",average);

}

3 个答案:

答案 0 :(得分:0)

你的第二个循环错了,它应该是:

    for( i=0; i<no_of_nos; i++ ) {
        sum += x[i];
    }

不需要另一个整数,'我'会做得很好。您可以通过在第一个循环之前移动总和然后在输入值时累加总和来进一步优化它。你需要阵列吗?

int sum = 0;

for( int i=0; i<no_of_nos; i++ ) {
    int x;
    printf("Enter the values for the element of the array : ");
    scanf("%d", x);
    sum += x;
}

答案 1 :(得分:0)

对于根据C标准的初学者,不带参数的函数main应声明为

int main( void )

使用x元素而不是no_of_nos+1元素声明数组no_of_nos是没有意义的。所以数组的声明应该看起来像

int x[no_of_nos];

实际上,如果您只需计算输入数字的平均值,则不需要数组。

最初将变量sum声明为float或double类型更好。否则这个表达式语句

float average = sum / no_of_nos;

没有多大意义,因为表达式sum / no_of_nos计算为整数表达式,在任何情况下表达式的结果都是整数。

但是,如果变量sum声明为例如float,则表达式sum / no_of_nos将具有float类型。

例如

float sum = 0;

//...

float average = sum / no_of_nos;

在下面的示范程序中比较平均值的两个输出。

#include <stdio.h>

#define N   2

int main(void) 
{
    int a[N] = { 1, 2 };

    int sum1 = 0;

    for ( size_t i = 0; i < N; i++ ) sum1 += a[i];

    float average = sum1 / N;

    printf( "The first average is equal to %0.2f\n", average );

    float sum2 = 0;

    for ( size_t i = 0; i < N; i++ ) sum2 += a[i];

    average = sum2 / N;

    printf( "The second average is equal to %0.2f\n", average );

    return 0;
}

节目输出

The first average is equal to 1.00
The second average is equal to 1.50

此循环

for(j=0;j<no_of_nos;j++)
{
    sum = x[j] + x[j+1];
}

也没有意义。写

就足够了
for(j=0;j<no_of_nos;j++)
{
    sum += x[j];
}

答案 2 :(得分:0)

可以在不使用数组的情况下编写计算给定数字平均值的程序。 以下程序查找给定数字的平均值,并给出最多两位小数的答案:

#include<stdio.h>
main()
{
    int n,i=0,j;
    float sum=0;
    printf("Enter the number of elements : ");
    scanf("%d",&n);

    for(;i<n;i++)
    {
        printf("Enter the number : ");
        scanf("%d",&j);
        sum = sum + j;
    }

    printf("The sum of the given numbers = %0.2f \n",sum);
    float average = sum / n;
    printf("The Average of the given numbers = %0.2f",average);
}