搞不好是因为上一次的结果影响了下一次的运算。
例如下面的测试数据:
4 4
-1 -1 -1 -1
-1 -1 -1 -1
-1 -1 -1 -1
-1 -1 9 -1
3 3
-1 -1 -1
-1 -1 -1
-1 -1 -1
那么问题在于:1 . 输入的是整数,没说明是正整数,所以说输入的可能是-100,那么上述代码就有逻辑问题。
2. i和N的值应该在while循环里面从新赋值为i=1,N=0。否则随着迭代的增加,i和N就会是上次计算的值了。
#include<stdio.h>
int main()
{
int i=1,n,N=0
while((scanf("%d",&n))!=EOF)
{
i=1, N=0
if(n>=1)
{
while(i<=n)
{
N=N+i
i++
}
}
else{ // n为负数,不是要continue,而也是要计算。比如n=-2,就计算1+0+(-1)+(-2)
while(i>=n)
{
N=N+i
i--
}
}
printf("%d\n",N)
}
return 0
}