当前位置:首页 >> 其它课程 >>

第二章 顺序结构程序设计教案


项 目 名 称 实 训 安 排

第二章 顺序结构程序设计 实 训 课 时 实 训 方 法 2 上机 实 训 时 间 实 训 场 地 2013∕4∕3 101 机房

实 训 目 的

1、熟悉在 Visual C++ 6.0 环境中调试 C 程序的步骤和方法。 2、熟悉 C 程序调试 的一般方法。 3、掌握 C 语言中各种运算符的运算规则和表达式的求值规则。 4、掌 握格式化输入/输出函数和字符输入/输出函数的使用方法。 5、熟悉顺序结构程序设计 的方法 掌握 Printf 和 scanf 函数的使用

实 训 内 容 支 项 的 识 撑 目 知 点

装 订 线

一、实验准备实验准备实验准备实验准备 1、C 语言程序的上机操作语言程序的上机操作语言程序的上机操作语言程序的上机操作 C 是编译型语言,设计好一个 C 源程序后,需要经过编译生成目标文件(扩展名.obj)、连接生 成可执行文件(扩展名.exe),然后执行。一个 C 程序的具体开发步骤如下: (1) 启动启动启 动启动 VC++ 6.0: “开始”?“程序”?“Microsoft Visual C++ 6.0” (2) 新建文件新建文 件新建文件新建文件: “文件”?“新建”?在“新建”对话框中选择“文件”标签?列表框 中选“C++ Source File” ,在右边指定文件名和保存位置。 (3) 编辑编辑编辑编辑:录入或 修改源程序并保存(Ctrl+S) (4) 调试运行调试运行调试运行调试运行:编译(Ctrl+F7)? 连接(F7)?运行(Ctrl+F5) ,若有错需修改源程序后再调试程序 (5) 关闭工作区关闭工作 区关闭工作区关闭工作区: “文件”?“关闭工作空间” ,一个程序调试结束后需关闭当前工作 空间,再从第(2)步开始下一个程序的调试 2、、 程序的调试程序的调试程序的调试程序的 、、C 调试 调试即是在源程序中查找错误并修改错误的过程。程序的错误一般分为两类:语法错误 和逻辑错误语法错误和逻辑错误语法错误和逻辑错误语法错误和逻辑错误。 ① 语法错误语法 错误语法错误语法错误:指不符合 C 语言语法规则而产生的错误。语法错误系统能检测出来并 告之原因及位置,设计者可参考修改。 ② 逻辑错误逻辑错误逻辑错误逻辑错误:指程序的运 行结果与预期的结果不符而产生的错误。这类错误拔除难度较大,一般需祥细分析算法或在程 序运行过程中设置断点、追踪程序的运行来纠错。 (1)语法错误调试案例(建立程序名为 ex1-1.c) # include <stdio.h> void main() { int i=0 //错误原因:语句结束位置缺分号 printf("i=%d\n",i); } 调试并查找以上程序的语法错误并分 析原因并改正。(2) 逻辑错误调试案例 (建立程序名为 ex1-2.c) # include <stdio.h> void main() { int n; double sum=0; for(n=1;sum<10;n++) sum=sum+1/n; //错误原因:整 数相除结果取整

装 订 线

