做狼人战袍在哪买杀战袍彩字的用啥软件啊,求大神,最好附带几张底图

C语言上机实验_百度文库 两大类热门资源免费畅读 续费一年阅读会员,立省24元! C语言上机实验 上传于|0|0|暂无简介 阅读已结束,如果下载本文需要使用0下载券 想免费下载更多文档? 定制HR最喜欢的简历 你可能喜欢当前位置: >> 《C语言程序设计》实践教学指导书(v2015) 《C 语言程序设计》实践环节说明计算机与网络中心 杨俊生“基于计算思维培养的 C 语言程序设计” 实践环节说明1、实践环节层次(1) 上机练习 (2) 基本实验 (3) 综合性实验 (4) 探究性实验 备注:由于 C 语言程序设计课程的性质,除上机练习外,其他三个环节都是设计型、 构造型实验
2、实践环节统计信息实验类别 上机练习 基本实验 综合性实验 探究性实验 备注 个数 6 7 1 11 说明 每个上机练习由若干练习题目组成 每个基本实验由若干实验题目组成 贯穿整个教学过程;共有独立的 11 个步骤或版本 学生至少完成 1 个 所占比例 40.00% 46.67% 6.67% 6.67% 17.14% 20.00% 31.43% 31.43%所占比例中的左侧列为将综合性和探究性实验分别看作 1 个实验的比例; 右侧列为将综合性实验看作 11 个实验,将探究性实验看作 11 个实验的比例。3、实践环节详细情况实践环节 1 2 3 4 5 6 1 2 3 4 5 6 7 1 2 3 实践名称 使用绘图工具绘制流程图和模块图 使用 RAPTOR 进行程序设计 C 程序的运行环境和运行 C 程序的方法 数据类型、运算法与表达式 简单的输入与输出 文件 顺序结构程序设计 选择结构程序设计 循环结构程序设计 数组 函数 指针 结构体与共用体 “学生成绩管理系统”需求分析与模块图的绘制 “学生成绩管理系统”VC6.0 工程组织 “学生成绩管理系统”中学生属性数据的描述 第 1 页 共 2 页 学时 1 1 2 2 1 3 1 2.5 3 2 2 2 4 说明 1. 2. 3. 教师实验课上讲解,学生跟着练习 琐碎的、最基础的实践内容,或只要 求了解的内容 不需要提交实验报告上机练习基本实验1. 2. 3.传统意义上的实验 一般情况下,要求学生独立完成 课后要提交实验报告综合性实验①1. 2. 3.贯穿整个课程的综合案例 同时又是大作业 1――6、11 环节由教师给出必要的操 “基于计算思维培养的 C 语言程序设计”实践环节说明 实践环节 实践名称 学时 说明 4 “学生成绩管理系统”中用户菜单的设计与实现 1.5 作文档或视频,以学生自行练习为主 4. 7――10 四个环节计分,共 10 分 5 “学生成绩管理系统”中用户菜单的选择 1 6 “学生成绩管理系统”中用户菜单的循环选择 7 以数组为数据结构实现“学生成绩管理系统” 2 8 以函数为模块化设计手段改写“学生成绩管理系统” 9 以指针为编程手段改写“学生成绩管理系统” 10 以线性表为数据结构改写“学生成绩管理系统” 4 11 “学生成绩管理系统”中学生数据文件的输入与输出 1 使用 RAPTOR 进行程序设计 2 C 语言应用领域及其应用前景的分析 3 VC6.0 中浮点型数据存储形式 4 常用缓冲和非缓冲输入库函数使用方法的剖析 5 C 编译器对逻辑运算的优化 学生根据自身具体情况,完成一个或多个 6 循环结构程序设计在密码破译中的应用 适合自己的课题 7 高精度计算 8 C 语言中函数调用机理的探讨 9 使用 C 语言实现动态数组 10 用 C 语言实现 Excel 中多字段排序 11 汉字点阵字库中汉字点阵的提取与显示操作初探 1. 没有分配学时的实践环节,原则上由学生自学。教师录制视频给出必要的提示 2. 学时一栏为“课内学时” 3. 大纲中的“上机实验”部分只列出了“上机练习”与“基本实验”的内容探究性课题②备注①有关综合性实验更详细的情况请参考“ 《C 语言程序设计》贯穿课程案例(综合性实验) “学生成绩管理系统”.pdf” ; ② 有关探究性实验更详细的情况请参考“ 《C 语言程序设计》探究性实验.pdf” 。第 2 页 共 2 页 《C 语言程序设计》上机练习计算机与网络中心 杨俊生练习 01 使用绘图工具绘制流程图和模块图1. 练习目的 (1) 了解 Microsoft Visio 2010 的应用领域 (2) 掌握使用 Microsoft Visio 2010 绘制传统流程图的方法 (3) 掌握使用 Microsoft Visio 2010 绘制系统功能模块图的方法 (4) 掌握 Microsoft Visio 2010 与 Microsoft Word 2010 协同工作的方法 2. 练习内容 (1) 请参考《使用 Microsoft Visio 2010 绘制求解阶乘流程图.pdf》文档,跟随 教师绘制求解 5!的流程图。 (2) 请参考《使用 Microsoft Visio 2010 绘制“学生成绩管理系统”功能模块 图.pdf》文档,跟随教师绘制贯穿课程案例“学生成绩管理系统”的功能 模块图。 3. 相关资料 (1) 使用 Microsoft Visio 2010 绘制求解阶乘流程图.pdf (2) 使用 Microsoft Visio 2010 绘制“学生成绩管理系统”功能模块图.pdf第 1 页 共 1 页 《C 语言程序设计》贯穿课程案例计算机与网络中心 杨俊生使用 Microsoft Visio 2010 绘制 “学生成绩管理系 统”功能模块图一、练习目的1. 掌握 (1) 使用 Microsoft Visio 2010 绘制系统功能模块图的方法 (2) Microsoft Visio 2010 与 Microsoft Word 2010 协同工作的方法 2. 了解 (1) Microsoft Visio 2010 基本功能二、练习内容和步骤图 1 “学生成绩管理系统”功能模块图(一) Microsoft Visio 2010 简介 Microsoft Visio 2010 是微软公司出品的一款的软件,它有助于 IT 和商务专业人员轻 松地可视化、分析和交流复杂信息。它能够将难以理解的复杂文本和表格转换为一目了然的 Visio 图表。该软件通过创建与数据相关的 Visio 图表(而不使用静态图片)来显示数据, 这些图表易于刷新,并能够显著提高生产率。 Microsoft Visio 是最流行的图表、流程图与结构图绘制软件之一,它将强大的功能与简 单的操作完美结合,可广泛应用于众多领域,主要包括软件开发、项目策划、企业管理、建 筑规划、机械制图、电路设计、系统集成、生产工艺。第 1 页 共 4 页 使用 Microsoft Visio 2010 绘制“学生成绩管理系统”功能模块图(二) 绘制如图 1 所示的“学生成绩管理系统”功能模块图 1. 启动 Microsoft Visio 2010 选择“开始”|“所有程序”|“Microsoft Office”|“Microsoft Visio 2010” 命令,启动 Microsoft Visio 2010。 2. 创建空白功能模块图 (1) 单击“文件”选项卡|“新建” ,在“选择模板”窗格中选择|“模板类别”|“常 规”|“基本框图”模板; (2) 单击最右侧窗格中的“创建”按钮。如图 2、3 所示。图 2 选择“常规”模板类别3. 设置纸张方向(可选) (1) 选择“设计”选项卡|“页面设置”组|“纸张方向”下拉按钮; (2) 在弹出的下拉列表中选择“横向”命令。第 2 页 共 4 页 《C 语言程序设计》贯穿课程案例计算机与网络中心 杨俊生图 3 使用“基本框图”模板创建 Visio 文档4. 绘制顶层模块 (1) 选择“形状窗格”中的“矩形”形状,将之拖曳到“绘图窗格”中; (2) 选中所绘矩形,输入文本“学生成绩管理系统” ;设置文本的大小为“24pt” ,字体 为“楷体” ; (3) 适当调整所绘矩形的大小,使之能够容纳下所有文字; (4) 适当调整所绘矩形的位置,使之页面居中。 5. 绘制第二层模块 (1) 选择“形状窗格”中的“矩形”形状,将之拖曳到“绘图窗格”中; (2) 选中所绘矩形,输入文本“创建成绩单” ;设置文本的大小为“24pt” ,字体为“楷 体” ,文字方向为“垂直” ; (3) 适当调整所绘矩形的大小,使之仅能够容纳下一列文字; (4) 选择所绘矩形,按住 Ctrl 不放,通过拖曳鼠标复制 7 个矩形,按照图 1 所示更改 这 7 个矩形形状中的文字分别为 “添加学生” 、 “编辑学生” 、 “删除学生” 、 “浏览 成绩单” 、 “排序成绩单” 、 “统计成绩” ; (5) 将“创建成绩单”矩形形状移动到页面的最左侧,将“统计成绩”矩形形状移动到第 3 页 共 4 页 使用 Microsoft Visio 2010 绘制“学生成绩管理系统”功能模块图页面的最右侧; 框选第二层矩形形状, 共 8 个; 选择 “开始” 选项卡| “排列” 组| “位置”下拉按钮,在弹出的菜单中选择“顶端对齐” ;选择“开始”选项卡|“排 列”组|“位置”下拉按钮,在弹出的菜单中选择“空间形状”|“横向分布” 。 (6) 选择“开始”选项卡|“工具”组|“连接线”工具,参考图 1 连接顶层模块和第 二层模块。 6. 以“学生成绩管理系统功能模块图.vsd”为文件名保存功能模块图。 (三) 将“学生成绩管理系统”功能模块图插入 Word 文档 1. 启动 Microsoft Word 2010 选择“开始”|“所有程序”|“Microsoft Office”|“Microsoft Word 2010” 命令,启动 Microsoft Word 2010。 2. 插入“学生成绩管理系统功能模块图.vsd” (1) 选择“插入”选项卡|“文本”组|“对象”下拉按钮,在弹出的下拉列表中选择 “对象”命令; (2) 在弹出的“对象”对话框中,选择“由文件创建”选项卡,通过单击“浏览”按钮, 选择“学生成绩管理系统功能模块图.vsd” 。第 4 页 共 4 页 《C 语言程序设计》上机练习计算机与网络中心 杨俊生使用 Microsoft Visio 2010 绘制求解阶乘流程图一、练习目的1. 掌握 (1) 使用 Microsoft Visio 2010 绘制传统程序流程图的方法 (2) Microsoft Visio 2010 与 Microsoft Word 2010 协同工作的方法 2. 了解 (1) Microsoft Visio 2010 基本功能二、练习内容和步骤图 1 求解 5!流程图(一) Microsoft Visio 2010 简介 Microsoft Visio 2010 是微软公司出品的一款的软件,它有助于 IT 和商务专业人员轻 松地可视化、分析和交流复杂信息。它能够将难以理解的复杂文本和表格转换为一目了然的 Visio 图表。该软件通过创建与数据相关的 Visio 图表(而不使用静态图片)来显示数据,第 1 页 共 4 页 使用 Microsoft Visio 2010 绘制求解阶乘流程图这些图表易于刷新,并能够显著提高生产率。 Microsoft Visio 是最流行的图表、流程图与结构图绘制软件之一,它将强大的功能与简 单的操作完美结合,可广泛应用于众多领域,主要包括软件开发、项目策划、企业管理、建 筑规划、机械制图、电路设计、系统集成、生产工艺。 (二) 绘制如图 1 所示的求解 5!流程图 1. 启动 Microsoft Visio 2010 选择“开始”|“所有程序”|“Microsoft Office”|“Microsoft Visio 2010” 命令,启动 Microsoft Visio 2010。 2. 创建空白流程图 (1) 单击“文件”选项卡|“新建” ,在“选择模板”窗格中选择|“模板类别”|“流 程图”|“基本流程图”模板; (2) 单击最右侧窗格中的“创建”按钮。如图 2、3 所示。图 2 选择“流程图”模板类别3. 设置纸张方向(可选) (1) 选择“设计”选项卡|“页面设置”组|“纸张方向”下拉按钮; (2) 在弹出的下拉列表中选择“纵向”命令。 4. 绘制“开始”起止框第 2 页 共 4 页 《C 语言程序设计》上机练习计算机与网络中心 杨俊生(1) 选择“形状窗格”中的“开始/结束”形状,将之拖曳到“绘图窗格”中; (2) 选中所绘起止框,输入文本“开始” ;设置字号为“24pt” ; (3) 适当调整所绘起止框的大小,使之能够容纳下所有文字; (4) 适当调整所绘起止框的位置。图 3 使用“基本流程图”模板创建 Visio 文档5. 绘制处理框 (1) 将鼠标悬停在刚刚绘制的“开始”起止框上,这时在该框的上、下、左、右出现四 个箭头; (2) 移动鼠标箭头,使之悬停在向下的箭头上,这时会弹出一个小的窗格,其中会出现 若干图框的缩略图; (3) 在窗格中选择处理框对应的缩略图,系统即在“开始”起止框下绘制一个空白的处 理框,并在两个图框之间自动绘制流程线; (4) 设置刚刚绘制的处理框的文本为“1?t” ,字号为“24pt” ; (5) 利用类似的方法再绘制 3 个处理框,框中文本参考图 1。 6. 绘制选择框 (1) 利用与上一步相似的方法绘制一个选择框; (2) 设置刚刚绘制的选择框的文本为“i&5” ,字号为“24pt” ;第 3 页 共 4 页 使用 Microsoft Visio 2010 绘制求解阶乘流程图7. 绘制输入输出框 (1) 选择“形状窗格”中的“数据”形状,将之拖曳到“绘图窗格”中; (2) 选中所绘输入输出框,输入文本“输出 t” ;设置字号为“24pt” ; (3) 适当调整所绘输入输出框的大小,使之能够容纳下所有文字; (4) 适当调整所绘输入输出框的位置。 8. 绘制“结束”起止框 (1) 将鼠标悬停在刚刚绘制的“输出 t”输入输出框上,这时在该框的上、下、左、右 出现四个箭头; (2) 移动鼠标箭头,使之悬停在向下的箭头上,这时会弹出一个小的窗格,其中会出现 若干图框的缩略图; (3) 在窗格中选择起止框对应的缩略图, 系统即在输入输出框下绘制一个空白的起止框, 并在两个图框之间自动绘制流程线; (4) 设置刚刚绘制的起止框的文本为“结束” ,字号为“24pt” ; 9. 绘制流出选择框的流程线 (1) 选择“开始”选项卡|“工具”组|“连接线”工具; (2) 选择选择框的左侧控制点为起始端点,文字为“t*i?i”的处理框上方控制点为目 标端点绘制流程线; (3) 利用类似的方法绘制选择框与输入输出框之间的流程线。 10. 以“求解 5!流程图.vsd”为文件名保存流程图。 (三) 将“求解 5!流程图”流程图插入 Word 文档 1. 启动 Microsoft Word 2010 选择“开始”|“所有程序”|“Microsoft Office”|“Microsoft Word 2010” 命令,启动 Microsoft Word 2010。 2. 插入“求解 5!流程图.vsd” (1) 选择“插入”选项卡|“文本”组|“对象”下拉按钮,在弹出的下拉列表中选择 “对象”命令; (2) 在弹出的“对象”对话框中,选择“由文件创建”选项卡,通过单击“浏览”按钮, 选择“求解 5!流程图.vsd” 。第 4 页 共 4 页 《C 语言程序设计》上机练习计算机与网络中心 杨俊生练习 02 使用 RAPTOR 进行程序设计1. 练习目的 (1) 了解 RAPTOR 的基本功能 (2) 加深对算法表示方法的理解 (3) 掌握下载、安装 RAPTOR 的方法 (4) 初步掌握使用 RAPTOR 进行简单程序设计的方法 2. 练习内容 (1) 使用 RAPTOR 编程实现使用欧几里德方法 (辗转相除) 求两个正整数 m 和 n 的最大公约数。 自然语言表示的算法: S1:输入 m,n S2:r ? m mod n S3:m ? n S4:n ? r S5:如果 r 的值不为 0,转 S2;否则,转 S6 S6:m 即为原来 m 和 n 的最大公约数 (2) 使用 RAPTOR 编程计算并输出下式的值(要求使用循环结构) 1+2+3+……+100 (3) 使用 RAPTOR 编程计算并输出 10! 。 3. 相关资料 (1) 登录百度搜索 RAPTOR 的介绍 /link?url=45XnjJxzVSgylJMNJk3YI8oIuWeB2mAxsK0Y m0b8JSJF2EKdGODkWAPw--7Gl2nIyzGNN90VmK0pSPPjdk2yqq (2) 下载 RAPTOR 登录 RAPTOR 官网(/)下载 RAPTOR 的最 新版 (3) 程向前,陈建明著. 可视化计算. 北京:清华大学出版社, (4) Stewart Venit,Elizabeth Drake 著,远红亮等译. 程序设计基础(第 5 版). 北京:清华大学出版社,.第 1 页 共 1 页 《C 语言程序设计》上机练习计算机与网络中心 杨俊生练习 03 C 程序的运行环境和运行 C 程序方法1. 实验目的 (1) 了解所用的计算机系统的基本操作方法,学会独立使用该系统 (2) 掌握在该系统上如何编辑、编译、连接和运行一个 C 程序 (3) 初步掌握 VC6.0 调试程序的基本方法 (4) 通过运行简单的 C 程序,初步了解 C 程序结构、执行流程和源程序书写基本规则 2. 实验内容和步骤 (1) 检查所用的计算机系统是否已安装了 Visual C++ 6.0 或 TC2.0 并确定它所在的子目录 VC6.0 所在路径 讨 答 论 案 若手工找不到这两个系统怎么办?(2) 进入所用的 C 编译集成环境 选择 “开始” 按钮| “所有程序” | “Microsoft Visual Studio 6.0” | “Microsoft Visual C++ 6.0”命令 双击“Microsoft Visual C++ 6.0”快捷方式 (3) 熟悉集成开发环境的界面和有关菜单的使用方法工作区窗口 程序编辑窗口(4) 教师讲解“C 程序上机过程” ,初步了解编辑、编译、连接和运行四个阶段,熟悉每个第 1 页 共 8 页 上机练习 03C 程序的运行环境和运行 C 程序的方法阶段的输入和输出。 (参考“01 C 程序上机步骤.pptx” ) (5) 输入并运行由一个函数组成的 C 程序。1 2 3 4 5 6 #include&stdio.h& int main() { printf(&This is a c program.\n&); return 0; }① 利用以下三种方法编辑、编译、连接、运行上面的程序: 先建立一个 C 源程序,然后编译、连接、运行(参考“怎样使用 Visual C++运行程 序.pdf”自行练习) 先建立一个 Project,然后在其中建立一个 C 源程序,最后编译、连接、运行(参 考“怎样使用 Visual C++运行程序.pdf”自行练习) 先建立一个 Workspace,然后在其中建立一个 Project,再在 Project 中建立一个 C 源程序,最后编译、连接、运行 ② 查找“C 源程序文件” 、 “目标程序文件” 、 “可执行程序文件” ,进一步熟悉“源程序” 、 “目标程序”和“可执行程序”的概念。 ③ 去掉第 4 行字符串中的“\n” ,结果会怎样? (6) 输入并编辑一个有错误的 C 程序。 ① 输入以下程序(教材第 1 章中例 1.2,故意漏打或打错几个字符)。1 2 3 4 5 6 7 8 9 10 #includ&stdio.h& { int b,sum a=123;b=456; sum=a+b print(&sum is %d\n,sum); return 0; }② 进行编译,仔细分析编译信息窗口,可能显示有多个错误,逐个修改,直到不出现 错误。最后请与教材上的程序对照。 ③ 运行程序,分析运行结果。 (7) 输入并运行一个需要在运行时输入数据的程序。 ① 输入下面的程序:第 2 页 共 8 页 《C 语言程序设计》上机练习计算机与网络中心 杨俊生1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20#include&stdio.h& int main() { int max(int x,int y); int a,b,c; printf(&请输入 a 和 b 的值:&); scanf(&%d,%d&,&a,&b); c=max(a,b); printf(&a 和 b 中的大值是%d\n&,c); return 0; } int max(int x,int y) { if(x&y) z=x; else z=y; return(z); }② 编译并运行,在运行时从键盘输入整数 2 和 5,然后按“回车”键,观察运行结果。 ③ 将程序中的第 5 行改为b;c;再进行编译,观察其结果。 (过后还原为原始状态) ④ 将程序第 6 行改为printf(&请输入 a 和 b 的值:&);再进行编译,观察其结果。 (过后还原为原始状态) ⑤ 将程序第 8 行改为c=ma x(a,b);再进行编译,观察其结果。 (过后还原为原始状态) ⑥ 将程序第 8 行改为c= max (a,b)再进行编译,观察其结果。 (过后还原为原始状态) ⑦ 将程序第 6、7、8 三行合并为一行,再进行编译,观察其结果。 (过后还原为原始状 态)第 3 页 共 8 页 上机练习 03C 程序的运行环境和运行 C 程序的方法⑧ 将程序第 6 行注释掉,再进行编译,观察其结果。 (过后还原为原始状态) ⑨ 重新编写程序:将 main 函数放到 1.c 文件中,max 函数放到 2.c 文件中。具体操作 方法如下: 再编译、连接和运行程序,观察其结果。 (最后还原为上一步的状态) 选作:将 a,b 改写为全局变量,并对 max 函数做如下修改,再编译、连接和运行程序, 观察其结果。extern int a,b; int max(void) { if(x&y) z=x; else z=y; return(z); }⑩ 单步执行、跟踪调试程序,验证 C 程序执行流程。 3. 相关资料 (1) 《C 程序设计(第四版)》第 1 章 (2) 补充资料《怎样使用 Visual C++运行程序.pdf》 (3) 补充资料《程序的测试与调试.pdf》 4. 总结 (1) C 程序上机步骤编 辑 程序代码的录入,生成源程序*.c编译翻译生成目标程序*.obj连接与其它目标程序或库链接装配,生成可 执行程序*.exe运行第 4 页 共 8 页 《C 语言程序设计》上机练习计算机与网络中心 杨俊生源程序 内容 可执行 文件名后缀 程序设计语言 不可以目标程序 机器语言 不可以可执行程序 机器语言 可以.c.obj.exe(2) C 程序结构 ① 一个 C 程序由一个或多个源程序文件(包括.h 文件和.c 文件)组成C程序C源程序文件(.c)……C头文件(.h)……② 一个源程序文件由一个或多个函数组成 函数是组成 C 程序的基本单位或构件 所有函数的定义都是平行的(并列的) ,函数不能嵌套定义 在满足上一点的基础上,函数(包括 main 函数)的位置任意 ③ 源程序文件(.c 文件)的结构预处理命令全局声明函数 1 函数 2 ?? 函数 n④ 一个 C 程序必须有且只能有一个主函数 main()第 5 页 共 8 页 上机练习 03C 程序的运行环境和运行 C 程序的方法⑤ 函数的结构函数 函数类型 函数名(类型 参数名, ??, 类型 参数名) 函数首部{ 声明部分; 执行部分; }函数体(3) C 程序书写基本规则 ① 一行内可以写多个语句 ② 一个语句可以分写在多行上 ③ 每个语句和数据声明的最后必须有一个分号。分号是 C 语句的必要组成部分; ④ 可使用空行和空格; ⑤ 缩进/锯齿形格式 ⑥ { }对齐 ⑦ 有足够的注释 (4) C 程序执行流程正常情况下,程序执行从 main 开始,在 main 中结束,其它函数通过函数调用得以执行。int main() { int max(int x,int y); int a,b,c; printf(&请输入 a 和 b 的值:&); scanf(&%d,%d&,&a,&b); c=max(a,b); printf(&a 和 b 中的大值是%d\n&,c); return 0; }int max(int x,int y) { if(x&y) z=x; else z=y; return(z); }第 6 页 共 8 页 《C 语言程序设计》上机练习计算机与网络中心 杨俊生(5) VC6.0 集成开发环境组织 C 程序的方法Workspace(*.dsw)Project1(*.dsp) Source 1 Source 2 …… Source nProject2(*.dsp) Source 1 Source 2 …… Source n…… Source 1 Source 2 …… Source nProject n(*.dsp) Source 1 Source 2 …… Source n讨论:如何利用 VC6.0 集成开发环境来组织这门课程的所有实验和练习对应的程序? (6) C 语言错误类型 错误类型 描述:通常是内部编译出错 后果:无法生成 obj 或 exe 文件 致命错误 (fatal error) 例子:#include&stdio& //fatal error int main() { printf(“Hello,World!\n”); return 0; }说明描述:一般错误是指程序的语法错误、磁盘或内存存取错误或命 令行错误 后果:无法生成 obj 或 exe 文件 一般错误 (error) 例子:#include&stdio.h& int main() { printf(“Hello,World!\n”); return 0 //error }第 7 页 共 8 页 上机练习 03C 程序的运行环境和运行 C 程序的方法描述:一些值得怀疑的情况 后果:可能存在潜在的危险,可生成 obj 或 exe 文件 例子: warning#include&stdio.h& int main() { int a=123; float f=a; //warning printf(“%f\n”,f); return 0; }描述:程序在运行过程中出现的各种错误 运行时错误 runtime error 原因: 书写错误的计算公式 忽视很少出现的极端情况,如溢出、越界、死循环等 程序结构或逻辑出错 (7) C 程序设计中查错的方法 ① 静态查错。不用执行程序,仅根据程序和框图对求解过程的描述来发现错误。 ② 动态查错。在程序执行的过程中寻找错误的确切位置。一般使用开发工具的动态调 试功能。第 8 页 共 8 页 《C 语言程序设计》上机练习计算机与网络中心 杨俊生上机练习 04 数据类型、运算符与表达式一、练习目的1. 掌握 C 语言数据类型,熟悉如何定义一个整型、字符型和浮点型的变量,以及对它们赋 值的方法 2. 了解数据溢出的情况,并总结其中的规律 3. 掌握不同的数据类型之间赋值的规律 4. 比较熟悉地使用 C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++) 和自减(--)运算符的使用方法 5. 进一步熟悉 C 程序的编辑、编译、连接、运行和调试的过程二、练习内容和步骤(一) 阅读程序 要求:先阅读程序,给出预计结果。然后运行程序得出正确结果,与预计结果进行比 较,若不一致请分析原因。 注意:运行结果的换行用&CR&来表示。 1. 在 VC6.0 中验证 EXEC01.C 结果。为叙述方便人为在每一行前插入了行号。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18#include&stdio.h& int main() { char c1,c2,c3; short int a,b; float e,f, double h, c1=’A’; c2=’\101’+1; c3=400; a= 0x7 b=a+1; e= e5; f = e+20; g= ; h= e+20; j=345.6111; printf(“c1=%c,%d\n”,c1,c1);第 1 页 共 6 页 上机练习 04数据类型、运算符与表达式19 20 21 22 23 24 25printf(“c2=%c,%d\n”,c2,c2); printf(“c3=%c,%d\n”,c3,c3); printf(“a=%hd,b=%hd\n”,a,b); printf(“e=%f,f=%f,g=%f\n”,e,f,g); printf(“h=%lf,j=%lf\n”,h,j); return 0; } 结果及分析 预计结果行号 18正确结果 预计结果19 总结正确结果预计结果 20 总结 预计结果 21 总结 预计结果 22 总结 预计结果 23 总结 变量 a 在内存中的映像(二进制) 正确结果 正确结果 正确结果 正确结果变量 b 在内存中的映像(二进制)变量 c3 在内存中的映像(二进制)第 2 页 共 6 页 《C 语言程序设计》上机练习计算机与网络中心 杨俊生2. 在 VC6.0 中验证 EXEC02.C 结果。为叙述方便人为在每一行前插入了行号。1 2 3 4 5 6 7 8 9#include&stdio.h& int main() { char c1= ’a’, c2 = ’b’, c3 = ’c’, c4 = ’\101’, c5 = ’\116’; printf(“567890\n”); printf( “a%cb%c\tc%c\tabc\n”,c1,c2,c3); printf( “\t%c\b%c\n”,c4,c5); return 0; }1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0分析 结果1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0正确 结果 结论 3. 在 VC6.0 中验证 EXEC03.C 结果。为叙述方便人为在每一行前插入了行号。1 2 3 4 5 6 7 8#include&stdio.h& int main() { printf(“char2integer %d\n”,sizeof(’A’)); printf(“integer2double %d\n”,sizeof(1+2.5)); printf(“float2double %d\n”,sizeof(2.5f+3.6)); return 0; } 行号 预计结果 4 总结 预计结果 5 正确结果第 3 页 共 6 页结果及分析正确结果 上机练习 04数据类型、运算符与表达式总结 预计结果 6 总结 4. 在 VC6.0 中验证 EXEC04.C 结果。为叙述方便人为在每一行前插入了行号。1 2 3 4 5 6 7 8 9 10 11 12 13正确结果#include&stdio.h& int main() { float x=2.5,y=4.7,x1=3.5,y1=2.5; int a=7,a1=2,b1=3,a2=12,n=15; printf(“%f\n”,x+a%3*(int)(x+y)%2/4); printf(“%f\n”,(float)(a1+b1)/2+(int)x1%(int)y1); printf(“%d\n”,a2*=2+3); printf(“%d\n”,a2/=a2+a2); printf(“%d\n”,a2+=a2-=a2*=a2); printf(“%d\n”,a2%=(n%=2)); return 0; } 行号 预计结果 6 总结 预计结果 7 总结 预计结果 8 总结 预计结果 9 总结 预计结果 10 正确结果第 4 页 共 6 页结果及分析正确结果正确结果正确结果正确结果 《C 语言程序设计》上机练习计算机与网络中心 杨俊生总结 预计结果 11 总结 5. 在 VC6.0 中验证 EXEC05.C 结果。为叙述方便人为在每一行前插入了行号。1 2 3 4 5 6 7 8 9 10 11 12 13正确结果#include&stdio.h& int main() { int i=8, j=10,m,n; int x=3, y=4, z=5, m=++i; n=j++; printf(“%d,%d,%d,%d\n”,i , j , m , n); result = (x++)+(x++)+(x++); printf(“result=%d,x=%d\n”,result,x); result = y+++z; printf(“result=%d,y=%d,z=%d\n”,result,y,z); return 0; } 行号 预计结果 7 正确结果 结论 预计结果 9 正确结果 结论 预计结果 11 正确结果 结论 结果及分析(二) 完成程序 1. 打开 EXEC06.C 文件,该程序的功能是从键盘输入一个小写字母,计算并输出该字母 在字母表中的位序(例如字母’a’的位序为 1) 。补充缺少的部分(缺少部分使用##### 来表示) ,运行程序并验证结果。 2. 打开 EXEC07.C 文件,该程序的功能是计算 1+2+3+4+5+6 的平均值。补充缺少的部第 5 页 共 6 页 上机练习 04数据类型、运算符与表达式分(缺少部分使用#####来表示) ,运行程序并验证结果。 3. 打开 EXEC08.C 文件,该程序的功能是从键盘输入一个数字字符,将该字符转换为对 应的数值输出。例如输入’3’,输出整型数值 3。补充缺少的部分(缺少部分使用##### 来表示) ,运行程序验证结果。第 6 页 共 6 页 《C 语言程序设计》上机练习计算机与网络中心 杨俊生上机练习 05 简单的输入与输出一、练习目的1. 掌握 C 语言格式化输入与输出库函数(printf 和 scanf)的使用方法 2. 掌握 C 语言字符型数据的输入与输出库函数(putchar 和 getchar)的使用方法 3. 进一步熟悉 C 程序的编辑、编译、连接、运行和调试的过程二、练习内容和步骤要求:先阅读程序,给出预计结果。然后运行程序得出正确结果,与预计结果进行比较, 若不一致请分析原因。 注意:运行结果的换行用L来表示。 1. 在 VC6.0 中验证 EXEC01.C 结果。为叙述方便人为在每一行前插入了行号。1 #include&stdio.h& 2 int main() 3 { 4 char c='a'; 5 int i=65; 6 putchar(c); 7 putchar('a'); 8 putchar('\101'); 9 putchar(65); 10 putchar(i); 11 putchar(i+1); 12 putchar('\a'); 13 14 15 }//字符型变量 //字符型常量 //转义字符 //整型常量 //整型变量 //表达式 //转义字符putchar('\n'); return 0;putchar 参数的形式 2. 在 VC6.0 中验证 EXEC02.C 结果。为叙述方便人为在每一行前插入了行号。1 2 3 4 5 6 7#include&stdio.h& int main() { scanf(“%d”,&x); ch=getchar();第 1 页 共 6 页 上机练习 05简单的输入与输出8 9 10printf(“x=%d,ch=%d\n”,x,ch); return 0; } 输入 结果123L 分析 3. 在 VC6.0 中验证 EXEC03.C 结果。为叙述方便人为在每一行前插入了行号。1 #include&stdio.h& 2 int main() 3 { 4 int a=11,b=22; 5 short int m=-1; 6 long int n=; 7 printf(&%d %d\n&,a,b); 8 printf(&a=%d,b=%d\n&,a,b); 9 printf(&m:%hd,%ho,%hx,%hu\n&,m,m,m,m); 10 printf(&n=%d\n&,n); 11 printf(&n=%ld\n&,n); 12 return 0; 13 }行号 7 总结 8 总结 9 总结 10、11 总结结果4. 在 VC6.0 中验证 EXEC04.C 结果。为叙述方便人为在每一行前插入了行号。1 2 3 4 5 6#include&stdio.h& int main() { float x=1234.56,y=1.; double z=456789; printf(&x=%f,y=%f\n&,x,y);第 2 页 共 6 页 《C 语言程序设计》上机练习计算机与网络中心 杨俊生7 8 9 10 11 12 13 14 15 }printf(&x=%d,y=%d\n&,x,y); printf(&z=%lf\n&,z); printf(&z=%le\n&,z); printf(&z=%18.8lf\n&,z); printf(&x=%10.3f\n&,x); printf(&x=%-10.3f\n&,x); printf(&x=%.4f\n&,x); return 0; 结果行号 6 总结 7 总结 8 总结 9 总结 10 总结 11 总结 12 总结 13 总结5. 在 VC6.0 中用 EXEC05.C 中的 scanf 函数输入数据, 使 a=3, b=7, x=8.5, y=71.82, c1=’A’,c2=’a’。问在键盘上如何输入?为叙述方便人为在每一行前插入了行号。1 2 3 4 5 6#include &stdio.h& int main() { int a,b; float x,y; char c1,c2;第 3 页 共 6 页 上机练习 05简单的输入与输出7 8 9 10 11 12 13 14 }scanf(&a=%db=%d&,&a,&b); scanf(&%f%e&,&x,&y); scanf(&%c%c&,&c1,&c2); printf(&a=%d\tb=%d\n&,a,b); printf(&x=%f\ty=%f\n&,x,y); printf(&c1=%c\tc2=%c\n&,c1,c2); return 0;运行时分别按照以下方式输入数据,观察输出结果,分析原因。 ① a=3,b=7,x=8.5,y=71.82,A,aL(L代表换行,下同) ② a=3b=7□x=8.5□y=71.82□A□aL(□代表空格,下同) ③ a=3b=7□8.5□71.82□A□aL ④ a=3b=7□8.5□71.82AaL ⑤ 3□7□8.5□71.82AaL ⑥ a=3b=7L 8.5□71.82L AL aL ⑦ a=3b=7L 8.5□71.82L AaL ⑧ a=3b=7L 8.5□71.82 AaL 序号 a b 各变量值 x y c1 c2 原因分析 ② 各变量值 a第 4 页 共 6 页结果及分析① 《C 语言程序设计》上机练习计算机与网络中心 杨俊生b x y c1 c2 原因分析 a b 各变量值 x y c1 c2 原因分析 a b 各变量值 x y c1 c2 原因分析 a b 各变量值 x y c1 c2 原因分析 ⑥ 各变量值 a b第 5 页 共 6 页③④⑤ 上机练习 05简单的输入与输出x y c1 c2 原因分析 a b 各变量值 x y c1 c2 原因分析 a b 各变量值 x y c1 c2 原因分析 数据输入总结⑦⑧第 6 页 共 6 页 《C 语言程序设计》上机练习计算机与网络中心 杨俊生练习 06 文件一、练习目的1. 掌握文件以及缓冲文件系统、文件指针的概念。 2. 掌握文件打开、关闭、读、写等文件操作函数的使用方法。二、练习内容和步骤1. 编程实现将一个磁盘文件中的信息复制到另一个磁盘文件中的功能。 解题思路: (1) 使用记事本建立“D:\file1.txt”文件; (2) 从“D:\file1.txt”文件中逐个读入字符; (3) 然后逐个输出到屏幕上。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25//把命令行参数中指定文件的内容显示在屏幕上 #include &stdio.h& #include &stdlib.h& int main(int argc,char *argv[]) { FILE * char * //获得文件名 if(argc&2) { printf(&命令行参数错误\n&); exit(0); } infile=argv[1]; //打开 infile if((in=fopen(infile,&r&))==NULL) { printf(&无法打开此文件\n&); exit(0); } //读 in 文件 while(!feof(in)) { ch=fgetc(in);第 1 页 共 5 页 上机练习 06文件26 27 28 29 30 31 }fputc(ch,stdout); } //关闭 in fclose(in); return 0; 问题 argc 的含义 argv 的含义 fopen 函数的用法 打开文件的“定式” exit 函数的用法 feof 函数的用法 stdout 的含义//还能怎么写???行号 4 4 17 17― 21 13 23 26说明拓展:stdin、stderr 的含义 29 -fclose 函数的用法 处理文件的“三步曲” 2. 在一串“#”的位置填上适当的内容,实现将一个磁盘文件中的信息复制到另一个磁盘 文件中的功能。 解题思路: (1) 使用记事本建立“D:\file1.txt”文件; (2) 从“D:\file1.txt”文件中逐个读入字符; (3) 然后逐个输出到“D:\file2.txt”中。 #include &stdio.h& #include &stdlib.h& int main( ) { FILE *in,* char ch,infile[255]=&##############&,outfile[255]=&###############&; //打开文件 infile,由 in 指向 8 if(#############) 9 { 10 printf(&无法打开此文件\n&); 11 exit(0);1 2 3 4 5 6 7第 2 页 共 5 页 《C 语言程序设计》上机练习计算机与网络中心 杨俊生12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 }} //打开文件 outfile,由 out 指向 if(#############) { printf(&无法打开此文件\n&); exit(0); } while(没有的 in 的尾) { ch=//从 in 中读一个字符##########; //将 ch 写入 out######## //将 ch 显示在屏幕上 putchar(ch); } //关闭 in ########## //关闭 out ########## return 0;3. 在一串“#”的位置填上适当的内容,实现将一个磁盘文件中的信息(该文件由多行文 本组成)复制到另一个磁盘文件中的功能。 解题思路: (1) 使用记事本创建“d:\file1.txt”文件。注意该文件由多行文本组成。 (2) 使用 fgets 从文件“d:\file1.txt”中读取字符串,在屏幕上显示,并使用 fputs 复制 到“d:\file2.txt”中。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15#include &stdio.h& #include &stdlib.h& int main( ) { FILE *in,* char infile[255]=&##############&,outfile[255]=&###############&; char ss[255]; //打开文件 infile,由 in 指向 if(#############) { printf(&无法打开此文件\n&); exit(0); } //打开文件 outfile,由 out 指向 if(#############)第 3 页 共 5 页 上机练习 06文件16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 }{ printf(&无法打开此文件\n&); exit(0); } while(//从 in 中读入的串 s 不为空串####) { //将 s 显示在屏幕上 //将 s 写入 out } //关闭 in ########## //关闭 out ########## return 0;4. 在一串“#”的位置填上适当的内容,实现将 2 个学生的数据写入磁盘文件,接着存 入将磁盘文件中的学生数据读出并显示到屏幕上的功能。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26#include &stdio.h& #include &stdlib.h& struct student { char name[21]; int score[3]; }; //定义具有两个学生的数组 stu1,并初始化 ################################## //定义具有两个学生的数组 stu2 ################################## int main( ) { FILE * //打开文件 d:\stu.txt,由 fp 指向 if(#############) { printf(&无法打开此文件\n&); exit(0); } //将 stu1 两个学生数据写入 stu.txt 文件 ####################### fclose(fp); //打开文件 d:\stu.txt,由 fp 指向第 4 页 共 5 页 《C 语言程序设计》上机练习计算机与网络中心 杨俊生27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 } 5.if(#############) { printf(&无法打开此文件\n&); exit(0); } //从 stu.txt 中读取两个学生数据到 stu2 中 ####################### //输出 stu2 中学生数据 for(i=0;i&2;i++) { printf(&%10d%20s%10d%10d%10d\n&, stu2[i].num, stu2[i].name, stu2[i].score[0], stu2[i].score[1], stu2[i].score[2]); } //关闭文件 fclose(fp); return 0; 使用 rewind 函数改写 4 中的程序,完成同样功能,但是不用两次打开数据文件。第 5 页 共 5 页 《C 语言程序设计》实验计算机与网络中心 杨俊生实验 01 顺序结构程序设计班级 1. 实验目的 (1) 掌握 C 语言中使用最多的一种语句――赋值语句的使用方法。 (2) 掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。 (3) 进一步掌握编写程序和调试程序的方法。 2. 实验内容和步骤 (1) 设圆半径 r=1.5,圆柱高 h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体 积。编程序,使用符号常量来表示圆周率,用 scanf 输入数据,输出计算结果。输出时 要有文字说明,取小数点后两位数字(第 3 章第 7 题)。 学号 姓名圆周长 ? 2 πr 圆面积 ? πr 2 圆球表面积 ? 4 πr 2 4 3 πr 3 圆柱体积 ? πr 2 h 圆球体积 ?程序: (请将程序贴在这)(2) 计算存款利息(第 3 章第 2 题)。 有 1000 元,想存 5 年,可按以下 5 种办法存: ① 一次存 5 年期。 ② 先存 2 年期,到期后将本息再存 3 年期。 ③ 先存 3 年期,到期后将本息再存 2 年期。 ④ 存 1 年期,到期后将本息再存 1 年期,连续存 5 次。 ⑤ 存活期存款。活期利息每一季度结算一次。 银行存款利率和计算利息的公式见教材 P82 第 3 章第 2 题。 程序: (请将程序贴在这)第 1 页 共 2 页 实验 01 顺序结构程序设计(3) 编程序将“China”译成密码,密码规律是:用原来的字母后面第 4 个字母代替原来的 字母。例如,字母“A”后面第 4 个字母是“E” ,用“E”代替“A” 。因此, “China” 应译为“Glmre” 。请编一程序,用赋初值的方法使 c1,c2,c3,c4,c5 这 5 个变量的 值分别为'C','h','i','n','a',经过运算,使 c1,c2,c3,c4,c5 分别变为'G','l','m', 'r','e'。分别用 putchar 函数和 printf 函数输出这 5 个字符(第 3 章第 6 题)。 ① 输入事先已编好的程序,并运行该程序。分析是否符合要求。 程序: (请将程序贴在这)② 改变 c1,c2,c3,c4,c5 的初值为:'T'、'o'、'd'、'a'、'y',对译码规律做如下补充: 'W'用'A'代替,'X'用'B'代替,'Y'用'C'代替,'Z'用'D'代替。修改程序并运行。 (在①的基础上修 改) 程序: (请将程序贴在这)③ 将译码规律修改为: 将一个字母被它前面第 4 个字母代替,例如'E'用'A'代替, 'Z'用'V' 代替,'D'用'Z'代替,'C'用'Y'代替,'B'用'X'代替,'A'用'W'代替。修改程序并运行。 (在①的基 础上修改) 程序: (请将程序贴在这)3. 预习内容 预习教材第 4 章。 4. 提交实验文档要求 (1) 填写实验报告。 (2) 将第 2(1)的源程序文件命名为 exp01_1.c。 (3) 将第 2(2)的源程序文件命名为 exp01_2.c。 (4) 将第 2 (3) 的源程序文件 (分别对应①、 ②、 ③) 分别命名为 exp01_31.c、 exp01_32.c、 exp01_33.c。 (5) 将实验报告文档与 5 个源程序文件压缩到一个名为“学号.rar”文件中(其中学号用 学生自己的学号来替换) 。 (6) 将上一步生成的压缩文件作为附件提交给老师。第 2 页 共 2 页 《C 语言程序设计》实验计算机与网络中心 杨俊生实验 02 选择结构程序设计班级 学号 姓名一、实验目的1.掌握 (1) 正确使用逻辑运算符和逻辑表达式的方法; (2) if 语句和 switch 语句; (3) 一些简单的算法。 2.进一步提高调试程序的能力; 3.了解 (1) C 语言表示逻辑量的方法;二、实验内容1. 编写程序实现以下功能:有一函数:用 scanf 函数输入 x 的值,求 y 值。运行程序,输入 x 的值(分别为 x<1、1≤x<10、x≥10 三种情况),检查输出的 y 值是否正确。 实验文档整理方法: (1)将编写的源程序存为 exp02-1.C; (2)将源程序的内容复制并粘贴到下面的表格中。程序 条件 结果 x<1 1≤x<10 x≥10 2. 给出一个百分制成绩,要求输出成绩等级 A、B、C、D、E。[100,90]为 A,[80, 90)分为 B,[70,80)分为 C,[60,70)分为 D,(60,0]分为 E。若输入的成绩大于第 1 页 共 3 页xy是否错误错误原因 实验 02 选择结构程序设计100 或小于 0,输出“输入成绩错误” 。 事先编好程序,要求分别用 if 语句和 switch 语句(可掺杂 if 语句,但判别等级部分 应使用 switch)实现。运行程序,并检查结果是否正确。 实验文档整理方法: (1)将使用 if 编写的源程序存为 exp02-02.C,将使用 switch 编写的源程序存为 exp02-03.C; (2)将源程序的内容复制并粘贴到下面的表格中。程序 (if) 条件 100 分以上 90~100 结果 80~89 70~79 60~69 0~59 0 分以下 具体值 输出结果程序 (switch) 条件 100 分以上 90~100 结果 80~89 70~79 60~69 0~59 0 分以下第 2 页 共 3 页输出结果 《C 语言程序设计》实验计算机与网络中心 杨俊生3. 输入 4 个整数,要求按由小到大顺序输出。 【提示 1】 从小到大排序四个整数(使用的是朴素“冒泡排序”的方法) 设 a、b、c、d 四个整数 1. 如果 a〉b,那么交换 a 和 b 的值; 2. 如果 b〉c,那么交换 b 和 c 的值; 3. 如果 c〉d,那么交换 c 和 d 的值(这时 d 中的值最大,或者说排好了一个数) ; 4. 如果 a〉b,那么交换 a 和 b 的值; 5. 如果 b〉c,那么交换 b 和 c 的值(这时 c 中的值次大,或者说排好了两个数) ; 6. 如果 a〉b,那么交换 a 和 b 的值(这时 b 中的值第三大,a 中的值最小,四个 数全部排好了) 。 实验文档整理方法: (1)将编写的源程序存为 exp02-4.C; (2)将源程序的内容复制并粘贴到下面的表格中。程序 4. 从键盘输入一个小于 1000 的正整数,要求输出它的平方根(如平方根不是整数,则输 出其整数部分)。要求在输入数据后先对其进行检查是否小于 1000 的正数。若不是, 则要求重新输入(仅实现重新输入 1 次)。 实验文档整理方法: (1)将编写的源程序存为 exp02-5.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序三、实验报告提交方法将实验过程中生成的 C 源程序文件 exp02-1.C、exp02-2.C、exp02-3.C、exp02-4.C、 exp02-5.C 与本文档压缩在一个名为你的学号.rar 的文件中(假如你的学号是 123,那么压 缩文件的名字就为 123.rar) ,并作为附件提交即可。第 3 页 共 3 页 《C 语言程序设计》实验计算机与网络中心 杨俊生实验 03 循环结构程序设计班级 学号 姓名一、实验目的1. 掌握 (1) 用 while 语句,do-while 语句和 for 语句实现循环的方法; (2) 在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等) 。 2. 进一步掌握 switch 语句的使用方法; 3. 进一步提高调试程序的能力;二、实验要求1. 请在实验课前复习课堂上所讲授的第 06 章的内容; 2. 请在实验课前将本实验要求编写的程序打好草稿;三、实验内容和步骤(一) 编写程序。 1. 输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。 一级算法: (1)为不同种类字符的计数器设置初值为 0; (2) while((c=getchar())!=’\n’) 判断 c 的种类将相应的记数器加 1; (3)输出统计的结果; 二级算法(一级算法中第二步的循环体求精) : 如果 c 为英文字母,那么英文字母的计数器加 1; 否则 如果 c 为空格,那么空格的计数器加 1; 否则 如果 c 为数字,那么数字的计数器加 1; 否则 其它字符的计数器加 1;第 1 页 共 4 页 实验 03 循环结构程序设计实验文档整理方法: (1)将编写的源程序存为 exp03-1.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序 2. 请编程实现求解下式的值。其中 X 和 n 的值通过 scanf 函数输入。这道题是一个“累加和”问题,该题的关键是找出“通项”的规律。 一级算法: (1)累加和 sum 初值赋为 0.0; (2)从键盘输入正整数 X 和 n; (3) for( i=0;i&=n;i++) /* 共 n+1 项 */ { 求分子 numerator 的值;/*分子实际上是 Xi,即乘方*/ 求分母 denominator 的值; /*分母实际上是 i! ,即阶乘*/ sum=sum + numerator/denominator ; } (4)输出 sum 的值; 二级算法 1(对一级算法中求分子 numerator 的值的细化) : 由大家自己来写; 二级算法 2(对一级算法中求分母 denominator 的值的细化) : 由大家自己来写; 实验文档整理方法: (1)将编写的源程序存为 exp03-2.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序第 2 页 共 4 页 《C 语言程序设计》实验计算机与网络中心 杨俊生3. 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一 个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一 天剩下的一半零一个。到第 10 天早上想再吃时,见只剩一个桃子了。求第一天共摘 了多少桃子。 该问题实质上是一个“递推”问题。 第十天、剩 1 个桃 第九天、2*(第十天的桃数+1) 第八天、2*(第九天的桃数+1) …… 我们一共要递推多少次?(使用循环来实现) 实验文档整理方法: (1)将编写的源程序存为 exp03-3.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序 4. 编写一个程序,在屏幕上打印出如下图的程序。该问题实质上是一个考查大家“循环嵌套”的问题。 通过观察图形我们发现如下事实: (1)该图形共有 9 行; (2)每一行的操作有四个步骤 A、打印 9-i 个空格(其中 i 为当前打印的是第几行) ; B、打印 i 个数字 12??i; C、打印 i-1 个数字 i-1??21; E、打印换行符; 实验文档整理方法:第 3 页 共 4 页 实验 03 循环结构程序设计(1)将编写的源程序存为 exp03-4.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序 5. (此题为选做题) 输出所有的“水仙花数” ,所谓“水仙花数”是指一个 3 位数,其各位数字立方和等 于该数本身。例如,153 是一水仙花数,因为153 = 13 +53 + 33实验文档整理方法: (1)将编写的源程序存为 exp03-5.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序四、实验报告提交方法将实验过程中生成的 C 源程序文件 exp03-1.C、exp03-2.C、exp03-3.C、exp03-4.C、 exp03-5.C(如果你做了选做题)与本文档压缩在一个名为你的学号.rar 的文件中(假如你的 学号是 123,那么压缩文件的名字就为 123.rar) ,并作为附件提交即可。第 4 页 共 4 页 《C 语言程序设计》实验计算机与网络中心 杨俊生实验 04班级 学号数组姓名一、实验目的1.掌握 (1) 一维数组和二维数组的定义、赋值和输入输出的方法; (2) 字符数组和字符串函数的使用; (3) 与数组有关的算法(特别是排序与查找算法)。二、实验要求1. 请在实验课前将本实验要求编写的程序打好草稿,提交书面“实验预习报告” ; 2. 实验后所有学生要提交电子版实验报告和源程序;三、实验内容和步骤(一) 编写程序。 编程序并上机调试运行。 1. 用简单选择法对 10 个整数排序。10 个整数用 scanf 函数输入。 (提示:参考课上讲 解) 实验文档整理方法: (1)将编写的源程序存为 4-01.C; (2)将源程序的内容复制并粘贴到下面的表格中。程序 2. 已有一个已排好序的数组, 要求插入一个数后, 按原来排序的规律将它插人数组中(本 题是教材第 6 章第 4 题)。 实验文档整理方法: (1)将编写的源程序存为 4-02.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序 3. 有 15 个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第 几个元素的值。如果该数不在数组中,则输出“无此数” 。以 15 个数用赋初值的方法第 1 页 共 4 页 实验 04数组在程序中给出。要找的数用 scanf 函数输入。 (提示:参考课上讲解) 实验文档整理方法: (1)将编写的源程序存为 4-03.C; (2)将源程序的内容复制并粘贴到下面的表格中。程序 4. 将两个用字符数组表示的字符串连接起来,不要用 strcat 函数。 提示: 通过分析,我们得到解决该问题的关键有两个步骤: (1)找到第一个串的末尾; (2)将第二个串的字符逐个拷贝到第一个串的末尾,直到第二个串拷贝完毕为止。 一级算法: (1)定义两个字符数组 str1 和 str2,i 用来标识拷贝目的地的位置,j 用来标识拷贝 源位置,i 和 j 的初值都为 0,即 i 标识 str1[0]的位置,j 标识 str2[0]位置; (2)从键盘输入两个串 str1,str2; (3) while(没到 str1 的末尾) (4) while(没到 str2 的末尾) { str1[i]=str2[j]; i++,j++; } (5)将 str2[j]写入 str1[i];/* 为什么有这步?*/ (6)输出 str1。 实验文档整理方法: (1)将编写的源程序存为 4-04.C; (2)将源程序的内容复制并粘贴到下面的表格中。 i++; /* str1 的末尾有什么特点 */第 2 页 共 4 页 《C 语言程序设计》实验计算机与网络中心 杨俊生程序 5. 找出一个二维数组的“鞍点” ,即该位置上的元素在该行上最大,在该列上最小。 也 可能没有鞍点。 应当至少准备两组测试数据:用 scanf 函数从键盘输入数组各元素的值,检查结果是否正确。题目并未指定二维数组 的行数和列数,程序应能处理任意行数和列数的数组。因此,从理论上来说,应当准备许多 种不同行数和列数的数组数据,但这样的工作量太大,一般来说不需要这样做,只需准备典 型的数据即可。 如果已指定了数组的行数和列数,可以在程序中对数组元素赋初值,而不必用 scanf 函 数。请同学们修改程序以实现之。 (提示:参考课上讲解) 实验文档整理方法: (1)将编写的源程序存为 4-05.C; (2)将源程序的内容复制并粘贴到下面的表格中。程序 6. 选做题: 编写一个程序实现 C 语言标准库函数 strcmp 的功能。 从键盘输入要比较的两个字符串,并使用两个字符数组 s1 和 s2 分别存储它们。 ? 如果 s1=s2 时,则输出 0; ? 如果 s1≠s2,则输出它们二者第一个不相同字符的 ASCII 码差值(如&BOY&与 &BAD&的第二个字母不相同,&O&与&A&之差为 79-65=14)第 3 页 共 4 页 实验 04数组实验文档整理方法: (1)将编写的源程序存为 4-06.C; (2)将源程序的内容复制并粘贴到下面的表格中。程序四、实验报告提交方法将实验过程中生成的 C 源程序文件 4-01.C、4-02.C、4-03.C、4-04.C、4-05.C 、4-06.C (如果你做了选做题) 与本文档压缩在一个名为你的学号.rar 的文件中 (假如你的学号是 123, 那么压缩文件的名字就为 123.rar) ,并作为附件提交即可。第 4 页 共 4 页 《C 语言程序设计》实验计算机与网络中心 杨俊生实验 05班级 学号函数姓名一、实验目的1.掌握 (1) 定义函数的方法; (2) 函数实参与形参的对应关系以及“值传递”的方式; (3) 编写简单递归程序的方法; (4) 使用全局变量的方法。二、实验要求1. 请在实验课前将本实验要求编写的程序打好草稿; 2. 实验后所有学生要提交电子版实验报告和源程序;三、实验内容和步骤1. 写一个判别素数的函数,在主函数中输入一个整数,调用判别素数的函数判别该整数 是否为素数,最后由主函数输出是否素数的信息。 提示: 该程序包括两个函数:主函数和判别素数的函数。 一、主函数 1、输入一个整数; 2、调用判别素数函数; 3、根据“判别素数函数”的返回值,输出“是素数”或“不是素数” 。 二、判别素数函数 该函数是一个典型的“自定义函数” 。当我们在编写一个自定义函数时,应该从以下几个 方面来考虑: 1、函数是否有返回值; 2、函数若有返回值,那它的“逻辑含义”是什么?应该定义为什么类型比较合适? 3、函数有没有形式参数?若有,每个参数的含义和类型又应该怎样呢? 注意:函数的参数是该函数与主调函数之间传递数据最常用的一种方式。所传递的参数 既不能不够用,又不能出现多余且无用的参数。第 1 页 共 3 页 实验 05函数4、函数的具体算法。 具体到判别素数的函数,请你一一回答上述问题。实验文档整理方法: (1)将编写的源程序存为 5-01.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序 2. 编写一个函数,使给定的一个 3 行 3 列的整型二维数组 a 转置(在 a 数组自身上转 置,不能使用第 2 个数组) ,即行列互换。 实验文档整理方法: (1)将编写的源程序存为 5-02.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序 3. 使用递归调用的方法重新编写冒泡排序程序。 实验文档整理方法: (1)将编写的源程序存为 5-03.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序 4. 求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数。用另一函数根据 求出的最大公约数求最小公倍数。 ① 不用全局变量,分别用两个函数求最大公约数和最小公倍数。两个整数在主函数中输入,并传送给函数 hcf,求出的最大公约数返回主函数,然后再与两个整数一起 作为实参传递给函数 lcd,求出最小公倍数,返回到主函数输出最大公约数和最小公 倍数。 ② 用全局变量的方法。用两个全局变量分别代表最大公约数和最小公倍数。用两个函数分别求最大公约数和最小公倍数,但其值不由函数带回,而是赋给全局变量。在 主函数 中输出它们的值。第 2 页 共 3 页 《C 语言程序设计》实验计算机与网络中心 杨俊生实验文档整理方法: (1)将编写的源程序存为 5-04-01.C 和 5-04-02.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序四、实验报告提交方法将实验过程中生成的 C 源程序文件 5-01.C、5-02.C、5-03.C、5-04-01.C、5-04-02.C 、 与本文档压缩在一个名为你的学号.rar 的文件中(假如你的学号是 123,那么压缩文件的名 字就为 123.rar) ,并作为附件提交即可。第 3 页 共 3 页 《C 语言程序设计》实验计算机与网络中心 杨俊生实验 06班级 学号指针姓名一、实验目的1.掌握 (1) 掌握指针和间接访问的概念,会定义和使用指针变量。 (2) 能正确使用数组的指针和指向数组的指针变量。 (3) 能正确使用字符串的指针和指向字符串的指针变量。二、实验要求1. 请在实验课前将本实验要求编写的程序打好草稿; 2. 实验后所有学生要提交电子版实验报告和源程序;三、实验内容和步骤编程序并上机调试运行以下程序(都要求用指针处理)。 1. 输入 3 个整数,按由小到大的顺序输出,然后将程序改为:输入 3 个字符串,按由小 到大顺序输出。 (1) 先编写一个程序,在主函数中输入 3 个整数,在一个自定义的函数中交换两个整 数,在主函数中按由小到大的顺序输出这三个整数。 在调用和定义交换函数时要求:要交换的两个整数的指针作为实参;整型指针变 量作为形参。 实验文档整理方法: (1)将编写的源程序存为 6-01.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序 (2) 把程序改为能处理输入 3 个字符串,按由小到大的顺序输出。 实验文档整理方法: (1)将编写的源程序存为 6-02.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序第 1 页 共 2 页 实验 06指针2. 将一个 3x3 的整型二维数组转置,用一函数实现之。 在主函数中用 scanf 函数输入以下数组元素: 1 7 13 3 9 15 5 11 19(1) 将数组 0 行 0 列元素的地址作为函数实参,在执行函数的过程中实现行列互换, 函数调用结束后在主函数中输出已转置的二维数组。 实验文档整理方法: (1)将编写的源程序存为 6-03.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序 (2) 将数组 0 行的地址作为函数实参,在执行函数的过程中实现行列互换,函数调用 结束后在主函数中输出已转置的二维数组。 实验文档整理方法: (1)将编写的源程序存为 6-04.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序四、实验报告提交方法将实验过程中生成的 C 源程序文件 6-01.C、6-02.C、6-03.C、6-04.C、与本文档压缩在 一个名为你的学号.rar 的文件中 (假如你的学号是 123, 那么压缩文件的名字就为 123.rar) , 并作为附件提交即可。第 2 页 共 2 页 《C 语言程序设计》实验计算机与网络中心 杨俊生实验 07班级 学号结构体与共用体姓名一、实验目的1.掌握 (1) 掌握结构体类型变量的定义和使用; (2) 掌握结构体类型数组的概念和应用; (3) 掌握结构体型变量、数组名或结构体指针变量作参数的方法。二、实验要求1. 请在实验课前将本实验要求编写的程序打好草稿; 2. 实验后所有学生要提交电子版实验报告和源程序;三、实验内容和步骤1. 某班有 10 个学生,请你编写一个程序计算每个学生的平均成绩,统计平均分不及格 的学生人数。其中每个学生的数据包括学号、姓名、3 门课的成绩。 (使用一个 main 函数实现) 实验文档整理方法: (1)将编写的源程序存为 7-01.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序2. 某班有 10 个学生,请你编写一个程序计算每个学生的平均成绩,统计平均分不及格 的学生人数。其中每个学生的数据包括学号、姓名、3 门课的成绩。要求: (1) 使用 input 函数输入 10 学生的信息; (2) 使用 inputa 函数输入一个学生的信息; (3) 使用 average 函数来计算学生的平均成绩; (4) 使用 failurecount 函数来统计不及格的学生人数; (5) 使用 output 函数输出 10 个学生的信息; (6) 在 main 函数最后输出不及格学生人数。第 1 页 共 2 页 实验 07 结构体与共用体实验文档整理方法: (1)将编写的源程序存为 7-02.C; (2)将源程序的内容复制并粘贴到下面的表格中。 程序四、实验报告提交方法将实验过程中生成的 C 源程序文件 7-01.C、 7-02.C 与本文档压缩在一个名为你的学号.rar 的文件中 (假如你的学号是 123, 那么压缩文件的名字就为 123.rar) , 并作为附件提交即可。第 2 页 共 2 页 《C 语言程序设计》贯穿课程案例计算机与网络中心 杨俊生贯穿课程案例“学生成绩管理系统”简介一、基本功能为了方便教师管理、 维护学生成绩, 我们要求学生编写一个 “学生成绩管理系统” 程序。 学生的属性主要包括:学号、姓名、数学成绩、语文成绩、英语成绩、平均成绩。要实现的 功能包括: 1. 创建成绩单。教师可以一次批量输入若干个学生的成绩,从而建立一个学生成绩单。 2. 添加学生。教师可以一次添加一个学生的所有信息。 3. 编辑学生。如果教师在输入学生信息时有错误,可以编辑、修改学生的信息。 4. 删除学生。教师可以将某一学生从成绩单中删除。 5. 查找学生。教师可以按照学号在成绩单中定位并显示该学生的所有信息。 6. 浏览成绩单。教师可浏览学生成绩单中所有学生,即将学生成绩单中所有学生的信息 显示在屏幕上。 7. 排序成绩单。教师可以按照某门课的成绩对学生进行排序。 8. 统计成绩。教师可以按照科目统计每门课程各个分数段的人数。二、实现步骤简介为了通过编写该程序从而达到进一步掌握上课所学内容的目的, 我们以教学进度为主线, 把该程序编写为不同的版本,每个版本是在前面版本的基础上,运用现教学阶段刚刚学到的 知识来充实或改写前面的版本。通过这种安排,将一个相对比较复杂的问题分解为若干个比第 1 页 共 5 页 贯穿课程案例“学生成绩管理系统”简介较简单的、功能相对单一的子功能或专题,同学们利用一或两周的时间完成一个子功能或专 题,工作量比较小,不至于产生畏难情绪,提高同学们的学习积极性。 下表是对“学生成绩管理系统”各个版本的简单介绍。 周次 步骤 说明“学生成绩管理系统”需求分析与模块图的绘制 1. 明确系统功能 2. 使用 Microsoft Visio 2010 绘制系统功能模块图 知识点与能力点: 1. 结构化程序设计方法基本理论 2. Microsoft Visio 2010 中基本框图的绘制方法 学生成绩管理系统”VC6.0 工程组织 1. 使用 VC6.0 创建 Step4――Step11 对应的工程 知识点与能力点: 1. VC6.0 工作空间的创建与使用方法 2. VC6.0 工程的创建与使用方法 “学生成绩管理系统”中学生属性数据的描述 1. 分析系统中学生属性 2. 使用 C 语言基本数据类型描述学生的属性 知识点与能力点: 1. C 语言基本数据类型 2. 使用 C 语言基本数据类型描述学生的属性 “学生成绩管理系统”用户菜单的设计与实现 在 VC++6.0 集成开发环境下, 使用 printf 函数编程打印系统主菜单。 知识点与能力点: 1. C 程序结构 2. printf 函数的使用方法 3. 转义字符 4. Visual Studio 6.0 开发工具的基本使用方法 “学生成绩管理系统”用户菜单的选择 在 Step4 的基础上,编写程序实现点菜功能 知识点与能力点: 1. 选择结构程序设计 2. switch 语句的使用方法 3. getch、getche、getchar 函数的使用方法及其区别 4. 结构化程序设计之逐步求精 “学生成绩管理系统”用户菜单的循环选择 在 Step5 的基础上,编写程序实现循环点菜功能 知识点与能力点: 1. 循环结构程序设计 2. do~while 语句的使用方法 3. 使用 system 函数执行命令行命令学时评分01Step10不做 检查02Step20不做 检查03Step30不做 检查04Step40不做 检查06Step50.5不做 检查07Step60.5不做 检查第 2 页 共 5 页 《C 语言程序设计》贯穿课程案例计算机与网络中心 杨俊生10Step7以数组为数据结构实现“学生成绩管理系统” 在 Step6 的基础上, 以数组为数据结构, 实现维护学生成绩单的 “创 建成绩单” 、 “浏览成绩单” 、 “统计成绩”三个模块。其中,教师讲解前两 个模块,学生自主完成第三个模块。 知识点与能力点: 1. 数组的定义与数组元素的引用 2. 顺序表的创建、插入、删除、查找、统计等算法 以函数为模块化设计手段改写“学生成绩管理系统” 1. 按照 C 语言大程序的组织结构改写程序 2. 使用 “函数” 作为 “模块化” 手段实现 “添加学生” 、 “查找学生” 、 “编辑学生”三个模块。其中,教师讲解前两个模块,学生自主 完成最后一个模块。 知识点与能力点: 1. 函数的定义和调用 2. 函数原型 3. C 语言参数传递 4. 预处理命令的使用(文件包含和宏定义) 5. C 语言大程序的组织方法 以指针为编程手段改写“学生成绩管理系统” 使用“指针”作为手段实现“创建成绩单” 、 “删除学生” 、 “浏览成绩 单”三个模块。其中,教师讲解前两个模块,学生自主完成第三个模 块。 知识点与能力点: 1. 指向数组元素的指针 2. 指向数组的指针 3. 指针或指针变量作函数实参和形参 4. 通过指针引用数组元素(下标法、指针法、混合法) 以线性表为数据结构改写“学生成绩管理系统” 使用线性表作为数据结构完成所有模块。其中,教师讲解“创建成绩 单”和“浏览成绩单”两个模块; “排序成绩单”模块由学生自主完 成。 知识点与能力点: 1. 动态分配内存空间及其函数的使用方法 2. 结构体类型及结构体变量的定义 3. 结构体成员的引用 4. 结构体变量、结构体指针作函数参数 5. 定义新类型名 “学生成绩管理系统”中学生数据文件的输入与输出 1. 将顺序表存入文件 2. 将顺序表从文件中读出 知识点与能力点: 1. 文件的打开与关闭 2. 以数据块为单位的文件读写操作1+110+111Step8010+113Step9010+115Step10510+116Step1120第 3 页 共 5 页 贯穿课程案例“学生成绩管理系统”简介三、评分标准主要采取黑盒法根据运行结果评判作业完成情况,因此所交程序必须能够运行。如果没 有提交可执行文件,或提交的可执行文件不能运行,成绩最高为满分的 60%。 具体评分标准参考下表: 步骤1. 2.完成情况如果没有提交可执行文件,或提交的可执行文件不能 运行,成绩最高为 6 分 在老师讲解的基础上,学生应完成如下功能 (1) 创建成绩单 (2) 浏览成绩单 学生应该自主完成如下功能 (1) 统计成绩 若全部正确完成,得满分 10 分 若有一个模块未完成(一点没做) ,扣 3 分 若有一个模块有 Bug,根据错误情况扣 0.1――1 分 若学生独立完成除上述的 3 个模块外的其他 2 个模块, 则视完成情况加 0.1――1 分 如果没有提交可执行文件,或提交的可执行文件不能 运行,成绩最高为 6 分 在老师讲解的基础上,学生应完成如下功能 (1) 添加学生 (2) 查找学生 学生应该自主完成如下功能 (1) 编辑学生 (2) 浏览成绩单 若全部正确完成,得满分 10 分 若有一个模块未完成(一点没做) ,扣 2.5 分 若有一个模块有 Bug,根据错误情况扣 0.1――1 分 若学生独立完成除上述的 4 个模块外的其他 2 个模块, 则视完成情况加 0.1――1 分 如果没有提交可执行文件,或提交的可执行文件不能 运行,成绩最高为 6 分 在老师讲解的基础上,学生应完成如下功能 (1) 创建成绩单 (2) 删除学生 学生应该自主完成如下功能 (1) 浏览成绩单 若全部正确完成,得满分 10 分 若有一个模块未完成(一点没做) ,扣 5 分 若有一个模块有 Bug,根据错误情况扣 0.1――1.5 分第 4 页 共 5 页满分Step7以数组为数据结构实现 “学生成绩管理系统” 3. 4. 5. 6. 7. 1. 2.10+1Step8 以函数为模块化设计手段改写 “学生成绩管理系统”3.10+14. 5. 6. 7. 1. 2.Step9 以指针为编程手段改写 “学生成绩管理系统”4. 5. 6. 3.10+1 《C 语言程序设计》贯穿课程案例计算机与网络中心 杨俊生7. 1. 2.若学生独立完成除上述的 3 个模块外的其他 2 个模块, 则视完成情况加 0.1――1 分 如果没有提交可执行文件,或提交的可执行文件不能 运行,成绩最高为 6 分 在老师讲解的基础上,学生应完成如下功能 (1) 创建成绩单 (2) 浏览成绩单 学生应该自主完成“排序成绩单”模块 若全部正确完成,得满分 10 分 若有一个模块未完成(一点没做) ,扣 3 分 若有一个模块有 Bug,根据错误情况扣 0.1――1.5 分 若学生增强了“排序成绩单”模块的功能,或使用单 链表作为数据结构,或实现了除以上 3 个模块外的其 他 2 个模块,则视完成情况加 0.1――1 分Step10 以线性表为数据结构改写 “学生成绩管理系统”3. 4. 5. 6. 7.10+1第 5 页 共 5 页 《C 语言程序设计》探究性题目一、题目列表第 1 章 程序设计基础 探究性题目:使用 RAPTOR 进行程序设计 第 2 章 C 语言概述 探究性题目:C 语言应用领域及其应用前景的分析 第 3 章 数据类型与表达式 探究性题目:VC6.0 中浮点型数据存储形式 第 4 章 顺序结构程序设计 探究性题目:常用缓冲和非缓冲输入库函数使用方法的剖析 第 5 章 选择结构程序设计 探究性题目:C 编译器对逻辑运算的优化 第 6 章 循环控制 探究性题目:算法中循环结构的时间复杂度分析 第 7 章 数组 探究性题目:高精度计算 第 8 章 函数 探究性题目:C 语言中函数调用机理的探讨 第 9 章 指针 探究性题目:使用 C 语言实现动态数组 第 10 章 结构体与共用体 探究性题目:用 C 语言实现 Excel 中多字段排序 第 11 章 文件 探究性题目:汉字点阵字库中汉字点阵的提取与显示操作初探 二、要求与提示 (一)使用 RAPTOR 进行程序设计使用 RAPTOR 作为工具完成以下程序: 1. 欧几里德方法求两个正整数 m 和 n 的最大公约数 2. 高斯求和(1+2+3+??+100) 3. 求 n! 1. 2. 3. 4. 5. 1. 2. 3. 1. 2. 3. 4. 1. 2. 3. 百度百科:/ 维基百科:http://www.wikipedia.org/ RAPTOR 官网:/ 程向前,陈建明编著. 可视化计算. 北京:清华大学出版社, . Stewart Venit,Elizabeth Drake 著,远红亮等译. 程序设计基础(第 5 版).北京:清华大学 出版社,. 算法及其表示方法 计算机解题过程 结构化程序设计 从 RAPTOR 官网下载 RAPTOR 软件 复习“相关知识点” 阅读教师提供的阅读资料 编写相应程序 完成并提交 3 个程序题目 撰写研究报告 录制视频(录屏)向老师、学生或朋友讲解探究的过程题目阅读资料相关知识点参考研究步骤具体要求 (二)C 语言应用领域及其应用前景的分析题目 C 语言应用领域及其应用前景的分析 近几年 Tiobe 世界编程语言排行榜 1. 近几年 Tiobe 编程语言走势图 2. 百度百科:/(C 语言) 3. 维基百科:http://www.wikipedia.org/(C 语言) 4. http://bbs.csdn.net/forums/C 5. http://www.newsmth.net(电脑技术/C 程序设计版) 1. 2. 3. 1. 2. 3. 1. 2. 3. C 语言的发展史 C 语言的特点 C 语言的组成结构 复习“相关知识点” 阅读教师提供的阅读资料 阅读自己搜索到的资料 以 PPT 的形式完成研究结果提交到作业空间 如果有代码必须给出说明和主要的功能注释 可以在课堂上展示研究结果(5 分钟以内)阅读资料相关知识点参考研究步骤具体要求 (三)VC6.0 中浮点型数据存储形式题目 VC6.0 中浮点型数据存储形式 1. 2. 3. 4. 1. 2. 1. 2. 3. 1. 2. 3. 百度百科:/ 维基百科:http://www.wikipedia.org/ 计算机的存储原理 VC6.0 的帮助文档 浮点型数据的表示 浮点型数据的存储 阅读教师提供的阅读资料 查阅其他相关资料 完成研究报告 撰写研究报告 编写程序验证 VC6.0 中 float 型数据存储形式符合 IEEE754 规范 录制视频(录屏)向老师、学生或朋友讲解探究的过程阅读资料相关知识点参考研究步骤具体要求 (四)常用缓冲和非缓冲输入库函数使用方法的剖析常用缓冲和非缓冲输入库函数使用方法的剖析 分别用下面三种方法实现:编写程序输入 1 个大写字母,转换为小写字母后输出 1. 用 getchar()函数实现输入 2. 用 getch()函数实现输入 3. 用 getch()函数实现输入 4. 用 scanf()函数实现输入 输出函数可以自由选择 输入要有提示,如 printf(“please input the characters:”) 输出要有提示,如 printf(“the characters you input are:”); 1. 2. 3. 4. 5. 1. 2. 3. 4. 1. 2. 3. 4. 1. 2. 3. 查看系统目录下的 stdio.h 文件:重点是输入函数的原型 查看系统目录下的 conio.h 文件:重点是输入函数的原型 百度百科:/ 维基百科:http://www.wikipedia.org/ 苏小红等著. C 语言大学使用教程(第 3 版). 北京:电子工业出版社,(第 3 章的 3.4.3 节 使用 scanf 函数时需要注意的问题) 各输入函数的作用和用法 各输出函数的作用和用法 输入缓冲区和输出缓冲区的概念 预处理命令 include 复习“相关知识点” 阅读教师提供的阅读资料 自己查找一些相关资料 编写相应程序 完成并提交 4 个程序题目 撰写研究报告,阐明 C 语言中键盘输入的缓冲机制原理,说明缓冲输入函数和非缓冲输 入函数的区别 录制视频(录屏)向老师、学生或朋友讲解探究的过程题目阅读资料相关知识点参考研究步骤具体要求 (五) C 编译器对逻辑运算的优化题目 C 编译器对逻辑运算的优化 1. 2. 3. 4. 1. 2. 1. 2. 3. 4. 1. 具体要求 2. 3. 百度百科:/ 维基百科:http://www.wikipedia.org/ 谭浩强著. C 程序设计(第四版). 北京: 清华大学出版社, 2010: 92-97 (第 4 章的 4.4 节 逻 辑运算符和逻辑表达式) (美)Brian W. Kernighan&Dennis M. Ritchie 著 徐宝文等译《C 程序设计语言(第 2 版?新 版)》. 北京:机械工业出版社,(第 2 章的 2.6 节 关系运算与逻辑运算) 逻辑运算符和逻辑表达式 逻辑运算符的优先级 复习“相关知识点” 阅读教师提供的阅读资料 自己查找相关资料 编写程序验证优化结果 撰写研究报告(报告中举例说明如果编译器不优化,程序结果是什么?如果优化,优化 的原则是什么,程序的结果是什么?) 编写程序验证你的结论 录制视频(录屏)向老师、学生或朋友讲解探究的过程阅读资料相关知识点参考研究步骤 (六)算法中循环结构的时间复杂度分析题目 算法中循环结构的时间复杂度分析 同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分 析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来 考虑。 算法的时间复杂度往往与循环结构有很大关系。请查阅资料总结算法的时间复杂度的计算方 法以及常见时间复杂度。并给出一个典型的例子(类似百钱百鸡问题) ,分析所给算法的时 间复杂度,以及从时间复杂度上如何改进算法。 1. 2. 1. 2. 1. 2. 3. 4. 1. 2. 百度百科:/view/7527.htm?fr=aladdin 严蔚敏,吴伟民 编著. 数据结构(C 语言版). 北京:清华大学出版社,2011。 循环结构程序设计 算法时间复杂度 阅读教师提供的阅读资料,总结算法复杂度的计算方法及常见时间复杂度。 查阅其他相关资料 选择典型例子,分析算法时间复杂度,以及算法改进方法。 完成研究报告 撰写研究报告 录制视频(录屏)向老师、学生讲解探究的过程引导阅读资料 相关知识点参考研究步骤具体要求 (七)高精度计算题目 阅读资料 编程完成两个 1000 位以内的正整数的加法运算 1. 2. 1. 2. 3. 1. 2. 粗略研究步骤 百度百科:/ 任何一本全国青少年信息学奥林匹克竞赛相关教程 C 语言中数据类型 有效数字、溢出等概念 一维数组定义、引用 复习“相关知识点” ,搞清相关概念 阅读教师提供的阅读资料,熟悉一下内容: (1) 什么是高精度运算? (2) 高精度运算包括哪些运算? (3) 高精度加法的详细运算步骤 编写高精度加法程序,完成题目要求 完成题目中要求的程序 撰写研究报告 录制视频(录屏)向老师、学生或朋友讲解探究的过程相关知识点3. 具体要求 拓展与进阶 1. 2. 3.你能否通过探究实现整数的高精度减法、乘法、除法,高精度阶乘 (八)C 语言中函数调用机理的探讨题目 C 语言中函数调用机理的探讨 1. 2. 3. 4. 1. 2. 3. 1. 2. 3. 4. 5. 1. 2. 3. 4. 百度百科:/ 维基百科:http://www.wikipedia.org/ 谭浩强著. C 程序设计(第四版). 北京:清华大学出版社,8(第 7 章) (美)Brian W. Kernighan&Dennis M. Ritchie 著 徐宝文等译《C 程序设计语言(第 2 版?新 版)》. 北京:机械工业出版社,(第 2 章的 2.6 节 关系运算与逻辑运算) 函数的组成 函数首部的约定 函数调用的方式 复习“相关知识点” 阅读教师提供的阅读资料 自己查找相关资料 设计并编写一个包含递归函数(如 n! )的程序,验证函数调用的流程 使用 VC6.0 中的单步跟踪, 并以 Call Stack 窗口和 watch 窗口辅助说明各层函数之间的调 用关系和执行顺序 撰写研究报告 设计并编写一个包含递归函数的程序 将关键步骤的 Call Stack 窗口和 watch 窗口截图,说明递归函数每次调用的详细过程 录制视频(录屏)向老师、学生或朋友讲解探究的过程阅读资料相关知识点参考研究步骤具体要求 (九)使用 C 语言实现动态数组题目 从键盘输入一个正整数 n(n≤1000) ,计算 n!的位数 m,为其精确分配存储空间,并在其中 存储一个随机生成的 m 位正整数,最后将这个 m 位的正整数显示在屏幕上 由于 n 的范围是 1≤n≤1000,因此该问题是一个“高精度阶乘”问题,按照高精度运算相关 的理论应使用数组来存储 n! ,那么应定义多大的数组呢?这里我们应该考虑以下问题: 1. n 的值是由键盘输入的,n 和 n!的位数是可变的 2. C 语言中的数组是静态的,即一旦定义了数组,其元素个数也就确定了,不能动态改变 数组的大小 解决之道: 1. 定义一个足够大的数组,如 char a[5000]; 这种方法的缺点是存储空间利用率较低。例如,当 n=5 时,n!只有 3 位,浪费了 4997 个字节的存储空间。因此,该种方法不可取。 2. 使用“动态数组” (1) 计算 n!的位数 m 提示:使用对数函数与求和算法计算 n!的位数 (2) 使用动态内存分配函数 malloc 和指针变量及其运算实现动态数组 1. 2. 3. 1. 2. 3. 4. 5. 1. 2. VC6.0 帮助系统 百度百科:/ 任何一本全国青少年信息学奥林匹克竞赛相关教程 中学对数运算 C 语言中数学函数和动态内存分配函数 指针变量及其运算 求和算法 高精度计算的基础知识 通过复习中学数学知识,设计计算 n!位数的算法 阅读教师提供的阅读资料,熟悉以下内容: (1) log10 库函数的使用方法 (2) malloc 库函数的使用方法 (3) 指针变量及其运算 编写程序,完成题目要求 (1) 利用求和算法和 log10 函数计算 n!的位数 m (2) 利用指针变量和 malloc 函数“构造”一个动态数组,该数组可存储 m 个字节, 每个字节中存储一位数字 (3) 利用 srand 和 rand 函数生成 0――9 之间的 m 个伪随机数填写在该动态数组中, 注意该数的最高位不能为 0。 (4) 利用输出函数、指针变量及其运算,将存储在动态数组中的 m 位正整数显示在 屏幕上 完成并提交程序 撰写研究报告 录制视频(录屏)向老师、学生或朋友讲解探究的过程引导阅读资料相关知识点3. 参考研究步骤具体要求 拓展与进阶1. 2. 3.在研究本题目的基础上,编写程序完成计算 n!的功能。其中 1≤n≤1000。 (十)用 C 语言实现 Excel 中多字段排序题目 阅读资料 相关知识点 用 C 语言实现 Excel 中多字段排序 1. 百度百科:/ 2. 维基百科:http://www.wikipedia.org/ 3. Excel 帮助文档 1. 结构体数组 2. 排序算法 1. 阅读教师提供的阅读资料 2. 查阅其他相关资料 3. 完成研究报告 4. 编写相应程序 1. 撰写研究报告 2. 提交程序 3. 录制视频(录屏)向老师、学生或朋友讲解探究的过程参考研究步骤具体要求 (十一)汉字点阵字库中汉字点阵的提取与显示操作初探编写程序实现以下功能:从键盘输入一个汉字,从字库中取出该汉字的字形码,在屏幕上打 印出该汉字的点阵字形(用“*”表示有汉字笔画经过,空格表示没有笔画经过) 1. 2. 3. 4. 引导 通过查阅资料,搞清汉字常用编码在汉字处理过程中所起的作用 通过查阅资料,搞清汉字机内码与区位码之间的转换关系 通过查阅资料,搞清区位码与汉字字形码在汉字库中的偏移量之间的关系 通过查阅资料,掌握 VC6 处理汉字的基本技巧 (1) 使用标准输入函数获得汉字的机内码 (2) 使用 C 语言的算术运算由机内码得到汉字的区位码,由区位码得到汉字字形码在字 库中的偏移量 (3) 使用 C 语言文件处理函数从汉字库中读取某个汉字的字形码 (4) 使用 C 语言的位运算测试汉字字形码某个 bit 是“1”还是“0” ,是“1”输出“*” , 是“0”输出空格 VC6.0 帮助系统 百度百科:/ 上学期“大学计算机”课程第一章拓展性实验文档 C 语言输入输出函数 C 语言算术运算 C 语言位运算 C 语言文件处理函数 通过阅读资料,总结出汉字机内码与区位码之间的转换公式 通过查阅资料,总结出使用汉字区位码计算字形码在汉字库中偏移量公式 掌握使用 C 语言文件处理函数从汉字库中读取某个汉字的字形码 通过自学学习 C 语言位运算相关知识,并掌握使用位运算结合输出函数打印汉字点阵信 息的方法 编写程序,完成题目要求 完成并提交程序 撰写研究报告 录制视频(录屏)向老师、学生或朋友讲解探究的过程题目阅读资料1. 2. 3. 1. 2. 3. 4. 1. 2. 3. 4. 5.相关知识点参考研究步骤具体要求1. 2. 3. 《 C语言程序设计》实验指导书_其它_高等教育_教育...把高级 语言的学习与程序设计、 上机实践紧密地结合...2015小升初备考攻略 小学语文知识总结 bd98bd0301f...C语言程序设计实验指导书_V2.0_计算机软件及应用_IT/计算机_专业资料。《程序...整个教学和实验中,采用 VC++6.0 作为实验环境,强 调学生切实培养动手实践能力,...高等职业技术学校 C 语言程序设计实训 实践教学指导书 (适用于电气专业) 宜宾职业技术学院 2015.01 宜 宾 职 业技 术 学 院 实 C 语言程序设计实训 践教学...《C语言程序设计》课程实验指导书_工学_高等教育_教育...2.复习和掌握与本实验有关的教学内容。 3.准备好...v1,v2; 用 scanf 语句输入圆半径和圆柱高 求圆...《C语言程序设计》实验指导书答案_工学_高等教育_教育...并就 n=20 计算并输出 FS 与 V。 3.编写一个...©2015 Baidu 使用百度前必读 | 文库协议 | 网站...13 -1- 《C 语言程序设计》实验指导书 实验总体要求 C 语言程序设计课程是一门实践性很强的课程,为了培养学生的计算机应用能力,除了课堂理论 教学外,必须加强...else z=y; return(z); } (3) 通过上机实践,运行下列程序并分析输出结果。...C语言程序设计练习指导书... 14页 免费©2015 Baidu 使用百度前必读 | 文库...C语言程序设计(上机)指导书(V5.2)_工学_高等教育...实践环节, 是数据结构、 数学建模、操作系统等课程...《高级语言程序设计 (上) 和》 《高级语言程序设计...《C语言程序设计》课程设计任务书2015_工学_高等...四、指导建议题目㈠ 楼盘查询系统 ⑴系统功能 系统...《C 语言程序设计》课程设计 教学网站 http://221...《C语言程序设计》课程教学大纲_工学_高等教育_教育...实践教学部分 (一)实践教学学时分配类 别序号 1 ...文档贡献者 bdnuonuoya 贡献于2015-03-09 All rights reserved Powered by copyright ©right 。文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 狼人杀刷金币软件 的文章

 

随机推荐