特长生校考时血的教训

文章列举了在编程竞赛中常见的错误,如非法访问数组、文件输入输出操作的位置错误、使用带后缀名的文件、包含不适宜的头文件以及数组边界问题。建议使用正确的代码习惯和注意数组定义与操作,同时提醒在比赛中不要过度依赖特定的编译器优化设置。
摘要由CSDN通过智能技术生成

6月份各大高中特长生校考已经展开,在此过程中有许许多多前辈因各种各样低级错误无缘心仪高中,这其中最普遍的就是本地编译器的问题。

现在我来带大家再来看一下本地编译器(DEV C++)宽容到什么地步。

int a[1000];
a[-1]=1010;
cout<<a[-1];

明显a是不可能有-1号单元格的,但我们可以在本地运行一下,它是可以正常输出的。

离了个大谱。

下面我们来总结一些常见错误。

1.

ios::sync_with_stdio(false);
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);

这个错得十分明显,文件输入输出必须放在所有东西上面的。

正确代码长这样:

freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
ios::sync_with_sydio(false);

2.

freopen("a.in.txt","r",stdin);
freopen("a.out.txt","w",stdout);

这个是万万不可取的,使用的文件不能再带后缀名。

正确代码长这样:

freopen("a.in","r",stdin);
freopen("a.out","w",stdout);

3.

#include<iostream>
#include<cstdio>
#include<windows.h>

这个就十分恐怖,第一个,这样子写很多个头文件费时间不说,万一调用到什么它不认得的函数那就惨了。还有最重要的一点!不能用windows.h!本地查不出,交上去不给过的!

最完美的应该是这样:

#include<bits/stdc++.h>

用万能头就行了。

4.

char a[1000];
cin>>a+1;
cout<<strlen(a);

这个不能说查不出来吧,只是代码一长就很难找,这个代码它只会输出0。

正确代码长这样:

char a[1000];
cin>>a+1;
cout<<strlen(a+1);

5.

这里只是做个提醒,定义数组如果有多个长度相同的数组,尽量用常量定义,这样只需要修改常量就能修改所有数组,不会有哪个忘记改了的情况。

就像这样:

const int N=1e4+10;
int a[N],b[N],c[N];

还是祝愿大家在比赛考试时不要范这样的错误。

不过最后我还是想在这里藏一个火车头,相信赛场上没人用得了吧,平时用用也就算了。

#pragma GCC optimize(3)
#pragma GCC target("avx")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值