该程序无语法错误,但运行后便进入死循环,即有逻辑错误。 方法一方法一方法一 方法一:: ::使程序执行到光标所在行暂停使程序执行到光标所在行暂停使程序执行到光标 所在行暂停使程序执行到光标所在行暂停,,步骤如下步骤如下步骤如下步骤如下:: ① ,, :: 在需要暂停的行 “sum=sum+1/n;” 上单击,定位光标 ② “组建”?“开始调试”?“Run to Cursor” ,或按 Ctrl+F10。 ③ 在底部左窗格内观察程序中相关变量的当前值 ④ 在底部 右窗格中输入观察对象 1/n,观察其当前值 ⑤ “调试”?“Step Into” ,或按 F11,单步跟 踪执行, 并观察变量及表达式的变化情况, 从而判断是否存在错误并纠正 ⑥ 结束调试: “调 试”?“Stop Debugging” 方法二方法二方法二方法二:: ::设置断点跟踪程序设置断点跟 踪程序设置断点跟踪程序设置断点跟踪程序,, ,,步骤如下步骤如下步骤如下步骤如下:: :: ① 在需要暂停的行“sum=sum+1/n;”上定位光标 ② F9 或单击“编译微型条”工具栏中的 手形按钮,设置断点(断点行左侧有红色圆点标志) ③ F5 或“组建”?“开始调试”? “Go” ,使程序运行到断点处 ④ 在底部窗格中输入观察对象 ⑤ F5 或“调试”?“Go” , 使程序执行到下一断点处,并观察变量及表达式的变化 ⑥ “调试”?“Stop Debugging” , 结束调试 ⑦ 光标定位在断点行按 F9 或单击“编译微型条”工具栏上的手形按钮,取消断 点 (3)其他调试技术 如在程序中循环语句中添加输出观察变量的语句和暂停语句如 “getch();”观察变量的变化过程,待结果正确后再将其删除。 二、实验内容实验内容实验内容实验内容 1、数据类运算符和表达式的应用运算符和表达式的应用 (1)整型数据的溢出(建立程序文件名为 sy1-1.c) # include <stdio.h> void main() { short int a,b; a=32767; b=a+1; printf("a=%d,b=%d\n",a,b); } 程序运行结果:a=32767,b=-32768 原因:32767 是 short int 型数据的最大值,其二进制为(0111111111111111) ,在其上加 1 后 产生溢出,变成-32768 的补码,其二进制为(1000000000000000) 。整数在内存中以二进制 补码形式存放,运算时符号位也要参与运算。结论:使用整型数据应注意其表示范围,避免 产生溢出。 (2)浮点型数据的舍入误差(建立程序文件名为 sy1-2.c) # include <stdio.h> void main() { float a,b; a=123456.789e5; b=a+20; printf("a=%f\tb=%f\n",a,b); } } 程序运行结果:a=1345678848.000000 b=12345678868.000000 原因:理论分析 a 变量的值为 12345678900,b 的值经计算应为 12345678920,结果输出的 a 和 b 的值都不对,原因是 float 型数据的有效数字位数为 7 位,后几位数字都是不准确的。 结论: 应当避免将一个很大的数和一个很小的数直接相加或相减, 否则会 “丢失” 较小的数。 (3)字符型数据和整型数据的混合使用(建立程序文件名为 sy1-3.c)

# include <stdio.h> void main() { char c1,c2; c1=65; c2=66; printf("%c %c\n",c1,c2); } 程序运行结果:A B 原因:c1,c2 两个变量的类型为 char 型,在内存中分配 1B 的存储空间用于存放字符的 ASCII 码二进制,其存放的数据范围为 0~255。所以 c1=65,即是字符‘A’的 ASCII 十制 制值,c2=66 即是字符‘B’的 ASCII 十进制值,%c 是字符格式输出,即得 A B 扩展思考: ① 在上面程序的 printf 语句后增加语句“printf("%d %d\n",c1,c2);” ,程序的运 行结果是什么? 结果:A B 65 66 ② 在上面程序的 printf 语句后增加语句 “printf("%d %d\n",c1+32,c2+32);”程序的运行结果是什么? 结果: B , A 97 98 ③ 若 将“char c1,c2;”改为“int c1,c2;” ,程序的运行结果是什么?为什么? 结果:A B 因为在 可输出的字符范围内(0~255) ,用整型和用字符型作用相同。 ④ 若将“c1=65; c2=66;”改 为“c1=’A’; c2=’B’;” 程序的运行结果是什么?为什么? 结果:A B 因为字符型 , 数据在计算时必然转换为整型, 即其 ASCII 码值计算。⑤ 若将 “c1=65; c2=66;” “c1="A"; 改为 c2="B";” ,结果会怎么样? 结果:语法错误 因为字符变量只能存一个字符的 ASCII 码, 不能存放字符串。 ⑥ 若将“c1=65; c2=66;”改为“c1=321; c2=322;” 程序的运行结果是 , 什么?为什么? 结果:A B 因为大于 255 的整数存放在 1B 空间的字符型变量中,只能存 放其%256 后的数据,321%256=65,322%256=66,其结果等价。 (4)算术表达式的求值(建立程序文件名为 sy1-4.c) # include <stdio.h> void main() { int a,b; float x,y,r,s; a=7; x=2.5; y=4.7; r=x+a%3*(int)(x+y)%2/4; a=2; b=3; x=3.5; y=2.5; s=(float)(a+b)/2+(int)x%(int)y; printf("r=%.2f s=%.2f\n",r,s); } 结果:r=2.50 s=3.50 (5)自增、自减运算求值(建立程序文件名为 sy1-5.c) # include <stdio.h> void main() { int i,j,m,n; i=8,j=10; printf("%d %d\n",i++,++j); printf("%d %d\n",i,j);

