- C++
信奥-程序诊所
- 2024-1-20 14:12:19 @
程序诊所:总结编程过程可能会遇到到的BUG的种类,已经应对的方法。
1、简单错误(easy):简单语法错误。
【表现】:无法编译通过。
【改进】: • 通过仔细阅读代码,排查bug。
• 通过查看编译日志,获得修改建议。
2、正常错误(normal):复杂语法错误与简单逻辑错误。
【表现】:运行结果与预期不相符。
【改进】:通过输出变量的值,定位bug,获得修改方向。
3、困难错误(Hard):复杂逻辑错误
【表现】:运行结果与预期不相符。
【改进】: • 通过输出变量的值,定位bug,获得修改方向。
• 通过调试,添加查看,观察变量在程序运行过程中的变化。
• 掌握编写测试用例的方法。
尝试在编译器中, 修改下面这段代码
#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;
}
#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 条评论
目前还没有评论...