我正在尝试学习C而我正在尝试编写一段执行以下操作的代码:
这是我的代码:
#include <stdio.h>
int main(void)
{
int n, i, count=0;
double x[1000];
scanf("%d", &n);
for (i=0; i<n; i++)
scanf("%lg", &x[i]);
for (i=0; i<n; i++)
{
if (x[i] < 0)
{
count++;
continue;
};
x[i-count]=x[i];
};
n -= count;
for (i=0; i<n; i++)
printf("%d: %g\n", i, x[i]);
return 0;
}
我被告知我应该使用以下代码替换我的第二个for循环:
int j=0
...
for (i=0; i<n; i++)
{
if (x[i] < 0)
{
count++;
continue;
};
if (i > j)
x[j] = x[i];
j++;
};
有人可以解释为什么后一个代码更好?
答案 0 :(得分:1)
如果i==j
,则您要为自己分配一个元素:不是错误,而是(小)浪费精力。
如果您真的想要改进这一点,请避免将负值放在数组中。