NOIP易犯错误集锦
编程中常见的错误及如何解决

编程中常见的错误及如何解决编程是一门需要细致、耐心和专注的技能,即使经验丰富的程序员也难免会遇到错误。
在本文中,我将介绍一些常见的编程错误,并给出解决这些问题的方法。
这些错误不仅适用于初学者,同样也适用于有经验的程序员。
一、语法错误语法错误是编程中最常见的错误之一。
它们通常是由于遗漏了分号、括号或其他语法元素而导致的。
解决这些错误的方法是使用合适的开发工具,如集成开发环境(IDE),它们会在编辑代码时自动检查语法错误并给出提示。
此外,定期检查代码的缩进和括号匹配也是避免语法错误的好方法。
二、逻辑错误逻辑错误是编写出的代码逻辑不正确或不合理而导致的错误。
这些错误通常很难被发现,因为它们不会导致编译错误。
解决这些错误的方法是通过调试器逐步运行程序并检查代码的执行路径。
通过观察变量的值和程序的输出,可以找到并修复逻辑错误。
三、空指针异常空指针异常是在使用空对象时引发的错误。
它们通常是由于没有对对象进行初始化或在使用对象之前忘记检查对象为空而导致的。
解决这些错误的方法是使用空指针检查语句,如if语句或三元运算符。
在使用对象之前,始终检查对象是否为空,以避免空指针异常。
四、内存泄漏内存泄漏是指程序中的一块内存分配未能及时释放,导致内存资源的浪费和程序性能的降低。
解决这些错误的方法是在程序中显式地释放不再使用的内存,如关闭文件、释放动态分配的内存等。
另外,使用内存管理工具,如Valgrind,可以帮助检测和解决内存泄漏问题。
五、数组越界数组越界是指在访问数组元素时使用了超出数组边界的索引。
这种错误通常会导致程序崩溃或产生意外的结果。
解决这些错误的方法是在访问数组元素之前,始终检查索引是否在合法范围内。
对于循环遍历数组的情况,确保索引不会超出数组长度。
六、死循环死循环是指程序中的循环结构无法正常终止的情况。
这种错误通常是由于循环条件不正确或循环体内缺少终止条件而导致的。
解决这些错误的方法是仔细检查循环条件和终止条件,确保程序可以顺利退出循环。
NOIp2017提高组初赛被虐记+部分题目题面和解析

