C从文件中读取负数和正数到数组

时间:2016-05-03 04:52:57

标签: c arrays file

我想从文件中读取数字,每个数字都在一个新行上,它们是十进制数字,其中一些是负数。我想将它们存储到一个数组中,并计算文件中有多少个数字。 我知道以下代码计算数字,但它只计算文件中的正数。我已经尝试将'0'更改为负值,但它们不起作用,它不会给出错误但它总是不能给出正确的输出。我如何计算负数和正数?

 int main()
    {
            double a[MAX];
            double num;
            int n = 0;

            scanf("%lf", &num);
            while (num >=0) {
                a[n] = num;
                n++;
                scanf("%lf", &num);
            }
    }

2 个答案:

答案 0 :(得分:3)

你的逻辑是有缺陷的。一找到第一个非正数就会中断循环。此外,您不确定不使用UITableView越界。你需要使用:

UITableView

如果要计算所有非零数字,请使用:

a

由于您将在while ( n < MAX && scanf("%lf", &num) == 1 ) { if ( num >= 0 ) { a[n] = num; n++; } } 循环的条件下读取数字,因此请在循环前删除while ( n < MAX && scanf("%lf", &num) == 1 ) { if ( num != 0 ) { a[n] = num; n++; } } 行。

答案 1 :(得分:0)

while (num >=0)

一旦读取负数,此循环条件就会中断。只要文件中没有更多数字要读取,您就可以结束循环,并计算过程中的正数:

int main()
{
        double a[MAX];
        double num;
        int n = 0;

        while (n < MAX && scanf("%lf", &num) == 1) {
            a[n] = num;
            n++;
        }

        // to count positives, zeros, negatives
        int np, nz, ng;
        np = nz = ng = 0;
        for (int i = 0; i < n; i++) {
            if (a[i] > 0) np++;
            else if (a[i] == 0) nz++;
            else ng++;
        }
        printf("%d %d %d\n", np, nz, ng);
}