代码错误与检查简短教程(新手适用)
持续更新中……
预计阅读时间:10分钟
编程大神大概率是不会犯这类错误的,新手可以看看。
之前踩过很多坑,今天我把它们总结起来,希望大家以后可以避开。
一、总结经常出现的几类错误
1.书写错误
例如:
inr s=101;
#include <iostrean>
retunr 0;
这三个是我经常犯的,比如把int写成inr,把iostream写成iostrean,把return写成retunr等等,这类错误是很容易发现的,在编写代码的时候应该就能够发现。
2.忘记加分号
例如:
struct student{
string name;
int score;
}
发现错误了吗?是不是{}的后面没有分号。
3.循环变量搞错
例如:
for(int i=0; i<n; i++)
{
for(int j=0; j<m; i++)
{
a[i][j]=0;
}
}
发现错误了吗?这类错误是很隐蔽的,大家看第3行的循环条件,j=0; j<m;i++,有没有发现,是i++而不是j++,这也是新手们常犯的很难找到问题所在的错误。
4.数组越界
例如:
//题目要求:输入一个数组(0≤数组大小≤1000),找出其中的最大值。
int a[505];
int n;
cin>>n;
for(int i=0; i<=n; i++)
{
cin>>a[i];
}
……
这是一个小例子,对于题目要求的边界条件一定要仔仔细细的看,避免出现边界条件这类错误。
5.数据类型错误
//题目要求:输入一个长整数
int a[1001];
这类错误是很容易犯的,千万避免。
关于这些错误,我们应该如何避免呢?
二、错误的避免
绝招1 --- 打印
void dfs(int x,int y)
{
ans++;
g[x][y]=false;
cout<<"x="<<x<<" y="<<y<<endl;
if(g[x-1][y]) dfs(x-1,y);
if(g[x+1][y]) dfs(x+1,y);
if(g[x][y-1]) dfs(x,y-1);
if(g[x][y+1]) dfs(x,y+1);
}
在编写递归调用这类经常会出错的代码时,我们不妨把当前信息输出出来,最好还能够标记上是在递归第几层输出的。
绝招2 --- 调试
调试是一个很难的过程。
以MacOS系统的CodeRunner编辑器为样例给大家解释一下。
点击run按钮并点击run and debug按钮。
调试界面就出现了。
下面我们按下这个按钮
就可以进入按步骤运行啦!
系统会显示当前代码执行到了哪里,以及现在的任何定义的变量的相关数据。
大部分代码编译器都会配备有该系统。
以上就是本文的全部内容啦!千万不要认为本文很弱智、无用之类的,这种错误新手们是很容易犯的。