C程序单步调试入门(DEV-C++)

简单得介绍下C语言得单步调试,这是我写的第一篇博客,记录下我得学习路程。
本次调试得程序是一个二分找算法,查找一个一维数组中得元素。编译完成后,运行程序发现有一个数据运行不符合,其他得均能适应程序;于是通过单步调试来检测程序得漏洞;

DEVC得单步调试相比VC6.0来说要简单很多,断点得设置、变更、变量添加等都很容易;在想要令程序停下得地方设置好你的断点,添加好你需要观察得变量,选择好DEBUG模式后编译一次,之后就可以进行单步调试了;每一步得调试,观察变量得变化,很容易了解程序得运行;以下是本次调试得程序:
#define M 10  //宏定义,不加分号,是一个预处理,整个程序中M==10;
#include<stdio.h>
int main()
{
 int a[M]={-12,0,6,16,23,56,80,100,110,115};
 int n,low,mid,high,found;
 low = 0;
 high = M-1;
 found = 0;
 printf("input a number to be searched:\n");
 scanf("%d",&n); //当输入80时无法找到,其他数字可行
 while(low<high)//当LOW>HIGH说明数不在这个数列中
 { 
  mid = (low+high)/2; //程序得缺陷,通过单步调试,发现当HIGH=6,LOW =5时,mid由于C语言的舍入
   if(a[mid]==n) //依然等于5,而继续执行循环体使HIGH<low使得循环结束,输出未找到80
  {
   found =1;
  
   break;
  }
  else if(a[mid]>n)
  {
   high = mid-1;
   
  }
  else
  {
   low = mid+1;
  }
  if(low+1==high) //此处是添加完善程序部分,因为了解到HIGH=6,MID=5之后下一次会错过80,所以
  found =1;  //判定当HIGH和LOW相差1时,给标志位FOUND赋值,但此时MID的位置仍是5,所以手动mid++
  mid=mid+1; //至此程序对数据得适应度为100%
  
 }
 if(found ==1)
 printf("the position of n is:%d\n",mid);
 else
 printf("there is no %d",n);
}
可以看到本次使用二分查找,每次能够筛选掉一半得数据,但在LOW,HIGH的数据赋值时应该小心出错,具体可看程序得注释部分,本人在WHILE处设置断点,添加变量为HIGH、low、MID、A[MID]、FOUND。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值