四川大学C语言-实验报告
实验报告 (本科)
学
号
姓
名
专
业
日
期
实验题目
变量的存储类别
实验内容 :
1. 掌握外部变量、内部变量、静态变量和自动变量的定义 2. 了解外部变量、内部变量、静态变量和自动变量的作用域和生存期 3. 掌握使用全局变量(数组)在函数之间和源程序之间正确传送数据 4. 熟练掌握外部变量、内部变量、静态变量和自动变量的初始化
问
题
(算
法)
描
述
实训 1 1 输入学生的学号(数字字符串),将其转换为整型数。
1) 运行实训 1,分别输入一个数字字符串,观察输出结果。
2) 在第 15 行处设置断点,按 F5 启动调试,观察此时变量 k 的值和地址。
3) 按 F10 进行单步执行,查看当程序执行到第 17、18、19、21 行时,观察变量 k 的值和地址。
4) 根据步骤 3 和 4,分析变量 k 的作用域。
实训 2 2 求 10 个成绩中的最大值和最小值。
1) 运行实训 2,观察输出结果。
2) 分析实训 2 程序中变量 score、minScore 和 maxScore 的作用域和存储类别。
3) 如果将第 8、9 行中变量定义时使用的 static 去掉,本程序的输出结果会有变化吗?为什么?
实训 3 3 编写函数,计算 20 个数中最大值、最小值和平均值,由 main()调用该函数,并输出结果。(要求:使用全局变量 max 和 min 返回最大值和最小值)。
实训 3 NS 图如下
实训 4 4 编写函数,计算两个整数的最大公约数和最小公倍数。由 main()调用该函数,并输出结果,两个整数由键盘输入。(要求:使用全局变量 gysh 和 gbsh 返回最大公约数和最小公倍数)。
实训 4 NS 图如下
调试(出错信息、出错原因、修改方法)及总结
实验结果(即执行界面截图)
实训 1 1
1. 输入数字字符串后输出字符串如下。
2.在 在 5 15 行设置断点,观察变量 k k 的值和地址,如下图。此时 k k 的值不存在,因为还没有定义。
3. 单步执行,观察 k k 值和地址的变化。
(1 1 )执行到在 7 17 行时,k k 的值已经存在。
(2 2 )执行至第
8 18 行时,k k 的值变为 2 2
(3 3 )执行到 9 19 行时,k k 的值仍为 2 2
(4 4 )运行到 1 21 行时,k k 变为灰色,说明 k k 已经不存在。
4. 根据步骤 2 2 、3 3 可知 k k 的作用域为 9 17~19 行,即 {} 限制的范围内。
实训 2 2
1. 运行实训 2 2 ,结果如下。
2. 将断点设置在主函数的末尾,仍能观察到 score 、 minScore 、e maxScore 的值,说明它们的作用域为整个程序,存储类别为静态型。监视图如下。
2. 取掉第 8 8 、9 9 行的 static ,运行结果不变。因为去掉 c static 后, score 、 minScore 、e maxScore 为外部变量,存放在静态数据区,使这些数据一直存放直至整个程序运行结束。
实训 3 3
实训 3 3 运行结果如下
实训 4 4
实训 4 4 运行结果如下。
(1 1 )
画 画 S NS 图可简化程序,降低编程难度。
(2 2 )
熟练掌握断点的使用方法,通过逐句调试快速查找到程序中的错误。
(3 3 )
使用函数将程序模块化时,要符合语法,提高程序可读性。
(4 4 )
应该定时检查语法,避免犯低级错误,同时节省时间。