NOIp2017提⾼组初赛被虐记+部分题⽬题⾯和解析 今天下午本蒟蒻参加了NOIp 2017 的提⾼组初赛,回家对完答案后⼼情久久不能平息,故为之记。
全⽂⽂字皆为⼿打,真是累啊!希望能攒点RP吧……⼀、单项选择题 1.从( )年开始,NOIP竞赛将不再⽀持Pascal语⾔。
A.2020B.2021C.2022D.2023 解:上NOI官⽹查看公告即可…C 感想:我虽然看过这个公告,但是受某贴吧帖⼦的影响和极差的记忆⼒,最终选错了。
-1.5 2.在8位⼆进制补码中,10101011表⽰的数是⼗进制下的()A.43B.-85C.-43D.-84 解:补码-1 == 10101010 ,逐位取反得 01010101,即85,然⽽⼜因为这补码符号位是1,所以要加个负号…B 感想:普通的进制题 3.分辨率为1600*900、16位⾊的位图,存储图像信息所需的空间为()A.2812.5KBB.4218.75KBC.4320KBD.2880KB 解:==1600*900*16/2/1024KB…A 感想:浙江省技术学考题,只要记得除以8就⾏了。
4.2017年10⽉1⽇是星期⽇,1949年10⽉1⽇是()A.星期三B.星期⽇C.星期六D.星期⼆ 解:(117-49+17+x)%7==7%7…C 感想:要记住祖国的⽣⽇啊!然⽽我还是没记住它的⽇期,且忘记了上⾯的加⼗七(闰年(2000年不闰)) -1.5 5.设G是有n个结点、m条边(n<=m)的连通图,必须删去G的()条边A.m-n+1B.m-nC.m+n+1D.n-m+1 解:n-1==m-x…A 感想:解⽅程 6.若某算法的计算时间复杂度表⽰为递推关系式: T(N)=2T(n/2)+/NlogN T(1)=1 则该算法的时间复杂度为()A.O(N)B.O(N logN)C.O(N log²N)D.O(N²) 解:主定理得C -1.5 感想:没有记主定理结果推错了…有余⼒的话真该记⼀下主定理的 7.表达式a * ( b + c ) * d的后缀形式是()A.a b c d * + *B.a b c + * d *C.a * b c + * dD.b + c * a * d 解:画表达式树或⽤栈模拟即可…B 感想:要会模拟栈! 8.由四个不同的点构成的简单⽆向连通图的个数是()A.32B.35C.38D.41 解:不知道为什么但它就是选C (如果知道为什么欢迎来评论) -1.5 感想:要提⾼姿势⽔平啊! 9.将7个名额分给4个不同的班级,允许有的班级没有名额,有()种不同的分配⽅案 解:由于允许有的班级没有名额很⿇烦,那么我们给它+4使名额变成11,这样就是每个班级⾄少⼀个名额,问题就转化为隔板法了!答案为C(10,3)…D 感想:我好像就只会解数学题了…… 10.若 f[0] = 0 , f[1] = 1 , f[n+1] = ( f[n] + f[n-1] ) / 2,则随着i的增⼤,f[i]将接近于()A.1/2B.2/3C.(√5-1)/2D.1 解:最最简单的⽅法→枚举!会发现它原来越接近2/3…B 感想:暴⼒出奇迹! 11.设A和B是两个长为n的有序数组,现在需要将A和B合并成⼀个排好序的数组,请问任何以元素⽐较作为基本运算的归并算法最坏情况下⾄少要做()次⽐较A.n²B.n lognC.2nD.2n-1 解:设n=3、4,然后分别⽤6 6 6、6 6 6 6填充两次的数组,模拟得…D 感想:暴⼒出奇迹! 12.在n(n>=3)枚硬币中有⼀枚质量不合格的硬币(质量过轻或质量过重),如果只有⼀架天平可以⽤来称重且称重的硬币数没有限制,下⾯是找出这枚不合格的硬币的算法。
信息学奥赛(NOIP)常见问题汇总

信息学奥赛(NOIP)常见问题汇总
这里大家汇总了信息学奥赛(NOIP)常见问题,欢迎大家点击查看!
1、普及组的题目难度分配是怎样的?
第一题是相对简单的题,但是一般会有操作起来较麻烦,考虑情况很多,数据类型很大这样的特点来考你。
第二题是模拟,需要你抽象化问题,把问题的人工解决方法模拟出来,建立一个合适的数学模型,再用代码动手实验它。
模拟的题一般比较麻烦,出错多很正常,甚至3个小时你不一定能解决一道模拟。
第三题是一个跳板,一般是考不难的DP、图论、搜索,需要有足够的算法知识和做题经验。
第四题相对比较难吧,会考一些像“单源最短路”、“SPFA”这样的比较“高级”的算法,所用到的数据结构也会比较“高级”,对于技巧、经验和心理都是一个考验。
(对于各位新生来说,如果有难度,时间紧张,不妨放弃3、4两道题,第一题和第二题AC了也能有200分。
)
2、拿到试卷后该做些什么?
不要着急下手做题,先浏览一下试题,对题目的难易有个把握,哪些题目自己能做出来心里要有数。
先做相对简单的题,做题之前先在纸上写写画画,优化可不可行什么的都要试一下。
然后,看看哪些题目可以简单的骗分(比如没有答案就输出-1这样的),先把骗分程序写一个拷贝到对应文件夹下,等到考试最后你忙着做题就没时间写骗分程序了。
再有,有时候你看到一个题后脑子里蹦出另外一个相似的题。
这个时候切记生拉硬套把那道题的算法搬过来。
因为那样的话会把你引导入一个误区,很多人进入误区就出不来了,最后导致写出的代码总是WA,那时候再改就来不及了。
编程初学者的十个常见错误及如何避免

