程序运行但不显示准确的数据

时间:2015-11-24 16:39:43

标签: c arrays

我正在为我的介绍完成一个程序。到C类,它运行没有错误或警告。问题是,当我输入所需的数据时,它不返回总和或平均值,它只返回零。我花了一天时间查看我的代码并检查每一行,但我找不到我做错了什么。我感谢你能给我的任何帮助。

作业:

编写一个名为sums()的函数,它有两个输入参数;一个名为Input of double的数组;和一个整数,它是存储在数组中的值的数量。计算数组中正值的总和和负值的总和。还要计算每个类别中的值的数量。通过输出参数返回这四个答案。编写一个主程序,读取不超过10个实数并将它们存储在一个数组中。输入0时停止读取数字。调用sums()函数并打印它返回的答案。还计算并打印正负集的平均值。对齐数字上的小数点

示例输入: -123.45 -234.56 576.1 -9.345 675.2 100 -10 1654.45 765.89 0(不在计算中)

示例输出:

YourName计划#8 CSCI1110

输入读取: 9999.9999 9999.9999 ...

统计: 描述总数:平均值: 正99 99999.9999 9999.9999 负99 99999.9999 9999.9999 总计99 99999.9999 9999.9999

---- PARTIAL SAMPLE OUTPUT: 负4 -377.3550 -94.3388

你的函数调用看起来像sums(input [],n,& sumPos,& sumNeg,& countPos,& countNeg)

我的代码:

#include <stdio.h>
#include <stdlib.h>

void sums(double arrayN[], int size, double *sumPositive, double *sumNegative,
          int *numberPositive, int *numberNegative)

{
    int i;
    for(i = 0; i < size; i++);

    {

        double currentNumber = arrayN[i];

        if (currentNumber < 0.0)

        {

            *sumNegative = *sumNegative + currentNumber;

            *numberNegative = *numberNegative + 1;

        }

        else

        {

            *sumPositive = *sumPositive + currentNumber;

            *numberPositive = *numberPositive + 1;

        }
    }

}

int main(void)

{

    const int ARRAY_SIZE = 10;
    double number[ARRAY_SIZE];
    double num;
    int all = 0;
    double positiveSum = 0;
    double negativeSum = 0;
    int countPositive = 0;
    int countNegative = 0;
    double sumAll = 0;
    double avgAll = 0;
    double avgPositive = 0;
    double avgNegative = 0;

printf("Enter Real Numbers:\n");

scanf("%lf", &num);

sums(number, all, &positiveSum, &negativeSum, &countPositive,
     &countNegative);

while(all < ARRAY_SIZE && num != 0)

{

    number[all] = num;

    all++;

    scanf("%lf", &num);
}



sumAll = positiveSum + negativeSum;

if(all != 0)

    avgAll = sumAll / all;

if(countPositive != 0)

    avgPositive = positiveSum / countPositive;

if(countNegative != 0)

    avgNegative = negativeSum / countNegative;

printf("Kevin C. Ellis   Program #8  CSCI 1110  Section 3\n");
printf("\nStatistics:\n");
printf("Desc\t\tNumber\t Total:\t\tAverage:\n");
printf("Positive\t%d\t%.4lf\t%.4lf\n",countPositive, positiveSum, avgPositive);
printf("Negative\t%d\t%.4lf\t%.4lf\n",countNegative, negativeSum, avgNegative);
printf("Overall\t\t%d\t%.4lf\t%.4lf\n", all, sumAll, avgAll);

return 0;


}

1 个答案:

答案 0 :(得分:1)

在功能&#34;总和&#34;删除&#39;;&#39;在for循环之后,否则循环将无法正常工作

for(i = 0; i < size; i++);

删除&#39;;&#39;

for(i = 0; i < size; i++)