不管小学复赛,仍是初中、高中的noip复赛,都必须注意这个问题。
若是在代码中,书写格式错误,或者写了具体的文件路径,测试成绩必为0分。
因此请参加复赛的同窗,必定要注意这个问题。不然作对了,还0分,太冤了。
以一个题目为例。例子见:
http://cojs.tk/cogs/problem/problem.php?pid=1
加法问题
输入文件:aplusb.in 输出文件:aplusb.out
时间限制:1 s 内存限制:12 MB
这是一个经典的入门问题,经过此问题,你能够学会如何使用该评测系统。
【问题描述】
如今有两个实数,分别是A和B。请你从文件中读取A和B,计算它们的和A+B,并把它输出到文件中。(保留到整数)
【输入格式】
第一行:一个实数A
第二行:一个实数B
【输出格式】
第一行:一个整数C = A+B
【输入样例】
1
2
【输出样例】
3
1、Pascal
针对以上例子,提交的正确格式是:
php
1 program aplusb(input,output); 2 var a,b:real; 3 begin 4 Assign(input, 'aplusb.in'); Reset(input); //输入文件与标准输入流关联,并重定向 5 Assign(output, 'aplusb.out'); Rewrite(output); //输出文件与标准输出流关联,并重定向 6 // 7 readln(a); 8 readln(b); 9 writeln(a+b:0:0); 10 // 11 Close(input); Close(output); //最后别忘了关闭关联(文件)。 12 end.
因此,在考试以前的半小时左右时间内,就能够默写以下代码在记事本中,准备应用:
ide
1 program xxx(input,output); 2 var i,j:longint; 3 begin 4 //Assign(input, 'xxx.in'); Reset(input); 5 //Assign(output, 'xxx.out'); Rewrite(output); 6 // 7 //... 8 // 9 //Close(input); Close(output); 10 end.
而后在考试时,编写代码时,进行调试的时候,仍是键盘输入,屏幕输出。
编写代码,测试完成后,在提交时,把三处出现的“xxx”,修改成具体题目规定的名称。
特别注意:输入、输出的文件名以前,不能写上路径。不然就是0分。
再把begin后的第1、二行,及end前的一行,以前的注释符号“//”删除掉。
而后再把文件保存在指定的目录中。
2、C/C++
针对以上例子,提交的正确格式是:
测试
1 #include <stdio.h> 2 int main() 3 { 4 float i,j; 5 freopen("aplusb.in", "r", stdin); //输入文件直接与标准输入流关联 6 freopen("aplusb.out", "w", stdout); //输出文件直接与标准输出流关联 7 scanf("%f%f", &i, &j); //接下来,是对标准输入、输出流操做,就是说已经重定向 8 // 9 printf("%0.0lf\n", i+j); //因此没必要对具体文件操做,不用在前面加f了 10 fclose(stdin); fclose(stdout); 11 }
固然还有其它格式,好比:
spa
1 #include<stdio.h> 2 int main() 3 { 4 float a,b; 5 FILE *f; 6 7 f=fopen("aplusb.in","r"); 8 fscanf(f,"%f%f",&a,&b); 9 fclose(f); 10 11 f=fopen("aplusb.out","wb"); 12 fprintf(f,"%0.0lf",a+b,"\n"); 13 fclose(f); 14 return 0; 15 }
又好比:3d
1 #include <stdio.h> 2 int main() 3 { 4 float i,j; 5 FILE *fp1, *fp2; //FILE 在stdio.h中有声明 6 fp1 = fopen("aplusb.in","r"); //打开输入文件,用来读 7 fp2 = fopen("aplusb.out","w"); //打开输出文件,用来写 8 fscanf(fp1,"%f%f", &i, &j); //前面加f,从输入文件中读取 9 // 10 fprintf(fp2,"%0.0lf\n", i+j); //printf -> fprintf 在输出文件中写入 11 fclose(fp1); fclose(fp2); //这行听说省掉也不要紧,不过最好不要省 12 return 0; 13 }
这样都是能够的。可是,是第一种最方便。
因此在开考以前,先默写如下代码在记事本中:调试
1 #include <stdio.h> 2 int main() 3 { 4 int i,j; 5 //freopen("xxx.in", "r", stdin); 6 //freopen("xxx.out", "w", stdout); 7 8 //... 9 10 //fclose(stdin); fclose(stdout); 11 }
而后调试代码时,一如咱们平时作的那样,键盘输入,屏幕输出。
调试完成后,提交前,把两处“xxx”,修改成题目规定的文件名。
特别注意:输入、输出的文件名以前,不能写上路径。不然就是0分。
把相应的注释符号“//”删除掉。
再把文件保存到规定的目录下。
每一年有菜鸟不清楚这个写法而得0分的。但愿同窗们注意这个格式问题。
那为何不能写上路径?
由于在测试的时候,程序针对输入文件读取数据,再把输出文件中的数据与标准的答案数据进行比较,从而产生分数。
你若是写上路径,那程序就从具体路径中去读取文件数据,而这个具体路径中木有这个输入文件,那你就惨了。。。code
Top
blog