编程初学者的十个常见错误及如何避免编程是一项需要刻苦学习和实践的技能,初学者常常会犯一些常见的错误。
这些错误可能会导致程序无法正常运行,或者产生错误的结果。
在接下来的文章中,我们将讨论十个常见的编程错误,并提供一些解决方法,以帮助初学者避免这些错误。
1.语法错误语法错误是编程中最常见的错误之一,它们在编译或解释代码时会导致语法分析器报错。
这些错误包括拼写错误、缺失的逗号或分号,或者不正确的代码结构。
为了避免这些错误,初学者需要仔细检查他们的代码并了解编程语言的语法规则。
此外,使用集成开发环境(IDE)可以帮助自动检测这些错误。
2.拼写错误拼写错误是另一个常见的错误。
在编写代码时,初学者可能会犯常见的拼写错误,如将变量名称拼写错误或者忽略大小写。
为了避免这些错误,建议初学者仔细检查他们的代码,并使用有意义的变量和函数名称,以减少拼写错误的可能性。
3.访问超出数组范围当初学者使用数组时,他们可能会尝试访问超出数组边界的索引。
这种错误可能会导致程序崩溃或产生错误的结果。
为了避免这些错误,初学者需要注意数组的大小,并确保他们访问的索引在有效范围内。
4.不正确的变量作用域变量的作用域是指变量在代码中可见的范围。
当初学者在不了解变量作用域规则的情况下使用变量时,他们可能会犯错误。
例如,在一个循环中声明一个变量,并尝试在循环外部访问它。
为了避免这些错误,初学者需要理解变量作用域的概念,并正确地声明和使用变量。
5.逻辑错误逻辑错误是编程中最难调试和解决的错误之一。
它们发生在程序的逻辑或条件判断中,导致程序产生错误的结果。
为了避免这些错误,初学者应该仔细检查他们的逻辑以及条件判断,并使用调试工具来找出问题所在。
6.死循环死循环是一种无限循环,程序无法跳出循环而终止。
这通常是由于程序员在循环条件中使用了错误的判断条件或错误的循环终止条件引起的。
为了避免死循环,初学者需要确保他们在循环条件中使用正确的判断条件,并在必要时正确地更新循环计数器,以确保循环会终止。
NOIP初赛相关知识点及参考答案

相关知识点与参考答案一.单项选择题1、操作系统是系统软件的核心,是有效利用计算机的硬件、软件、数据等各种资源的好管家,它还向用户提供一套容易学习使用的操作命令。
常用的操作系统有:MS-DOS、PC-DOS、WINDOWS、UNIX、LINUX、OS/2等。
WORD、WPS是字处理软件,FOXBASE是数据库管理软件。
2、字长表示一个存储单元由多少位二进制数组成,八位机一个字长就是一个字节,十六位机一个字长可以表示两个字节。
字长位的多少,表明可访问存储器的地址多少。
3、操作系统一般存放在系统盘,计算机启动引导系统后,系统中的常用命令就驻留在内存中,方便用户使用计算机。
所以启动计算机引导系统就是把操作系统从系统盘中调入内存储器。
4、我们要清楚,快存实质是高速缓存,主存即内存,辅存也就是外存。
在这三种存储器中,以高速缓存最快,故此,通常常用的程序都是存放在高速缓存区里。
而主存的速度当然是比辅存要快了。
5、一般,对计算机工作有较大影响的有尘土、温度、湿度。
6、计算机的指令系统是由操作码与操作数组成。
7、通用寄存器的位数跟机器有关,取决于计算机的字长。
8、计算机能实现的全部指令的集合合称为指令系统。
执行各条指令所规定的操作是由指挥工作的控制器和执行运算的部件共同完成。
而控制器与运算器合起来称为CPU。
9、RAM(random access memory)随时读写存储器,供计算机工作时随机写入,计算机一旦断电后,其中的信息就会消失。
10、WINDOWS 9X是一种多任务的可视化的操作系统,它可以同时打开多个窗口,执行多个任务,而这些操作无论是应用程序还是文档编辑窗口,都可以利用图标、菜单或工具进行操作,即所见即所得。
所以称之为多任务图形方式的操作系统。
1-10参考答案:BBDCBBCABD11、常用的操作系统有:MS-DOS、PC-DOS、WINDOWS、UNIX、LINUX、OS/2等。
PASCAL是程序设计的语言系统软件。
NOIPCSP常见错误合集

