我想从文件中读取数字,每个数字都在一个新行上,它们是十进制数字,其中一些是负数。我想将它们存储到一个数组中,并计算文件中有多少个数字。 我知道以下代码计算数字,但它只计算文件中的正数。我已经尝试将'0'更改为负值,但它们不起作用,它不会给出错误但它总是不能给出正确的输出。我如何计算负数和正数?
int main()
{
double a[MAX];
double num;
int n = 0;
scanf("%lf", &num);
while (num >=0) {
a[n] = num;
n++;
scanf("%lf", &num);
}
}
答案 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);
}