C语言相关及算法题常见错误总结

之前写程序总结的一些东西,比较私人化,记录在这。后面继续补充。

1.不要再太过纠结于输入了。比如怎样想结束就结束,或用字符a来匹配int形来结束。搞来搞去好复杂。可以很简单地用输入数量限制。

2.命名时如果有114 abc和114 abcd,可能编译114 abcd后运行的是114 abc。因为空格。

3.数组千万不要开小了。特别是在读取文件时,而你又不知道长度最大为多少,不要想当然地,很容易把数组开小了。。错误难查。。

4.读文件时,fscanf太容易出错了,还是用getc比较好,特别是需要一行一行处理时,fscanf太容易太容易出错了。。。

5.用fgets时需要定义MAXLINE,尽量定义大些吧,不要出现的小错误不易查出来。特别是有中文时,你以为很短,其实长度很大。。不要想当然的。。

6.用string时,在#include<string>后,还要using namespace std;

7.RE的原因有:

模0、除0;(除0、模0,是否因为除数因没成功读入而为0)

数组开小溢出了;

数组越界(注意结果的范围,而不仅仅是看输入数据的范围,数组确实开够了?)

死循环一直等待读入(比如你是getchar()!=‘\n‘而输入最后一行没有换行而是EOF结尾可能程序就崩溃了)

程序卡在等待输入

使用块作用域变量的指针(比如将一个if语句里创建的变量,取址加入结构体指针队列,参见UVa 532的用指针错误版本)

8.Output Limit Exceeded是指如果输入某一组数据,你的程序返回的结果是一直输出某个结果,死循环输出的那种。TLE除了死循环就是算法问题。

9.TLE的原因有:

没有结束机制。比如你一个while(1)循环里,有个break的条件,但那个条件一直得不到满足,比如是个bool变量,你传入函数的不是指针而得不到修改,一直不能满足条件跳出循环。(参见UVa 699)

算法时间复杂度太高,无限递归,无限while。

10.WA的时候构造大数据测试看看。另外,看有没有把freopen注释掉。

时间: 2024-11-13 09:23:24

C语言相关及算法题常见错误总结的相关文章

算法题常见的BUG错误(总结)

1. 快排的partition if(l >= r) return ; int i = l, j = r; int tmp = v[i]; while(i < j) { while(i < j && v[j] >= tmp) j--; while(i < j && v[i] <= tmp) i++; if(i < j) swap(v[i], v[j]); } swap(v[l], v[i]); 2. pq的排序规则 pop正好是和比

母函数及相关的算法题

母函数即生成函数,构造这么一个多项式函数g(x),使得x的n次方系数为f(n),是组合数学中尤其是计数方面的一个重要理论和工具. (1+a1x)(1+a2x)(1+a3x)...(1+anx)=1+(a1+a2+a3+...+an)x+(a1a2+a1a3+...+an-1an)x2+...+(a1a2a3*...*an)xn 由此可以看出: 1. x的系数是a1,a2,…an的单个组合的全体.相当于从a1,a2,…an选1个进行组合,然后加在一起 2. x2的系数是a1,a2,…an的两个组合

关于debian,redhat系列系统的相关配置,和常见错误解决

一:Debian 1.  使用apt-get install  安装软件时有以下错误: W: GPG error: \  lable: NO_PUBKEY  40976EAF437D05B 解决:运行以下命令: apt-key adv --keyserver keyserver.ubuntu.com --recv-keys  40976EAF437D05B5 2.  或者出现的这样的问题: E: Sub-process /usr/bin/dpkg returned an error code (

黑马程序员&mdash;&mdash;【黑马视频笔记】C语言基础之注释与常见错误

总结起来,注释有三种: 1.单行注释 1: //哈哈 单行注释 .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpc

二分查找的相关算法题

最近笔试经常遇到二分查找的相关算法题 1)旋转数组中的最小数字 2)在旋转数组中查找某个数 2)排序数组中某个数的出现次数 下面我来一一总结 1 旋转数组的最小数字 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. 实现数组的旋转见左旋转字符串. 和二分查找法一样,用两个指针分别指向数组的第一个元素和最后一个元素. 我们注意到旋转

C语言常见错误中英文对照表

fatal error C1003:  error count exceeds number; stopping compilation 中文对照:错误太多,停止编译 分析:修改之前的错误,再次编译 fatal  error  C1004: unexpected end of file found 中文对照:文件未结束  分析:一个函数或者一个结构定义缺少“}”.或者在一个函数调用或表达式中括号没有配对出现.或者注释符“/*…*/”不完整等 fatal  error C1083:  Cannot

C语言常见错误

对于刚学编程,刚接触C++的新手来说,编译运行报错是最头疼的一件事,爆出一堆英文,英语差一点的又不知道什么意思,所以也不知道如何去改,在此,我给大家传一份常见错误中英文对照表及简单解释,希望可以帮到大家: fatal error C1003: error count exceeds number; stopping compilation 中文对照:(编译错误)错误太多,停止编译 分析:修改之前的错误,再次编译 fatal error C1004: unexpected end of file 

常见算法题合辑(一)

这一章的内容,有些之前已经在微信公众号中将详细的思路及步骤汇总过,有些之后可能会再找时间对其进行分析,这里只将最终实现罗列出来,难易程度不分先后,算法复杂度不保证是最优,留给大家空间自行思考,当然,本章用的是C#语言进行编码,大家可以使用自己熟悉的语言将这些算法实现一遍哦~ 如果你有什么有趣的算法题或者没能解决的算法题,也可以留言给小编,让我们一起玩转算法~ 1. 冒泡排序 这个算是所有算法中最为简单的了,实现方法如下: 2. 插入排序 从排序算法来看,这个算法也是属于比较简单的了,实现方法如下

R语言编程中的常见错误

R语言编程中的常见错误有一些错误是R的初学者和经验丰富的R程序员都可能常犯的.如果程序出错了,请检查以下几方面.? 使用了错误的大小写.help().Help()和HELP()是三个不同的函数(只有第一个是正确的).? 忘记使用必要的引号.install.packages("gclus")能够正常执行,然而Install.packages(gclus)将会报错.? 在函数调用时忘记使用括号.例如,要使用help()而非help.即使函数无需参数,仍需加上().? 在Windows上,路