printf("%d %d\n",-i++,-++j); printf("%d %d\n",i,j); } 结果:8 11 9 11 -9 -12 10 12 原因:printf("%d %d\n",i++,++j);输出 i 自增前的值和 j 自增后的值,即 8 11; printf("%d %d\n",i,j); 自 上 一 条 语 句 后 i,j 均 自 增 1 , 所 以 为 9 11 printf("%d %d\n",-i++,-++j);输出-(i++),-(++j),也是 i 自增前参与求负和输出,即是-9,然 后 i 值自加 1;j 自增后参与求负和输出,即是-12 printf("%d %d\n",i,j);自上一条语句后 i,j 的当前值为 10 12 四、实验要求: “实验内容”中的任务要求在实验课上完成,若未完成请在下次上课 前利用课外时间完成。


赞助商链接
相关文章:
教学设计--顺序结构
教学设计--顺序结构_教学案例/设计_教学研究_教育专区。教材分析 学情分析 教学目标 知识与技能:了解程序顺序结构;掌握文本框控件、变量、赋值语句、数据类型和 ...
第八讲:顺序结构程序设计举例
第八讲:顺序结构程序设计举例 - 第八讲:顺序结构程序设计举例 所谓的顺序结构就是从头到尾一步步按部就班的执行下去, 不会中途出现放 弃或者跳转的情况。 利用...
实验三 顺序结构程序设计
实验三一、实验目的 顺序结构程序设计 学习数据传送指令和算术运算指令的用法;掌握数据定义伪指令的格式,会用 DEBUG 中的 D 命令观察 DB、DW、DD 存储数据的格式...
顺序结构的程序设计说课
程序设计》 ,说课的 内容分四部分:一说教材,二说教法,三说学法,四说教学...第二章第三节《程序的基本结构》一共三 课,本课选用的是第一小节《顺序结构...
顺序结构程序设计练习题
二、填空题 【顺序结构程序设计】 1.有以下程序: ...第6章 循环结构程序设计... 7页 1下载券 循环...Pascal语言程序设计教案... 7页 免费 ©2016 Baidu...
(教案)浙教版_新教材-九年级第3节 顺序结构程序设计
教 上课日期_月_ 师 备 课 笔 记 星期___ 课题 课时安排 第三节 顺序结构程序设计 2 课型 新授 教学目标重点和难点 知识目标:了解申请电子邮箱和安装常用...
实验一+顺序结构程序设计
深圳大学实验报告 课程名称: c 程序设计 实验项目名称: 顺序结构程序设计 学院: 专业: 指导教师: 杨艳丽 报告人: *** 学号:*** 班级: 临班 352 实验时间...
顺序结构程序设计
C#第4章 顺序结构程序设计 38页 2财富值如要投诉违规内容,请到百度文库投诉中心...顺序结构 顺序结构程序设计教学目标: 理解程序设计的顺序结构基本思想 能够使用顺序...
新疆版八年级信息技术第五课 顺序结构程序设计一
布尔津镇初级中学教案课 题 授课人 第五课 顺序结构程序设计一 课时及授课 时间 1 课时 2016 年 4 月 4 日 1、掌握添加时钟控件的方法及基本属性设置;理解...
【教学设计】程序的顺序结构_信息技术_高中_贾会萍_370...
二、 重点难点 重点:认识并理解流程图,能根据程序顺序结构的执行流程、能编写程序解决简单的问题。 难点:根据问题要求写出正确的程序。 三、教学策略 教法:讲授法...
更多相关标签: