程序诊所:总结编程过程可能会遇到到的BUG的种类,已经应对的方法。

1、简单错误(easy):简单语法错误。

【表现】:无法编译通过。

【改进】: • 通过仔细阅读代码,排查bug。

• 通过查看编译日志,获得修改建议。

2、正常错误(normal):复杂语法错误与简单逻辑错误。

【表现】:运行结果与预期不相符。

【改进】:通过输出变量的值,定位bug,获得修改方向。

3、困难错误(Hard):复杂逻辑错误

【表现】:运行结果与预期不相符。

【改进】: • 通过输出变量的值,定位bug,获得修改方向。

• 通过调试,添加查看,观察变量在程序运行过程中的变化。

• 掌握编写测试用例的方法。

image 尝试在编译器中, 修改下面这段代码

#include<iostream>
using namespace std;
int main()
{
    int num1,num2;
    int tmp,new_tmp=0,d;
    bool flag1=1,flag2=1;
    cin>>num1>>num2;
    for(int i=num1;i<=num2;i++)          
    {
        tmp=i;
        
        for(int i=2;i*i<=tmp;i++)
        {
            if(tmp%i==0)
            {
                flag1=0;
            }
        }
        while(tmp!=0)
        {
            d=tmp%10;
            new_tmp=new_tmp*10+d;
            tmp/=10;
        }
        for(int i=2;i*i<=new_tmp;i++)
        {
            if(new_tmp%i==0)
            {
                flag2=0;
            }
        }
        if(i==1)
        {
            flag1=0;
            flag2=0;
        }
        if(flag1==1&&flag2==1)
        {
            cout<<i<<" ";
        }
    }
    return 0;
}

解决方案: 设置断点:

#include<iostream>
using namespace std;
int main()
{
    int num1,num2;
    int tmp,new_tmp=0,d;
    bool flag1=1,flag2=1;
    cin>>num1>>num2;
    for(int i=num1;i<=num2;i++)          
    {
        tmp=i;
        flag1=1;
        flag2=1;
        for(int i=2;i*i<=tmp;i++)
        {
            if(tmp%i==0)
            {
                flag1=0;
            }
        }
//        设置断点1
        cout<<i<<":"<<flag1<<endl;
        new_tmp=0;
        while(tmp!=0)
        {
            d=tmp%10;
            new_tmp=new_tmp*10+d;
            tmp/=10;
        }
        
        for(int i=2;i*i<=new_tmp;i++)
        {
            if(new_tmp%i==0)
            {
                flag2=0;
            }
        }
//        设置断点2
        cout<<new_tmp<<":"<<flag2<<endl;
        if(i==1||new_tmp==1)
        {
            flag1=0;
            flag2=0;
        }
        if(flag1==1&&flag2==1)
        {
            cout<<i<<" ";
        }
    }
    return 0;
}

image

#include<iostream>
using namespace std;
int main()
{
	int num,d,new_num=0;
	cin>>num;
	int op=1;
	while(num!=0)
	{
		d=num%10;
		new_num=new_num*10+d;
		num/=10;
	}
	cout<<new_num+num<<endl;
	return 0;
}

0 条评论

目前还没有评论...