您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
009第三章 顺序程序设计03
发布时间:2021-04-10 09:34:55编辑:雪饮阅读()
案例4.14:输入三角形的三边长,求三角形面积。已知三角形的三边长a,b,c,则该三角形的面积公式为:
其中s = (a+b+c)/2
源码实现:
#include <stdio.h>
#include <math.h>
void main(){
double a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2*(a+b+c);
//开根
area=sqrt(s*(s-a)*(s-b)*(s-c));
//7.2g=一共7位数字两位小数按小数的格式输出
printf("a=%7.2g,b=%7.2g,c=%7.2g,s=%7.2g\n",a,b,c,s);
printf("area=%7.2f\n",area);
}
但是结果是异常的
我们输入的是a,b,c对应的值3.0,4.0,5.0,毕竟接收的都是浮点数.
遇到错误了,我们可以这样调试
从这个item的字面意思就可以理解这是根据鼠标光标进行打点调试的,这里我点击到倒数第二个printf的地方,然后我们在控制台中输入值后就会自动停止到这里了.
那么我再来一次换一个断点进行打点以及要终止调试可以点击左上角这个地方
那么我再来一次调试,可以看到调试中最终于的信息就属于上下文这里一片区域了
他显示了这个程序在断点时刻时的一些变量信息.,有时候左上角那个调试悬浮窗会误操作导致消失掉,此时也可以在这里进行停止调试
如果断点正好达到输入的语句这里,则会导致输入无法操作
可以尝试f11单步跳入,可以进入到系统更深的内部
不过我这里好像是远程过程调用失败
这种时候只要将vc6++以管理员身份再次运行再次和之前操作一样即可,会进入下面这个界面,这个算是该工具的一个bug,这里取消即可
那么接下来就会进入这种汇编的界面了.
注意:有时候你Run to Cursor了,但是发现程序没有出现停留到断点的黄色箭头。
要注意这里的操作流程,先Run to Cursor,然后在程序代码区域用鼠标点击要打断点的行,然后再次在控制台中输入要输入的值,因为控制台这里一开始就是卡在scanf这里,这个不是断点影响,而是本来就这样,一般很难打断点打到这个scanf这里,偶尔生效也是上次打的然后没有清除,所以下次就运行到这个scanf这里就出现黄色箭头了。利用打点的下次生效这机制,则可以结合这个restart就能实现断点打到代码的任何区域了,比如这里连void main这里都可以打断点了
那么上面我们了解了调试过程,这里主要回到主题看下实际问题其实是接收的输入类型的问题。所以程序代码更正为如下:
那么这下结果就ok了,刚才出了一个小错误,于是重新建立了文件,源码其实就只是将接收类型的%f修改为%lf了。
关键字词:c,c语言,顺序程序,断点,调试