coding中那些不得不说的愚蠢的mistake(1)

来源:互联网 发布:淘宝手机海报尺寸2017 编辑:程序博客网 时间:2024/05/16 23:57

让我们重回案发现场······

当时我是要做一道素数环,就是这道题来着:http://blog.csdn.net/cqbzlytina/article/details/72844258  第一次写好之后连样例都过不了,调了很久,没发现什么问题。我去问一个朋友,把他的代码跟我的对照了一下,写得都一样。当时的代码是长这样的:

#include<cstdio>#include<cmath>int a[19],k;bool b[19]={0},sum,n[11],num=1;int q;
bool b[19]={0},sum,n[11],num=1;

bool p(int s){ for(int i=2;i<=sqrt(s);i++) if(s%i==0) return 0; return 1; }void print(){ for(int i=1;i<q;i++) printf("%d ",a[i]); printf("%d\n",a[q]);}int search(int r){ for(int i=1;i<=q;i++) if(!b[i]&&p(i+a[r-1])) { a[r]=i; b[i]=1; if(r==q&&p(1+a[q])) { sum++; if(sum==n[num]&&num<=k) { num++; print(); } } else search(r+1); b[i]=0; }}int main(){ scanf("%d %d",&q,&k); for(int i=1;i<=k;i++) scanf("%d",&n[i]); a[1]=1; b[1]=1; search(2); printf("%d",sum);}

看起来很正常啊。后面再去找老师调的时候,老师才看几行就拉我过来,看前面定义的那几行。

于是乎,我深刻地体验到了什么叫做豁然开朗。

bool b[19]={0},sum,n[11],num=1;

给第3行来个特写,sum用来记数的,定义的bool,存储用的n数组,定义的bool,记录顺序(找不到形容词了)的num,仍然定义的bool,摊手无奈/

这个故事告诉我们:检查代码要从开头开始用肉眼检查一遍,虽然重要的函数那部分更容易出错,但也不要急着去调试,先看看有没有这种愚蠢的错误,再调试。

原创粉丝点击