debug详解,debug经验
Yyds干货库存
又是一天在洛古刷题。因为我是从入门级开始的,所以提问开始很简单。我就知道会刷回来,遇到了一个代码量比较大的问题。一般长代码调试代码会比较麻烦。我不知道从哪里开始。今天给大家分享一个调试技巧3354“注释输出”调试方法。
事不宜迟,我们先看标题和代码:
科目
密码
#包含位/标准数据。h
使用命名空间std
int n;
char a[10][10],b[10][10];
int g(char **x)
{
for(int I=0;我我)
{
for(int j=0;j j)
{
if(x[i][j]!=b[i][j])返回0;
}
}
返回1;
}
char** f1(char x[10][10])//90deg
{
char * * p=new char *[n];
for(int I=0;我我)
{
p[I]=新字符[n];
for(int j=0;j j)
{
p[I][j]=x[I][j];
}
}
for(int I=0;我我)
{
for(int j=0;j j)
{
p[j][n-1-I]=x[I][j];
}
}
返回p;
}
char * * F2(char * * x)//180度
{
char * * y=new char *[n];
for(int I=0;我我)
{
y[I]=新字符[n];
for(int j=0;j j)
{
y[I][j]=x[I][j];
}
}
for(int I=0;我我)
{
for(int j=0;j j)
{
y[j][n-1-I]=x[I][j];
}
}
返回y;
}
char * * F3(char * * x)//270度
{
char * * y=new char *[n];
for(int I=0;我我)
{
y[I]=新字符[n];
for(int j=0;j j)
{
y[I][j]=x[I][j];
}
}
for(int I=0;我我)
{
for(int j=0;j j)
{
y[j][n-1-I]=x[I][j];
}
}
返回y;
}
char **f4(char x[10][10])
{
char * * p=new char *[n];
//cout F4 endl;
for(int I=0;我我)
{
p[I]=新字符[n];
//cout f42 endl;
for(int j=0;j j)
{
p[I][j]=x[I][j];
}
}
for(int I=0;我我)
{
for(int j1=0,J2=n-1;J1,J2-)//这个要特别注意!数字
{
//cout f43 endl;
swap(p[i][j1],p[I][J2]);
}
}
返回p;
}
int f5(char x[10][10])
{
char * * p=F4(x);
for(int I=0;我我)
{
for(int j=0;j j)
{
x[I][j]=p[I][j];
}
}
char * * q=f1(x);
if(g(q))
{
返回1;
}
char * * h=F2(q);
if(g(h))
{
返回1;
}
char * * l=F3(h);
if(g(l))
{
返回1;
}
返回0;
}
int main()
{
CIN n;
for(int I=0;我我)
{
for(int j=0;j j)
{
CIN a[I][j];
if(a[I][j]==-)a[I][j]= ;
}
}
for(int I=0;我我)
{
for(int j=0;j j)
{
CIN b[I][j];
if(b[I][j]==-)b[I][j]= ;
}
}
char * * p=NULL
//1
//cout 1 endl;
p=f1(a);
if(g(p))
{
cout 1;
返回0;
}
//2
//cout 2 endl;
p=F2(f1(a));
if(g(p))
{
cout 2;
返回0;
}
//3
//cout 3 endl;
p=F3(F2(f1(a)));
if(g(p))
{
cout 3;
返回0;
}
//4
//cout 4 endl;
p=F4(a);
if(g(p))
{
cout 4;
返回0;
}
//5
//cout 5 endl;
if(f5(a))
{
cout 5;
返回0;
}
//6
int flag=1;
for(int I=0;我我)
{
for(int j=0;j j)
{
if(a[i][j]!=b[i][j])
{
flag=0;
}
}
}
if(标志)
{
cout 6;
返回0;
}
//7
cout 7;
返回0;
}洛古的一个好处就是可以下载一些考点。在运行过程中,我发现一组测试数据有问题,程序会在运行过程中异常终止,即“re”。一般这类问题有很大概率是数组越界,或者无限循环等。这里我用的数组不多,每个数组都有绝对的把握,没有问题。于是,我把目光放在了循环上,循环出现的地方就是我写的函数。因为我在main中调用函数,所以我在每个函数的末尾添加了输出语句cout。因为程序是顺序执行的,如果我的那部分功能没有问题,控制台上会打印出相应的输出语句。
所以,在以这种方式修改了代码之后,我在这里运行了一组测试数组,发现确实有一个函数有问题。然后,我再次将output语句添加到该函数中,以准确定位它。最后发现问题是f4函数,确实是死循环。而无限循环的原因是I,J,一增一减,循环条件是I!=j,可能会出现。不存在i==j的情况,所以会是一个无限循环。如果换了i j就没问题了~
以上就是我今天给大家分享的代码调试小技巧。希望对你有帮助~
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。