NOIPCSP常见错误合集现在发现⼤部分问题并不是想不起来,⽽是写的时候慢慢就忽略了,所以要时刻保持清醒的头脑。
⽬前合计:\(28\) 条。
不易察觉的⼩数据范围要开 \(longlong\)(如答案求累加)。
整体开 \(longlong\) 过程量忘开爆掉。
数据范围随⼿抄错(数组开⼩简直太尝龟了)。
多次操作队列忘记清空。
多组数据数组忘记清空(现在主要是清空不彻底了...)。
\(\mathtt{(PS:md今年CSP-S被这个搞掉90pts)}\)忘记排序。
\(n,m\) 写反。
线段树范围*4。
图论范围为 \(n*m\)(点*每个点连的边数)。
\(bool\) 类型 \(flag\) 赋了其他值,例如 \(flag\) 取值为 \(1,2\) 时就会挂掉。
忘写q.pop();忘记return/break位运算过程中绕晕。
线段树忘记建树,同理其他初始化函数忘记调⽤。
写成 \(x+=y\%mod\)\(longlong\) 类型 \(\%d\) 输出。
单调队列 \(l,r\) 和其他的变量弄混,或者是没放在 \(q[\ ]\) ⾥⾯作为下标。
队列左右端点忘记初始值 \(l=1,r=0\) 表⽰空队列,常见于莫队和单调队列。
与上⼀条对应,队列初始化忘记放⼊⼀个元素 \(0\) ,表⽰从 \(0\) 开始转移。
字典树忘记初始化 \(tot=1\)。
KMP 所有的 \(i\) 相关转移本质都是 \(i+1\) 。
树上对应区间的 \(dfn\) 数组忘记嵌套,常见于线段树的修改/查询区间。
懒标记忘记清空。
存边的数组开的和点数⼀样⼤,俗称 \(n,m\) 不分。
遍历树求 \(dep\) 时 \(u,v\) 写反,也就是写成:\(dep_u=dep_v+1\) 。
记录类似 \(lst,nxt\) 数组时,不要忘记考虑为 \(0\) 的情况!在线段树或者树状数组⾥可能会死循环!break/return时记得看看是否有其他操作没进⾏完!⾃⼰根据题⽬发挥的写法处理边界等等⼀定要⼩⼼⼩⼼再⼩⼼!!取模的时候出现减法⼀定不要忘记加模数!!同时开了全局变量和局部变量,⽤的时候全局变量还是 \(0\)。
编程学习中的常见错误和问题解析
编程学习中的常见错误和问题解析随着计算机技术的不断发展,编程已经成为了一项广泛应用于各个领域的重要技能。
然而,学习编程并不是一件容易的事情,初学者常常会遇到各种错误和问题。
本文将介绍编程学习中常见的错误和问题,并给出相应的解析和解决方法。
一、语法错误语法错误是编程学习中最常见的错误之一。
在编写代码时,如果代码不符合编程语言的语法规则,就会导致语法错误。
这种错误通常会在编译或运行阶段被编译器或解释器检测到,并给出相应的错误提示信息。
解析:要避免语法错误,初学者应该认真学习所使用编程语言的语法规则,并在编写代码时仔细检查代码的语法正确性。
此外,可以借助集成开发环境(IDE)等工具,在编写过程中自动检测语法错误。
二、逻辑错误逻辑错误是程序中最常见的问题之一。
逻辑错误指的是当程序的执行结果与预期的结果不一致时,通常是由于编程思维不严谨或者对问题理解不准确导致的。
解析:要避免逻辑错误,学习者应该培养良好的编程思维和逻辑分析能力。
在编写代码之前,应该先仔细分析问题要求,明确程序的输入、输出和执行流程,避免犯下低级的逻辑错误。
此外,可以通过调试程序,使用断点和输出语句来跟踪程序的执行过程,找出问题所在。
三、算法设计错误算法设计错误是指在解决实际问题时,所设计的算法本身存在问题,导致程序无法正确运行或者效率低下。
解析:要避免算法设计错误,学习者应该深入理解常用的算法和数据结构,并学会根据实际问题选择合适的算法和数据结构。
在设计算法时,应该考虑边界情况和异常情况,并进行充分的测试和验证。
此外,可以阅读相关的算法和数据结构书籍,参加算法竞赛等活动来提升算法设计和分析能力。
四、调试和错误定位问题在编程学习中,调试是一项必不可少的能力。
初学者常常会遇到调试困难和错误定位问题,不知道如何找到问题所在。
解析:要提高调试和错误定位能力,学习者应该了解常用的调试工具和技巧,如使用断点、单步调试等来跟踪程序的执行过程,定位问题所在。
常见的编程错误及其解决方法
常见的编程错误及其解决方法编程是一项需要高度注意细节和准确性的任务。
即使是经验丰富的程序员,也难免会遇到一些常见的编程错误。
本文将介绍几种常见的编程错误,并提供相应的解决方法,希望能够帮助读者更好地解决这些问题。
一、语法错误语法错误是编程过程中最常见的错误之一。
无论是缺少分号、括号不匹配还是拼写错误,都可能导致代码无法正常运行。
下面是一些常见的语法错误及其解决方法:1. 缺少分号:在每行代码的末尾添加分号,以表示语句的结束。
2. 括号不匹配:检查每对括号是否正确匹配,并确保括号的顺序正确。
3. 拼写错误:仔细检查每个变量、函数和关键字的拼写,确保没有错误。
二、逻辑错误逻辑错误是编程过程中较为隐蔽的错误,它不会导致代码的编译错误,但会影响程序的运行结果。
下面是一些常见的逻辑错误及其解决方法:1. 数组越界:当访问数组时,确保索引值在数组范围内,可以使用条件语句或循环来进行判断。
2. 逻辑运算错误:仔细检查逻辑运算符的使用,特别是与、或、非等运算符的组合。
3. 循环陷阱:避免出现死循环或无限循环,确保循环条件能够正常终止。
三、空指针错误空指针错误是指在访问空指针引用时产生的错误。
空指针错误常见的原因有:未初始化指针、指针指向的内存已经被释放等。
以下是处理空指针错误的一些方法:1. 检查指针是否为空:在使用指针之前,通过条件语句检查指针是否为空,可以使用NULL宏(或nullptr)进行判断。
2. 初始化指针:在定义指针变量时,将其初始化为NULL或合适的值,以避免使用未初始化的指针。
3. 动态内存管理:在释放指针指向的内存后,将指针设置为空,以防止出现悬空指针。
四、死锁死锁是多线程编程中常见的问题,它指的是两个或多个线程互相等待对方释放资源导致程序无法继续执行的情况。
以下是几种常见的死锁情况及其解决方法:1. 加锁顺序:确保多个线程在获取锁的顺序上保持一致,以避免死锁的发生。
2. 超时机制:设置超时机制,如果在一定时间内无法获取到所需资源,则放弃当前操作,防止死锁的发生。
在编程中常见的5个逻辑错误及解决方法
在编程中常见的5个逻辑错误及解决方法在编程中,逻辑错误是最常见的问题之一。
这些错误会导致程序无法正确执行或产生异常结果。
解决这些逻辑错误需要耐心和仔细思考。
本文将介绍编程中常见的5个逻辑错误以及解决方法。
一个常见的逻辑错误是“断言错误”。
断言通常用于验证程序的假设,并在失败时抛出异常。
然而,当断言条件为假时,程序会崩溃并显示错误信息。
要解决这个问题,我们应该在编写程序时使用断言来验证假设,并确保它们能够正确运行。
同时,我们还应该及时处理断言失败的情况,以避免程序崩溃。
另一个常见的逻辑错误是“循环错误”。
循环是编程中常用的控制结构,但在处理循环时容易出现错误。
一个常见的循环错误是无限循环,即循环条件永远为真,导致程序无法终止。
为了解决这个问题,我们应该仔细检查循环条件,确保它们能够在合适的条件下终止循环。
还要注意循环中的计数器或迭代器是否正确更新,以避免循环控制逻辑错误。
第三个常见的逻辑错误是“条件错误”。
条件错误通常发生在条件语句中,导致程序选择了错误的路径。
这可能是由于条件的逻辑运算错误或错误的比较操作符等原因造成的。
为了解决条件错误,我们需要仔细检查条件语句,确保它们能够正确地评估为真或假。
我们还可以使用调试工具来逐步执行程序并检查条件的结果,以找到错误所在。
另一个常见的逻辑错误是“变量误用”。
变量误用通常发生在程序中使用了错误的变量或变量的赋值错误。
这可能导致程序计算错误的结果或执行错误的操作。
为了解决变量误用问题,我们应该在使用变量之前对其进行初始化,并确保将正确的值分配给变量。
我们还应该仔细检查变量的作用域,确保在正确的上下文中使用变量。
最后一个常见的逻辑错误是“函数调用错误”。
函数调用错误通常发生在错误的参数传递或错误的函数返回结果等情况下。
为了解决这个问题,我们需要仔细检查函数调用的参数是否正确,并确保函数的返回结果符合预期。
我们还可以使用调试工具来跟踪函数的执行路径,并检查函数调用的结果,以找到错误所在。
15个最常见的编程错误及其纠正方法
15个最常见的编程错误及其纠正方法一、越界错误越界错误指的是在数组或者字符串中访问一个不存在的下标或字符位置。
这种错误可能会导致程序崩溃或者产生无法预测的结果。
一种常见的纠正方法是在访问数组或者字符串中的元素前进行边界检查。
二、类型错误类型错误是指将一个变量赋值为错误的数据类型或者将一个数据类型的值传递给期望不同数据类型的参数。
这种错误可以通过在编译时进行类型检查来避免。
在运行时,可以使用类型转换来解决这种问题。
三、空指针错误空指针错误是指尝试访问一个空指针引用。
这种错误会导致程序崩溃。
一种纠正方法是在使用指针之前对其进行检查,以确保它不为空。
四、死循环死循环是指在程序执行时出现无限循环的情况,导致程序无法终止。
这种错误可以通过在循环中添加终止条件来纠正。
五、错误处理失败错误处理失败是指程序在遇到错误时无法正确处理,导致程序崩溃或者产生无法预测的结果。
这种错误可以通过在程序中捕获和处理异常来解决。
六、重复定义变量重复定义变量是指在程序中定义了两个或多个同名变量,导致程序产生无法预测的结果。
这种错误可以通过使用不同的变量名或者在不同的作用域中定义变量来避免。
七、逻辑错误逻辑错误是指程序的流程有误,导致程序产生不正确的结果。
这种错误可以通过对程序逻辑进行检查和调试来解决。
八、拼写错误拼写错误是指程序中的变量名或函数名的拼写有误,导致编译器无法识别或者运行时出现错误。
这种错误可以通过仔细检查代码并使用拼写检查工具来解决。
九、未初始化变量未初始化变量是指在使用变量之前没有对其进行初始化,导致变量的值不确定。
这种错误可以通过在定义变量时进行初始化来避免。
十、内存泄漏内存泄漏是指程序在运行时分配了内存,但没有释放,导致系统资源浪费和程序性能下降。
这种错误可以通过仔细检查程序并使用内存管理工具来解决。
十一、错误的参数传递错误的参数传递是指向函数传递错误的参数类型或参数数量,导致函数无法正确执行。
这种错误可以通过仔细检查函数参数并使用编译器的类型检查功能来避免。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
考生出错范例
5、忘写头文件
• 在dev c++中,如果不写头文件cstdio或者stdio.h,只会出现警告,不会报错。因 此在提交代码后,要仔细检查头文件是否写全,文件读写是否正确
会出现编译错误,得0分
6、C++万能头文件包含错误
NOIP容易犯错误汇总
低级错误
1. 2. 3. 4. 5. 6. 7. 未按题目要求添加文件读写 未按题目要求输出结果 int变量运算未用long long强制转换,数据溢出 浮点运算精度丢失 忘写头文件 C++万能头文件包含错误 字符串和字符不分
红色标注的,
只要犯了任意一条得分都为0分!!!
8.
• C++中有一个万能头文件stdc++.h • 如果在windows下,可以写成 #include<bits/stdc++.h> #include<bits\stdc++.h>
会出现编译错误,得0分
• 但是在linux下就必须写成
#include<bits/stdc++.h> • 因为比赛判分的机器是linux的,所以如果误写成了#include<bits\stdc++.h>编译 会出错得分为0
10、主函数没有return 0
无法满足判题要求,得0分
常识错误
1、穷举法超时
• 穷举法最大的风险就是会出现运算超时,我们可以对输入的数据进行预判,以确定是否 会超时。按考试评测机的配置,循环的次数的最大值可以大约在300000000(8个0)。
循环次数与耗时统计代码 linux版
循环次数与耗时统计代码 windows版
考生出错范例
3、int变量运算未用long long强制转换,数据溢出
在C/C++程序中,整数的类型默认为int,sizeof(20) 结果为4 int变量和int变量运算的结果,仍然会使用int来存储
考生出错范例
4、浮点运算精度丢失
• 比赛时,考虑到数据精度问题,应尽量采用数学变换避免浮点运算
2、数组定义过大
1. 在主函数外的全局变量,数组最大可以约为: 400000000(8个0)
为减少比赛的失误, 建议比赛时,若数 2. 在主函数内的局部变量,数组最大可以约为:500000(5个0) 组的长度超过1000, 统一将其定义在主 函数外面
数组定义过大
考虑到循环和其他辅助变量,如果定义的数组 元素的个数 >= 100000000(8个0)。建议考虑更改求解方法
9.
赋值号等于不分
格式化输入输出与类型不匹配
10. 主函数没有return 0
Hale Waihona Puke 常识错误1. 穷举法超时(若实在找不到好的方法,可以用穷举法保证基本分)
2. 数组定义过大
低级错误
1、未按题目要求添加文件读写
若没有文件读写或文件读写错误,得0分
考生出错范例
2、未按题目要求输出结果
注意输出字母的大小写;大小写错误得0分
7、字符串和字符不分
• 判断字符串中的某个字符是否与'A'相等
• 判断字符串是否与字符串”A”相等
出错范例
8、赋值与等于不分
• 赋值号 = • 等于判断 ==
9、格式化输入输出与类型不匹配
• char ---- %c
• int、short ---- %d
• long long ----- %lld • float • double ----- %f ----- %lf
谢谢观赏!