#include<stdio.h>≥ void main(void) int count,grades; printf("请输入分数:n")方 scanf("%d",&grades); while(grades>=0) { if(grades>=60)count++; } printf("共有%d个学生成绩合格!n",count); 了提示:如何发现问题? 编译、链接该程序后,使用工具栏上的不按钮或者快捷键F10,启用单步运行程序此时 VC+6.0的窗口的标题栏显示如图4.1.2所示。 Xpg4102-创天中文Vc++[break]-[pg4102cpp】 图4.1.2程序调试状态表示 表示程序正处于调试运行状态。这时调试窗口的变量观察区会自动出现,切换到Locals 标签,观察程序中的局部变量值的变化情况,在没有输入数据之前,变量grades和count的值 为随机数,如图4.1.3所示,当单步执行到“scanf("%d",&grades),”语句时,如图4.1.4所示, 此时表示程序的执行流程切换到DOS窗口输入成绩,如图4.1.5所示。 0上下 main0 Name Value grades -858993460 count -858993460 Auto Locals this/ 图4.1.3程序开始运行变量的初始值 %pg4102-创天中文Vc++[un]-[pg4102.cpp) -64-
#include<stdio.h> void main(void) { int count,grades; printf("请输入分数:\n"); scanf("%d",&grades); while(grades>=0) { if(grades>=60) count++; } printf("共有%d 个学生成绩合格!\n",count); } 提示:如何发现问题? 编译、链接该程序后,使用工具栏上的 按钮或者快捷键 F10,启用单步运行程序此时 VC++6.0 的窗口的标题栏显示如图 4.1.2 所示。 图 4.1.2 程序调试状态表示 表示程序正处于调试运行状态。这时调试窗口的变量观察区会自动出现,切换到 Locals 标签,观察程序中的局部变量值的变化情况,在没有输入数据之前,变量 grades 和 count 的值 为随机数,如图 4.1.3 所示,当单步执行到“scanf("%d",&grades);”语句时,如图 4.1.4 所示, 此时表示程序的执行流程切换到 DOS 窗口输入成绩,如图 4.1.5 所示。 图 4.1.3 程序开始运行变量的初始值 - 64 -
图4.14程序运行状态表示 "clc-programming\4 Debug\po41o2.exe”=▣x 请输入分数:?8 图4.1.5切换到数据输入窗口 数据输入结束后,切换回VC+6.0,观察此时的变量值,如图4.1.6所示,grades的值为 刚刚输入的78,cout的值在原来随机初始值上加1,但是这个值显然是不正确的,不能真实 的反映所统计的及格的人数。继续单步运行程序发现grades的值一直保持不变,只是count 的值在变化。通过以上单步追踪运行,可以发现问题所在。 g上下main0 Name Value grades 78 count -858993459 4 Auto Locals this☑ 图4.1.6执行一次循环体后,变量值的变化情况 改正程序后的运行结果示例如图4.1.7所示。 "C:\c-programming\4\Debug\pg4102_ok.exe" 回☒ 请输入分数:788967875864905943-1 共有6个学生成绩合格! Press any key to continue 图4.1.7pg4102_ok.cpp的运行结果 3.打开c:c-programming4小pg4103.cpp,该程序是一球从100米高度自由落下,每次落地 后反跳回原高度的一半:再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? 请修改该程序,使其能正确运行。修改后的程序以pg4103_ok.cpp保存。源程序内容如下。 #include<stdio.h>≥ void main(void) { float sn=100.0.hn=sn/2; -65-
图 4.1.4 程序运行状态表示 图 4.1.5 切换到数据输入窗口 数据输入结束后,切换回 VC++6.0,观察此时的变量值,如图 4.1.6 所示,grades 的值为 刚刚输入的 78,count 的值在原来随机初始值上加 1,但是这个值显然是不正确的,不能真实 的反映所统计的及格的人数。继续单步运行程序发现 grades 的值一直保持不变,只是 count 的值在变化。通过以上单步追踪运行,可以发现问题所在。 图 4.1.6 执行一次循环体后,变量值的变化情况 改正程序后的运行结果示例如图 4.1.7 所示。 图 4.1.7 pg4102_ok.cpp 的运行结果 3.打开 c:\c-programming\4\pg4103.cpp,该程序是一球从 100 米高度自由落下,每次落地 后反跳回原高度的一半;再落下,求它在第 10 次落地时,共经过多少米?第 10 次反弹多高? 请修改该程序,使其能正确运行。修改后的程序以 pg4103_ok.cpp 保存。源程序内容如下。 #include<stdio.h> void main(void) { float sn=100.0,hn=sn/2; - 65 -