ACM 中OJ的运行问题?

Python012

ACM 中OJ的运行问题?,第1张

文件输入输出的话,可以用freopen语句

具体格式为:

文件输入:

freopen("D:/in.txt","r",stdin)

文件输出:

freopen("D:/out.txt","w",stdout)

第一个参数就是文件的路径和文件名,自己改就行了

只需要在main()函数一开始写着上freopen语句,其他代码不用变

如果只需要文件输入或者只需要文件输出,可以只加其中之一

比如

#include <stdio.h>

int main()

{

freopen("D:/in.txt","r",stdin)

int n

while (scanf("%d",&n)!=EOF)

{

printf("%d\n",n)

}

return 0

}

这样就是从in.txt读入,然后输出到屏幕。

然后对比的话,可以用windows下的cmd命令fc

“开始”菜单点击“运行”,输入“cmd”按回车,进入命令行模式

然后输入fc 文件名1 文件名2 就OK了

比如

fc out1.txt out2.txt

就会返回两个文件是否是一样的

这个地方的OJ即Online Judge,国内的话一般是学校用来做教学用途或者比赛用的,里面有大量的题目,也有不少ACM的经典题目

http://baike.baidu.com/link?url=m4j0ts583NkcQnvx0kuVEGiBaXJLsoYN1kv-eTQ9jxRUFpftYe83gQxERgpOYJNWCdeuJK6Et89X5bAfEhs21a

那么问题在于:

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

}