具体格式为:
文件输入:
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
}