图书在版编目 (CIP) 数据 / 黄迪明等编著. 成都 : 电子科技大学出版社, 普通高等教育 十一五 国家级规划教材配套实验指导教材 ISBN Ⅰ. C Ⅱ. 黄 Ⅲ. C 语言 程序设计 高等学校 教学参考资料 Ⅳ. TP312 中国版本图书馆

Size: px
Start display at page:

Download "图书在版编目 (CIP) 数据 / 黄迪明等编著. 成都 : 电子科技大学出版社, 普通高等教育 十一五 国家级规划教材配套实验指导教材 ISBN Ⅰ. C Ⅱ. 黄 Ⅲ. C 语言 程序设计 高等学校 教学参考资料 Ⅳ. TP312 中国版本图书馆"

Transcription

1 普通高等教育 十一五 国家级规划教材配套实验指导教材 黄迪明许家珆胡德昆孙立欧编著 电子科技大学出版社

2 图书在版编目 (CIP) 数据 / 黄迪明等编著. 成都 : 电子科技大学出版社, 普通高等教育 十一五 国家级规划教材配套实验指导教材 ISBN Ⅰ. C Ⅱ. 黄 Ⅲ. C 语言 程序设计 高等学校 教学参考资料 Ⅳ. TP312 中国版本图书馆 CIP 数据核字 (2008) 第 号 内容简介 本书是普通高等教育 十一五 国家级规划教材 C 语言程序设计 的上机学习指导书 其主要针对主教材课后习题和本书实验项目进行了详细解答, 并且介绍了 Turbo 2.0/3.0 及 Visual C 编译系统的使用, 对 C 语言程序的编辑 编译 连接 运行和调试等方法进行了详细介绍和指导 全书共分四个部分, 主要内容包括 :C 语言上机指导 C 语言实验项目 C 语言课程设计 教材习题和实验项目题解 本书着眼于教材中的重点和难点知识分析以及习题解析, 为学习者指出了在 C 语言上机学习过程中需要注意的问题 希望学习者经过本书的指导学习以后, 在解决更多的疑难问题上得到指点和帮助 普通高等教育 十一五 国家级规划教材配套实验指导教材 黄迪明许家珆胡德昆孙立欧编著 出 版 : 电子科技大学出版社 ( 成都市一环路东一段 159 号电子信息产业大厦邮编 :610051) 策划编辑 : 吴艳玲 责任编辑 : 吴艳玲 主 页 : 电子邮箱 : uestcp@uestcp.com.cn 发 行 : 新华书店经销 印 刷 : 成都蜀通印务有限责任公司 成品尺寸 : 185mm 260mm 印张 9.5 字数 240 千字 版 次 : 2008 年 7 月第一版 印 次 : 2008 年 7 月第一次印刷 书 号 : ISBN 定 价 : 元 版权所有侵权必究 本社发行部电话 : ; 本社邮购电话 : 本书如有缺页 破损 装订错误, 请寄回印刷厂调换 课件下载在我社主页 下载专区

3 前 言 内容简介本书是普通高等教育 十一五 国家级规划教材 C 语言程序设计 的上机学习指导书 其主要针对主教材课后习题和本书实验项目进行了详细解答, 并且介绍了 Turbo 2.0 /3.0 及 Visual C 编译系统的使用, 对 C 语言程序的编辑 编译 连接 运行和调试等方法进行了详细介绍和指导 全书共分四个部分, 主要内容包括 :C 语言上机指导 C 语言实验项目 C 语言课程设计 教材习题和实验项目题解 本书着眼于教材中的重点和难点知识分析以及习题解析, 为学习者指出了在 C 语言上机学习过程中需要注意的问题 希望学习者经过本书的指导学习以后, 在解决更多的疑难问题上得到指点和帮助 本书特色 1. 本习题指导针对主教材中的习题进行了全面的解答 在提供正确的源程序的基础上, 增加了算法分析 结果分析和易错点提示等内容, 对于学习者正确地 系统地理解和学习 C 语言很有帮助 2. 在实验项目中, 增加了一项综合性强 应用范围广的课程设计 这项设计不仅可以加深学习者对教材内容的领悟, 同时也提高了学习者对 C 语言知识的综合运用能力 除此之外, 还能激发学习者的学习热情和兴趣 3. 本习题指导参考了很多资深程序员的编程经验 在讲解知识的同时, 还提供了很多优秀的编程风格和习惯, 更能培养学习者实际的软件开发能力 4. 本习题指导的附录收集了很多编程的常见错误以及编译器的出错信息, 使得本书在指导习题的同时, 成为了一本 C 语言学习和开发的工具书 学习者通过本习题指导, 可以在自身的软件开发能力方面得到全面的提高 鸣谢本书由电子科技大学黄迪明 许家珆 胡德昆, 西南科技大学孙立欧编写 在本书的编写过程中, 还得到了杜海涛 张大愚 邹波 张紫微 刘鹏等人的热情帮助, 在此表示诚挚的谢意! 由于我们的水平和时间有限, 书中难免存在缺点和错误, 敬请读者和同行专家指正 编 者 2008 年 5 月于电子科技大学

4 目录 1 目 录 第 1 章 C 语言程序的上机步骤...1 第 2 章 Turbo C 2.0/3.0 使用指南 Turbo C 简介 Turbo C 2.0 文件简介 Turbo C 2.0 的启动 Turbo C 2.0 集成开发环境的使用 Turbo C 2.0 的配置文件 Turbo C 调试系统 常见的编译错误和程序调试 常见的错误类型 程序调试...23 第 3 章 Visual C++ 环境下运行 C 程序 启动 VC 新建 / 打开 C 程序文件 程序的编辑和保存 执行程序 关闭程序工作区 命令行参数处理 程序调试...31 第 4 章实验概述 本课程实验的任务 本课程实验简介 本课程适用专业 本课程实验涉及核心知识点 本课程实验重点与难点...34

5 2 第 5 章实验项目和课程设计 实验项目一 实验项目二 实验项目三 实验项目四 实验项目五 实验项目六 课程设计 课程设计一 课程设计二 课程设计三 课程设计四...38 第 6 章主教材习题参考答案 习题 习题 习题 习题 习题 习题 习题 习题 习题 课程设计解答 设计一 设计二 设计三 设计四 附录 附录一 C 语言常见错误总结 一 编程的常见错误 二 连接时的常见错误 三 运行时的常见错误 附录二 C 语言编译常见错误信息及处理方法...141

6 第 1 章 C 语言程序的上机步骤 1 第 1 章 C 语言程序的上机步骤 按照 C 语言语法规则编写的 C 程序称为 C 源程序 在主教材中, 我们已经了解到, 源程序由字母 数字及其他符号 ( 标识符 ) 等构成, 在计算机内部用相应的 ASCII 码表示, 并保存为扩展名为.c 源程序文件 ( 在本书中又被称为源代码 ) 源程序是无法直接被计算机运行的, 因为计算机的 CPU 只能执行二进制的机器指令 这就需要把源程序的 ASCII 码先 翻译 成机器指令, 然后计算机的 CPU 才能运行翻译好的程序, 也就是 ASCII 码 源程序 翻译 过程由两个步骤实现 : 编译与连接 首先对源程序进行编译处理, 即把每一条语句用若干条机器指令来实现, 以生成由机器指令组成的目标程序 但目标程序还不能马上交给计算机直接运行, 因为在源程序中, 常用函数 ( 如 scanf printf) 运算并不是用户自己编写的, 而是直接调用系统函数库中的库函数 因此, 必须把 库函数 的处理过程连接到经编译生成的目标程序中, 生成可执行程序, 并经机器指令的地址重定位, 才可由计算机运行, 最终得到结果 C 语言程序的调试 运行步骤如图 1.1 所示 编辑 编译 连接 运行 开始 源程序.c 目录程序.obj 可执行程序.obj 结果 语法错误连接错误运行错误程序调试图 1.1 C 程序的运行步骤在图 1.1 中, 实线表示程序从开始编辑到得到结果的过程, 虚线表示当某一步骤出现错误时的修改路线 程序在运行时, 无论是出现编译错误 连接错误, 还是运行结果不正确 ( 源程序中有语法错误或逻辑错误 ), 都需要修改源程序, 并对它重新编译 连接和运行, 直至将程序调试正确为止 在积累了一定的程序设计经验后, 我们会了解到 : 除了较简单的情况, 一般的程序很难一次就能做到完全正确 在上机过程中, 根据出错现象找出错误并改正称为程序调试 我们要在学习程序设计的实践过程中, 逐步培养调试程序的能力 它不可能靠几句话讲清楚, 要靠自己在上机中不断摸索总结, 可以说是一种经验积累

7 2 程序中的错误大致可分为三类 : 1. 程序编译时检查出来的语法错误 2. 连接时出现的错误 3. 程序执行过程中的错误 编译错误通常是编程者违反了 C 语言的语法规则, 如保留字输入错误 花括号不匹配和语句少分号等 连接错误一般由未定义或未指明要连接的函数, 或者函数调用不匹配等因素引起, 对系统函数的调用必须要通过 include 说明 对于编译连接错误,C 语言编译系统会提供出错信息, 包括出错位置 ( 行号 ) 出错提示信息等 编程者可以根据这些信息, 找出相应错误所在并修改 有时系统提示了一大串错误信息, 并不表示真的有这么多错误, 往往是因为程序中的一两个错误带来的, 所以当纠正了几个错误后, 应该重新编译连接一次, 然后根据最新的出错信息继续纠正, 这是程序调试的一个好方法 在本书中将会介绍更多的程序调试方法供学习者参考, 但如果要较好地掌握, 需要多多进行上机实践, 积累调试的经验 有些程序通过了编译连接, 并能够在计算机上运行, 但得到的结果和预期的结果不一样, 这类错误被称为逻辑错误 这类在程序执行过程中的错误往往难以改正 错误的原因一部分是程序书写错误带来的, 例如应该使用变量 x 的地方写成了变量 y, 虽然没有语法错误, 但意思完全错了 ; 另一部分可能是程序的算法不正确, 解题思路不对, 得到的结果和预期的结果不一样, 例如预期求两个整数的和, 在程序中却写为两个整数的差, 得到的结果肯定会和预期的不一样 ; 还有一些程序计算结果有时正确, 有时不正确, 例如求一个输入整数除以 2 的商, 如果将这个商定义为 int 型变量, 那么在该整数为偶数时正确, 奇数时就会错误, 这些现象往往是编程时对各种情况考虑不周所致 解决运行错误的首要步骤就是错误定位, 即找到出错的位置和错误的原因, 才能予以纠正 通常我们需要先设法确定错误的大致位置, 然后通过 C 语言提供的调试工具找出真正的错误 但需要大家注意的是, 在本书中, 大部分的程序在调试时, 调试工具都能直接找到程序的错误, 但也有部分比较复杂的程序, 当程序执行出错时, 调试工具发现的错误未必就一定是程序中的真正错误, 这些例子我们会在第三部分中为大家介绍 在将来的实际软件开发中, 这样的情况将会出现得更多, 所以有经验的程序员往往都认为, 寻找程序的错误不能只依靠计算机, 也需要我们自己掌握好的方法, 在实际的程序调试中积累丰富的经验 以下就将介绍几种比较好的方法 : 为了确定错误的大致位置, 可以先把程序分成几大块, 并在每一块的结束位置, 手工计算一个或几个阶段性结果, 然后用调试方式运行程序, 到每一程序块结束时, 检查程序运行的实际结果与手工计算是否一致, 通过这些阶段性结果来确定各程序块是否正确 对于出错的程序块, 可逐条仔细检查各语句, 找出错误所在 如果出错块程序较长, 难以一下子找出错误, 可以进一步把该块细分成更小的块, 按照上述步骤进一步检查 在确定了大致出错位置后, 如果无法直接看出错误, 可以通过单步运行相关位置的几条语句, 逐条检查, 这样肯定能找出错误的语句 当程序出现计算结果有时正确有时不正确的情况时, 其原因一般是算法对各种数据处理情况考虑不全面 解决办法最好多选几组典型的输入数据进行测试, 除了普通的数据外, 还

8 第 1 章 C 语言程序的上机步骤 3 应包含一些边界数据和不正确的数据 比如确定正常的输入数据范围后, 分别以最小值 最大值 比最小值小的值和比最大值大的值, 多方面运行检查自己的程序 能够处理边界数据和不正确的数据, 也是程序健壮性的体现 本书第二 三章分别以 Turbo C 2.0 和 Visual C 为上机平台, 对 C 程序编译 连接和调试进行简单介绍 建议一开始学习上机时, 把注意力放在程序的编译 连接和运行, 以能运行为目标, 而把调试部分放到学习了教材第四章内容后再看 只有具有了一定的程序语句量, 调试才有作用

9 4 第 2 章 Turbo C 2.0/3.0 使用指南 2.1 Turbo C 简介 Turbo C 是美国 Borland 公司的产品,Borland 公司是一家专门从事软件开发 研制的大公司 该公司相继推出了 Turbo 系列软件, 如 Turbo BASIC,Turbo Pascal,Turbo Prolog, 这些软件很受用户欢迎 该公司在 1987 年首次推出 Turbo C 1.0 产品, 其中使用了全然一新的集成开发环境, 即使用了一系列下拉式菜单, 将文本编辑 程序编译 连接以及程序运行一体化, 大大方便了程序的开发 1988 年,Borland 公司又推出 Turbo C 1.5 版本, 增加了图形库和文本窗口函数库等, 而 Turbo C 2.0 则是该公司 1989 年出版的 Turbo C 2.0 在原来集成开发环境的基础上增加了查错功能, 并可以在 Tiny 模式下直接生成.COM ( 数据 代码和堆栈处在同一 64KB 内存中 ) 文件, 还可对数学协处理器 ( 支持 8087/80287/80387 等 ) 进行仿真 Borland 公司后来又推出了面向对象的程序软件包 Turbo C++, 它继承发展了 Turbo C 2.0 的集成开发环境, 并包含了面向对象的基本思想和设计方法 1991 年为了适用 Microsoft 公司的 Windows 3.0 版本,Borland 公司又将 Turbo C++ 进行了更新, 即 Turbo C 的新一代产品 Borland C++ Turbo C 2.0 可运行于 IBM-PC 系列微机, 包括 XT AT 及 IBM 兼容机 此时要求 DOS 2.0 或更高版本支持, 并至少需要 448KB 的 RAM, 并且它可在任何彩 单色 80 列监视器上运行 它支持数学协处理器芯片, 也可进行浮点仿真, 这将加快程序的执行 2.2 Turbo C 2.0 文件简介 下面对 Turbo C 2.0 的主要文件进行简单介绍 : INSTALL.EXE 安装程序文件 TC.EXE 集成编译 TCINST.EXE 集成开发环境的配置设置程序 TCHELP.TCH 帮助文件 THELP.COM 读取 TCHELP.TCH 的驻留程序 README 关于 Turbo C 的信息文件 TCCONFIG.EXE 配置文件转换程序 MAKE.EXE 项目管理工具 TCC.EXE 命令行编译

10 第 2 章 Turbo C 2.0/3.0 使用指南 5 TLINK.EXE Turbo C 系列连接器 TLIB.EXE Turbo C 系列库管理工具 C0?.OBJ 不同模式启动代码 C?.LIB 不同模式运行库 GRAPHICS.LIB 图形库 EMU.LIB 8087 仿真库 FP87.LIB 8087 库 *.H Turbo C 头文件 *.BGI 不同显示器图形驱动程序 *.C Turbo C 例行程序 ( 源文件 ) 其中, 上面的? 分别为 : T Tiny( 微型模式 ),S Small( 小模式 ),C Compact( 紧凑模式 ), M Medium( 中型模式 ),L Large( 大模式 ),H Huge( 巨大模式 ) 2.3 Turbo C 2.0 的启动 安装完毕的 Turbo C 将在 C 盘根目录下建立一个 TC 子目录,TC 下还建立了两个子目录 LIB 和 INCLUDE,LIB 子目录中存放库文件, INCLUDE 子目录中存放所有头文件 运行 Turbo C 2.0 时, 只要在 TC 子目录下键入 TC 并回车即可进入 Turbo C 2. 0 集成开发环境, 如图 2.1 所示 菜单 编辑窗口 热键 信息窗口 图 2.1 Turbo C 2.0 集成开发环境 2.4 Turbo C 2.0 集成开发环境的使用 进入 Turbo C 2.0 集成开发环境后, 屏幕显示画面如图 2.1 所示 其中顶上一行为 Turbo C 2.0 主菜单, 中间窗口为编辑区, 接下来是信息窗口, 最底下一行为参考行 这四个窗口构成了 Turbo C 2.0 的主屏幕, 以后的程序编辑 编译 调试以及运行都将在这个主屏幕中进行 下面详细介绍主菜单的内容

11 6 1. 主菜单主菜单在 Turbo C 2.0 主屏幕顶上一行, 显示下列内容 : File Edit Run Compile Project Options Debug Break/watch 除 Edit 外, 其他各项均有子菜单, 只要用 Alt 键加上某项中第一个字母( 即大写字母 ), 就可进入该项的子菜单中 (1)File( 文件 ) 菜单按 Alt + F 键可进入 File 菜单, 该菜单包括以下内容 : Load( 加载 ) 装入一个文件, 可用类似 DOS 的通配符 ( 如 *.C ) 来进行列表选择, 也可装入其他扩展名的文件, 只要给出文件名 ( 或只给路径 ) 即可 该项的热键为 F3, 即只要在主菜单中按 F3 键即可进入该项, 而不需要先进入 File 菜单再选此项 Pick( 选择 ) 将最近装入编辑窗口的 8 个文件列成一个表让用户选择, 选择后将该程序装入编辑区, 并将光标置在上次修改过的地方 其热键为 Alt + F3 New( 新文件 ) 说明文件是新的, 缺省文件名为 NONAME.C, 存盘时可改名 Save( 存盘 ) 将编辑区中的文件存盘, 若文件名是 NONAME.C 时, 将询问是否更改文件名 其热键为 F2 Write to( 存盘 ) 可由用户给出文件名将编辑区中的文件存盘, 若该文件已存在, 则询问要不要覆盖 Directory( 目录 ) 显示目录及目录中的文件, 并可由用户选择 Change dir( 改变目录 ) 显示当前目录, 用户可以改变显示的目录 Os shell( 暂时退出 ) 暂时退出 Turbo C 2.0 到 DOS 提示符下, 此时可以运行 DOS 命令, 若想回到 Turbo C 2.0 中, 只要在 DOS 状态下键入 EXIT 即可 Quit( 退出 ) 退出 Turbo C 2.0, 返回到 DOS 操作系统中, 其热键为 Alt + X 说明 : 以上各项可用光标键移动色棒进行选择, 回车则执行 也可用每一项的第一个大写字母直接选择 若要退到主菜单或从它的下一级菜单列表框退回均可用 Esc 键,Turbo C 2.0 所有菜单均采用这种方法进行操作, 以下不再说明 (2)Edit( 编辑 ) 菜单按 Alt + E 键可进入编辑菜单, 若再回车, 则光标出现在编辑窗口, 此时用户可以进行文本编辑 可用 F1 键获得有关编辑方法的帮助信息 与编辑有关的功能键如下 :

12 第 2 章 Turbo C 2.0/3.0 使用指南 7 F1 键: 获得 Turbo C 2.0 编辑命令的帮助信息 F5 键: 扩大编辑窗口到整个屏幕 F6 键: 在编辑窗口与信息窗口之间进行切换 F10 键: 从编辑窗口转到主菜单编辑命令简介 : PageUp 键: 向前翻页 PageDn 键: 向后翻页 Home 键: 将光标移到所在行的开始 End 键: 将光标移到所在行的结尾 Ctrl + Y 键: 删除光标所在的一行 Ctrl + T 键: 删除光标所在处的一个词 Ctrl + K B 键: 设置块开始 Ctrl + K K 键: 设置块结尾 Ctrl + K V 键: 块移动 Ctrl + K C 键: 块拷贝 Ctrl + K Y 键: 块删除 Ctrl + K R 键: 读文件 Ctrl + K W 键: 存文件 Ctrl + K P 键: 块文件打印 Ctrl + F1 键 : 如果光标所在处为 Turbo C 2.0 库函数, 则获得有关该函数的帮助信息 Ctrl + Q 键: 查找 Turbo C 2.0 双界符的后匹配符 Ctrl + Q 键: 查找 Turbo C 2.0 双界符的前匹配符说明 : a. Turbo C 2.0 的双界符包括以下几种符号 : 花括号 和 尖括号 < 和 > 圆括号 ( 和 ) 方括号 [ 和 ] 注释号 /* 和 */ 双引号 " 单引号 ' b. Turbo C 2.0 在编辑文件时还有一种功能, 就是能够自动缩进, 即光标定位和上一个非空字符对齐 在编辑窗口中, Ctrl + O L 键为自动缩进开关的控制键 (3)Run( 运行 ) 菜单按 Alt + R 键可进入 Run 菜单, 该菜单有以下各项 : Run( 运行程序 ) 运行由 Project/Project name 项指定的文件名或当前编辑区的文件 如果对上次编译后的

13 8 源代码未做过修改, 则直接运行到下一个断点 ( 没有断点则运行到结束 ), 否则先进行编译 连接后才运行 其热键为 Ctrl + F9 Program reset( 程序重启 ) 中止当前的调试, 释放分给程序的空间 其热键为 Ctrl + F2 Go to cursor( 运行到光标处 ) 调试程序时使用, 选择该项可使程序运行到光标所在行 光标所在行必须为一条可执行语句, 否则提示错误 其热键为 F4 Trace into( 跟踪进入 ) 在执行一条调用其他用户定义的子函数时, 若用 Trace into 项, 则执行长条将跟踪到该子函数内部去执行 其热键为 F7 Step over( 单步执行 ) 执行当前函数的下一条语句, 即使用户函数调用, 执行长条也不会跟踪进函数内部 其热键为 F8 User screen( 用户屏幕 ) 显示程序运行时在屏幕上显示的结果, 其热键为 Alt + F5 (4)Compile( 编译 ) 菜单按 Alt + C 可进入 Compile 菜单, 该菜单有以下几个内容 : Compile to OBJ( 编译生成目标码 ) 将一个 C 源文件编译生成.OBJ 目标文件, 同时显示生成的文件名 其热键为 Alt + F9 Make EXE file( 生成执行文件 ) 此命令生成一个.EXE 的文件, 并显示生成的.EXE 文件名 其中.EXE 文件名是下面几项之一 a. 由 Project/Project name 说明的项目文件名 b. 若没有项目文件名, 则是由 Primary C file 说明的源文件 c. 若以上两项都没有文件名, 则为当前窗口的文件名 Link EXE file( 连接生成执行文件 ) 把当前.OBJ 文件及库文件连接在一起生成.EXE 文件 Build all( 建立所有文件 ) 重新编译项目里的所有文件, 并进行装配生成.EXE 文件 该命令不进行过时检查 ( 上面的几条命令要进行过时检查, 即如果目前项目里源文件的日期和时间与目标文件相同或更早, 则拒绝对源文件进行编译 ) Primary C file( 主 C 文件 ) 当在该项中指定了主文件后, 在以后的编译中, 如没有项目文件名则编译此项中规定的主 C 文件, 如果编译中有错误, 则将此文件调入编辑窗口, 不管目前窗口中是不是主 C 文件 Get info 获得有关当前路径 源文件名 源文件字节大小 编译中的错误数目和可用空间等信息 (5)Project( 项目 ) 菜单

14 第 2 章 Turbo C 2.0/3.0 使用指南 9 按 Alt + P 键可进入 Project 菜单, 该菜单包括以下内容 : Project name( 项目名 ) 项目名具有.PRJ 的扩展名, 其中包括将要编译 连接的文件名 例如有一个程序由 file1.c file2.c 和 file3.c 组成, 要将这 3 个文件编译装配成一个 file.exe 的执行文件, 可以先建立一个 file.prj 的项目文件, 其内容如下 : file1.c file2.c file3.c 此时将 file.prj 放入 Project name 项中, 以后进行编译时将自动对项目文件中规定的三个源文件分别进行编译, 然后连接成 file.exe 文件 如果其中有些文件已经编译成.OBJ 文件, 而又没有修改过, 可直接写上.OBJ 扩展名 此时将不再编译而只进行连接 例如 : file1.obj file2.c file3.c 将不对 file1.c 进行编译, 而直接连接 说明 : 当项目文件中的每个文件无扩展名时, 均按源文件对待, 另外, 其中的文件也可以是库文件, 但必须写上扩展名.LIB Break make on( 中止编译 ) 由用户选择是否在有 Warning( 警告 ) Errors( 错误 ) 和 Fatal Errors( 致命错误 ) 时或 Link( 连接 ) 之前退出 Make 编译 Auto dependencies( 自动依赖 ) 当开关置为 on, 编译时将检查源文件与对应的.OBJ 文件日期和时间, 否则不进行检查 Clear project( 清除项目文件 ) 清除 Project/Project name 中的项目文件名 Remove messages( 删除信息 ) 把错误信息从信息窗口中清除掉 (6)Options( 选择菜单 ) 按 Alt + O 键可进入 Options 菜单, 该菜单对初学者来说要谨慎使用 Compiler( 编译器 ) 本项选择又有许多子菜单, 可以让用户选择硬件配置 存储模型 调试技术 代码优化 对话信息控制和宏定义 这些子菜单如下 : Model: 共有 Tiny small medium compact large 和 huge 六种不同模式可由同户选择 Define: 打开一个宏定义框, 用户可输入宏定义 多重定义可用分号, 赋值可用等号 Code generation: 它又有许多任选项, 这些任选项告诉编译器产生什么样的目

15 10 标代码 Calling convention: 可选择 C 或 Pascal 方式传递参数 Instruction set: 可选择 8088/8086 或 80186/80286 指令系列 Floating point: 可选择仿真浮点 数学协处理器浮点或无浮点运算 Default char type: 规定 char 的类型 Alignmnent: 规定地址对准原则 Merge duplicate strings: 进行优化用, 将重复的字符串合并在一起 Standard stack frame: 产生一个标准的栈结构 Test stack overflow: 产生一段程序运行时检测堆栈溢出的代码 Line number: 在.OBJ 文件中放进行号以供调试时用 OBJ debug information: 在.OBJ 文件中产生调试信息 Optimization Optimize for: 选择是对程序小型化还是对程序速度进行优化处理 Use register variable: 用来选择是否允许使用寄存器变量 Register optimization: 尽可能使用寄存器变量以减少过多的取数操作 Jump optimization: 通过去除多余的跳转和调整循环与开关语句的办法以压缩代码 Source Identifier length: 说明标识符有效字符的个数, 默认为 32 个 Nested comments: 是否允许嵌套注释 ANSI keywords only: 是只允许 ANSI 关键字还是也允许 Turbo C 2.0 关键字 Error Error stop after: 多少个错误时停止编译, 默认为 25 个 Warning stop after: 多少个警告错误时停止编译, 默认为 100 个 Display warning: 显示警告信息 Portability warning: 移植性警告错误 ANSI Violations: 侵犯了 ANSI 关键字的警告错误 Common error: 常见的警告错误 Less common error: 少见的警告错误 Names 用于改变段 (segment) 组(group) 和类 (class) 的名字, 默认值为 CODE DATA 和 BSS Linker( 连接器 ) 本菜单设置有关连接的选择项, 它有以下内容 : Map file menu : 选择是否产生.MAP 文件 Initialize segments: 是否在连接时初始化没有初始化的段 Default libraries: 是否在连接其他编译程序产生的目标文件时去寻找缺省库 Graphics library: 是否连接 graphics 库中的函数

16 第 2 章 Turbo C 2.0/3.0 使用指南 11 Warn duplicate symbols: 当有重复符号时产生警告信息 Stack warning: 是否让连接程序产生 No stack 的警告信息 Case-sensitive link: 是否区分大 小写字 Environment( 环境 ) 本菜单规定是否对某些文件自动存盘及制表键和屏幕大小的设置 Message tracking: 跟踪邮件 Current file: 跟踪在编辑窗口中的文件错误 All files: 跟踪所有文件错误 Off: 不跟踪 Keep message: 编译前是否清除 Message 窗口中的信息 Config auto save: 选 on 时, 在 Run Shell 或退出集成开发环境之前, 如果 Turbo C 2.0 的配置被改过, 则所做的改动将存入配置文件中 ; 选 off 时不存 Edit auto save: 是否在 Run 或 Shell 之前, 自动存储编辑的源文件 Backup file: 是否在源文件存盘时产生后备文件 (.BAK 文件 ) Tab size: 设置制表键大小, 默认为 8 Zoomed windows: 将现行活动窗口放大到整个屏幕, 其热键为 F5 Screen size: 设置屏幕文本大小 Directories( 路径 ) 规定编译 连接所需文件的路径, 有下列各项 : Include directories: 包含文件的路径, 多个子目录用 ; 分开 Library directories: 库文件路径, 多个子目录用 ; 分开 Output directory: 输出文件 (.OBJ.EXE.MAP 文件 ) 的目录 Turbo C directory:turbo C 所在的目录 Pick file name: 定义加载的 pick 文件名, 如不定义则从 current pick file 中取 Arguments( 命令行参数 ): 允许用户使用命令行参数 Save options( 存储配置 ): 保存所有选择的编译 连接 调试和项目到配置文件中, 缺省的配置文件为 TCCONFIG.TC Retrieve options: 装入一个配置文件到 TC 中,TC 将使用该文件的选择项 (7)Debug( 调试 ) 菜单按 Alt + D 可选择 Debug 菜单, 该菜单主要用于查错, 它包括以下内容 : Evaluate( 估值 ) Expression: 要计算结果的表达式 Result: 显示表达式的计算结果 New value: 赋给新值 Call stack: 在 Turbo C debugger 时用于检查堆栈情况 Find function: 在运行 Turbo C debugger 时用于显示规定的函数

17 12 Refresh display: 如果编辑窗口偶然被用户窗口重写了可用此恢复编辑窗口的内容 (8)Break/watch( 断点及监视表达式 ) 按 Alt + B 键可进入 Break/watch 菜单, 该菜单有以下内容 : Add watch: 向监视窗口插入一监视表达式 Delete watch: 从监视窗口中删除当前的监视表达式 Edit watch: 在监视窗口中编辑一个监视表达式 Remove all watches: 从监视窗口中删除所有的监视表达式 Toggle breakpoint: 对光标所在的行设置或清除断点 Clear all breakpoints: 清除所有断点 View next breakpoint: 将光标移动到下下一个断点处 上面我们只对 TC 中主要的功能进行了介绍, 对于其他的操作读者可以自己试验, 或参考有关 Turbo C 手册 (9) 常用快捷键小结 F2 键: 保存程序 F3 键: 调入程序文件 F4 键: 程序运行到光标处暂停 Alt + F5 键: 查看运行结果 F7 键: 单步执行 ( 可进入函数 ) F8 键: 单步执行 ( 不能进入函数 ) Ctrl + F2 键: 结束程序调试运行 Alt + F3 键: 调入最近曾经用过的文件 F5 键: 放大 / 缩小窗口 F6 键: 窗口切换 Ctrl + F7 键: 增加查看变量 Ctrl + F8 键: 把光标所在行设为断点或取消断点 F9 键: 编译 连接程序 Alt + F9 键: 编译程序 Ctrl + F9 键: 编译 连接 执行程序 F10 键: 菜单选择 F1 键: 帮助 Alt + x 键: 退出系统 2.5 Turbo C 2.0 的配置文件 所谓配置文件是包含 Turbo C 2.0 有关信息的文件, 其中存有编译 连接的选择和路径等信息 可以用下述方法建立 Turbo C 2.0 的配置 :

18 第 2 章 Turbo C 2.0/3.0 使用指南 建立用户自命名的配置文件 可以从 Options 菜单中选择 Options/Save options 命令, 将当前集成开发环境的所有配置存入一个由用户命名的配置文件中 下次启动 TC 时只要在 DOS 下键入 : tc/c< 用户命名的配置文件名 > 就会按这个配置文件中的内容作为 Turbo C 2.0 的选择 2. 若设置 Options/Environment/Config auto save 为 on, 则退出集成开发环境时, 当前的设置会自动存放到 Turbo C 2.0 配置文件 TCCONFIG.TC 中 Turbo C 在启动时会自动寻找这个配置文件 3. 用 TCINST 设置 Turbo C 的有关配置, 并将结果存入 TC.EXE 中 Turbo C 在启动时, 若没有找到配置文件, 则取 TC.EXE 中的缺省值 注 : 常见问题 1.Turbo C 2.0 和 Turbo C 3.0 编译过程中遇到如下问题 : a. 找不到 stdio.h conio.h 等 include 文件 ; b. 出现 cos.obj 无法连接之类的错误 这些问题是由于没有设置好路径引起的, 目前下载的 TC2 和 TC3 按安装分类大概有两种版本 : 一是通过 install 安装, 这类应该已经设置好了路径 ; 二是直接解压后建立 TC.EXE 的快捷方式, 在 Windows 下双击即可运行 (DOS 下直接运行 TC.EXE), 目前国内大多用户采用这种方式, 因此使用前请注意路径设置, 设置方法如图 2.2 所示 图 2.2 路径设置如图 2.2 所示的设置方法为 : OPTION > DIRECTORIES: INCLUDE:[TC2/3 所在目录 ]/include LIB:[TC2/3 所在目录 ]/lib output: 输出目录请自己设置一个工作目录, 以免混在一起最后还提醒一点 :FILES 中的 Change dir( 改变当前目录 ) 中应设置为当前程序所在目录 2. 命令行参数的输入 菜单方式在编程中, 如果使用命令行参数, 可以执行 option 菜单的 Arguments 菜单项, 输入命令行

19 14 参数 ( 不包括可执行文件名, 如果参数多于一个, 则参数间用空格隔开 ), 回车结束输入 按 Esc 键隐去菜单, 然后按 Ctrl+F9 键运行程序, 参数便能被主函数接收 命令行方式对源程序进行编译连接生成对应的.exe 文件后, 按 Alt + F 进入文件菜单, 选择 DOS SHELL 进入 DOS 命令提示符状态后, 在命令行输入 文件名.exe 参数 1 参数 2 执行命令行参数的程序 2.6 Turbo C 调试系统 在开发一个 C 语言程序的过程中, 当完成了程序的编制 编译和连接并在此过程中改正了各种错误以后, 程序的运行并不一定正确 一个程序在设计过程中会出现很多错误, 包括逻辑错误 变量名错误和运算符错误等 例如, 我们希望编制一个程序, 它读入了 10 个整数, 求他们中的最大值, 并把他们中的每个数的个位数显示出来 这个程序在编制时出现了某些错误, 如下所示 : 1.main() int a[10],b[10],max_value,i; 4. for(i=0;i<10;i++) 5. scanf("%d",&a[i]); 6. max_value=32767; 7. for(i=0;i<10;i++); if(a[i]>max_value) 10. max_value=a[i]; 11. b[i]=a[i]/10; printf("the max value is%d\n", max_value); 14. printf("the first bit of each number is:\n"); 15. for(i=0;i<10;i++); 16. printf("%4d",b[i]); 17. 程序中除了第 7 行和第 15 行的语法错误外, 还有两个错误 : 1. 变量 max_value 的初值应为 , 这是在微型机上整型变量的最小值, 但语句中却赋成了最大值, 由于输入的数据中没有大于 的数, 故每次程序的输出结果都是 max _value= 取一个整数 a[i] 的个位应该用运算 a[i]%10, 而程序中却写成了 a[i]/10, 因此程序的输出结果是各整数整除 10 的商, 而不是它们的个位

20 第 2 章 Turbo C 2.0/3.0 使用指南 15 这些问题在程序的编译和连接中是发现不了的, 因为它们并不造成语法或语义错误, 但这些问题会造成程序的执行错误 当程序本身很大时, 要发现这些错误并不容易 为此, Turbo C 提供了一个调试程序, 专门用来对程序进行动态调试, 以发现程序中的各种逻辑错误及其他错误 下面简单地介绍 Turbo C 的调试程序的使用方法 首先进入 Turbo C 的集成开发环境, 与程序调试有关的屏幕菜单有 : Debug 菜单 Break/watch 菜单 Run 菜单先分别介绍这几个菜单 1.Break/watch 菜单在主菜单下按 Alt + B 键, 就进入 Break/watch 菜单, 如图 2.3 所示 图 2.3 Break/watch 菜单这里 Watch 指的是屏幕的监视窗口, 它位于屏幕的编辑窗口的下部 在调试程序时, 可以从这个监视窗口中看到你所指定的某些变量或数组元素在程序的执行过程中的变化 选择项 Add watch 允许键入一个变量名或一个表达式, 调试程序把这个变量或表达式送入监视窗口, 这样, 当程序运行时, 就可以看到这个变量或表达式的值的变化情况 选择项 Delete watch 允许把一个变量或表达式从监视窗口中删除 选择项 Remove all watches 允许把监视窗口中的所有变量或表达式删除 选择项 Edit watch 允许修改监视窗口中的表达式, 假如上次监视的是变量 b[2], 现在希望监视变量 b[3], 则可用 Edit watch 输入 b[3] 并替换掉原监视窗里的 b[2] Breakpoint 指的是断点, 即程序执行的暂停点 当在程序中设置了断点后, 程序在每次执行过程中, 一旦碰到了断点, 就停止运行 这时, 就可以通过监视窗口和其他方式检查程序的运行情况, 以便于发现和纠正错误 选择项 Toggle breakpoint 设置或去除一个断点 为了设置一个断点. 首先把光标定在编辑窗口中某个语句所在行, 然后选择 Toggle breakpoint 项, 调试程序就在这个

21 16 语句处设置了一个断点 调试完毕后把光标移到编辑窗口中断点所在行, 再一次选择 Toggle breakpoint, 就可以去除这个断点 选择项 Clear all breakpoints 从程序中删除所有断点 选择项 View next breakpoint 将光标移到程序中的下下一个断点的位置, 而不是让程序运行到下一个断点处 2.Debug 菜单在主菜单下按 Alt + D 键, 就进入 Debug 菜单, 如图 2.4 所示 图 2.4 Debug 菜单在调试过程中使用得较多的是 Evaluate 选择项和 Source debugging 选择项 Source debugging 选择项用来接通集成调试程序, 当要使用调试程序进行调试以前, 一定要把这个选择项设为 on 状态 Evaluate 选择项计算变量或表达式的值, 并允许用户对其修改 该命令打开一个新的窗口, 该窗口分为三个段 : 计算段 结果段和新值段 可以在计算段里键入一个变量或一个表达式, 调试程序将在结果段中显示这个变量或表达式的当前值 如果需要修改变量或表达式的值, 则在新值段中键入新的数值, 这个新值将替换掉程序中相应变量的当前值 该命令还可以用重复表达式来显示一系列数据元素的值 例如对于整型数组 a, 可用 a[0],5 显示 a[0],a[1],,a[4] 五个整数的值 在结果段显示的数据和在新值段修改的数据都可以有各种不同的数据格式, 如十进制 十六进制 字符和字符串等 数据格式的说明是在计算段中表达式的后面跟上一个格式控制符 常用的格式控制符有 : c: 显示字符 s: 显示字符串 d: 显示十进制数 x: 显示十六进制数

22 第 2 章 Turbo C 2.0/3.0 使用指南 17 f: 显示浮点数例如 : a[0],x 表示按十六进制显示变量 a[0] 的值 3.Run 菜单在主菜单下按 Alt + R 键, 就进入 Run 菜单, 如图 2.5 所示 其中, 选择项 Run 运行程序, 若程序中没有设置断点, 则程序一直运行到底 ; 若设有断点, 则运行到断点处 图 2.5 运行菜单 选择项 Program reset 终止当前的程序调试 选择项 Go to cursor 使程序从当前的高亮度长条运行到编辑窗口的光标所在行 选择项 Trace into 和 Step over 都用于执行一条语句, 但前者可以跟踪进入函数定义内部, 而后者只是简单地单步执行一条语句 下面我们举例说明调试程序的使用方法 如果已经更正了第 7 行和第 15 行的语法错误, 对于 2.6 节给出的错误程序 : 1.main() int a[10],b[10],max_value,i; 4. for(i=0;i<10;i++) 5. scanf("%d",&a[i]); 6. max_value=32767; 7. for(i=0;i<10;i++); if(a[i]>max_value) 10. max_value=a[i]; 11. b[i]=a[i]/10; printf("the max value is%d\n",max_value);

23 printf("the first bit of each number is:\n"); 15. for(i=0;i<10;i++); 16. printf("%4d",b[i]); 17. 当我们运行一次这个程序后发现运行结果是错误的 此时, 我们用 Alt + B 进入监视和断点菜单, 选择 Toggle breakpoint, 在第 7 行处设置一个断点, 并用 Add watch 功能把 max_value 和 b[i] 送到监视窗口里 下一步在运行菜单 ( Alt + R ) 中选择 Run 命令, 令程序开始执行, 此时从键盘上输入 10 个整数 : 程序运行到第 7 个语句时停止, 然后在运行菜单 ( Alt + R ) 中选择 Step over 或直接用 F8( 单步运行 ) 键, 一次一个语句的运行第 7 行 ~11 行构成的循环体 此时可以在监视窗口中看到变量 max_value 和 b[i] 的值, 并立即可以发现变量 max_value 的值始终保持不变, 而 b[i] 的值是 a[i] 整除 10 以后的商 发现错误以后, 可以直接在编辑窗里进行修改 此时把程序的第 6 行改为 : max_value= 32767; 把第 10 行改为 : b[i]=a[i]%10; 再按上述方法调试一次程序, 证明程序的运行结果是正确的 此时, 可以在断点和监视菜单里再一次使用 Toggle breakpoint 或使用 Clear all breakpoints 清除断点, 并用 Remove all watch 清除监视窗里的内容 程序的调试到此为止 2.7 常见的编译错误和程序调试 常见的错误类型 1. 遗漏花括号花括号通常用来构成两个或多个语句构成的复合语句, 当要对多个语句一起进行处理时, 如果忘记了使用花括号构成复合语句, 则只有第一个语句能按原意图执行 例如 : while(i<max) if(score[i]>59) printf("no%2d:%3d",i+1,score[i]); i++; 该程序段的目的是打印出全部及格学生的代号和分数 但由于遗漏了花括号, 只能处理第一个学生的成绩, 并且在 while 语句中不能执行 i++ 语句, 循环控制变量不能改变, 而进入死循环 上面程序段的正确编程应写为 :

24 第 2 章 Turbo C 2.0/3.0 使用指南 19 while(i<max) if(score[i]>59) printf("no%2d:%3d",i+1,score[i]); i++; 通常在其他复杂的控制语句中, 如 for if 和 do 等, 编程者可能忘记加花括号或使之成对 当遗漏一个花括号时, 可能出现更复杂的情况 通常这与后续的语句有关系 例如 : main() int i,sum=0; for(i=1;i<=10;++i) sum=sum+i; printf("%d%d\n",i,sum); 这里,for 循环语句行的末端缺少一个右花括号 编译程序在处理时, 把用来结束 main() 的花括号, 当成用来结束 for 循环了, 认为缺少 main() 的右花括号 因此有的编译程序可能产生 不期望的文件结束 的错误信息, 因此当编好一个程序, 特别是用了许多花括号时, 应仔细检查一下, 看左 右花括号是否配对 2. 遗漏分号或错放分号例如 :start=top 这个语句由于未用分号结束, 编译程序可以查出这一种错误, 但有时, 某些编译程序可能产生一种 误解 的出错信息 因为当编译程序进行扫视时, 它必须进行语法检查, 确定语句是否用的是 C 语言结构 如果遗漏分号, 编译程序可能把下一行看成是该行的一部分, 根据这两行的内容, 编译程序就可能产生误解的出错信息 如果编译时指出某一错误行, 但并未检查出问题 通常应该去检查它的前一行, 看是否遗漏了分号 遗漏分号可能引起许多出错信息 然而, 一旦这个错误被改正, 一切就立即正常 另一个常见的错误是错放了分号 例如 : for(n=1;n<=10;n++); printf("%d",n*n); for 语句的原意是输出自然数 1~10 的平方值 但是, 由于在圆闭括号后错用了一个分号, 实际上 printf() 语句不受 for 控制 为了更清楚地说明这个问题, 上述语句可写成如下形式 : for(n=1;n<=10;n++) ; printf("%d",n*n);

25 20 for 循环所控制的语句是空语句 NULL( 只有一个分号 ), 这是什么都不做的循环 由于空语句在语法上是有效的, 编译程序不能检查出错误, 但程序运行时却不能得到正确的结果 这类错误也常常出现在其他控制语句中 3. 将等号 = = 误用为赋值号 = 这种错误通常出现在 if while 和 do 等控制语句中, 当需要进行关系 等于 测试时, 常常误用了赋值号 由于编译程序无法查出这种错误, 程序运行时可能得到错误结果 例如 : main() int x=0; while(x<=100) ++x; if(x=50) printf("x=%d",x); 该程序原意是当 x 的值自增到 50 时, 打印出 x 的值 但由于将等号 = = 误用为赋值号 =, 这样, 由于 x 赋了一个非零值,if 语句的判定条件总是为真, 每次循环都执行 printf 语句 只有将 = 改为 ==, 程序才能正确运行 4. 注释引起的错误编译程序对注释 /* 和 */ 之间的内容不编译 在程序中适当地加以注释, 不仅使程序易于阅读, 而且对编译后程序的大小或运行速度不会产生影响 但使用不小心时, 就可能带来麻烦 例如, 如果在注释时用了一个 /*, 但忘记了另一个 */, 编译程序编译时会把 /* 后面的内容全部当成注释, 而不进行编译直到遇到一个 */ 为止 如果遇不到, 有的编译程序会显示出错信息 unexpected end_of file, 以表示文件在不期望的情况下结束 这一信息为查找这种错误提供了方便 和使用花括号一样, 编程者也必须注意注释符号的配对使用 5. 顺序性错误在 C 语言中使用加 1 和减 1 运算时, 必须注意变量和运算符的位置 例如 : x=20; x=20; y=x++; y=++x; y 的值在上面两种情况下是不相同的 在左边,x 的值赋给 y 后再加 l,y 为 20; 在右边,x 的值先加 1 后再赋给 y,y 为 2l 又例如 : while(c=getchar()!='*') putchar(c); 该语句段原意是将从键盘输入的字符, 只要不等于自定义的一个结束标志符号 ' * ', 就显示在屏幕上 但忘记了使用圆括号将 c=getchar() 括起 由于 不等 检测运算符的优先级

26 第 2 章 Turbo C 2.0/3.0 使用指南 21 高于赋值运算符 因此 c 的值由 getchar() 函数返回的值是否等于 ' * ' 而定, 若不相等,c 为 1; 若相等,c 为 0 运行结果达不到预期目的 正确的写法应为: while((c=getchar())!='*') putchar(c); 6. 使用错误的数组下标值数组下标的有效范围是从 0 至数组包含的元素数目减 1 在使用数组时, 应注意正确使用数组上下限下标值 例如有一个包含 100 个整型数据的数组 a[l00], 若要求各元素之和, 使用了下面的 for 循环语句 for(i=1;i<=100;++i) sum+=a[i]; 由于循环变量 i 的初值 1 和终值 100 与数组 a 的下标初值 0 和终值 99 不同, 因此, 由此获得的是不正确的运行结果 在使用字符数组时, 编译器自动给字符串末尾加上一个字符串结束标志 NULL( 空字符 ), 需要增加一个存储单元 例如 : 字符串 score 需要 6 个存储单元, 而不是 5 个 7. 调用参数错误在函数调用时, 必须保证传递给函数的实参数与形式参数类型相同 如果函数的形式参数是浮点型, 则必须传递浮点型实参, 否则程序不能正确运行 例如 : 下面是一个求两个实数之商的程序, 但编写有错 main() int x,y; scanf("%d%d",&x,&y); printf("%d",div(x,y)); float div(a,b) float a,b; return(a/b); 这里, 不仅用整型实参数 x 和 y 调用 div() 函数是错误的, 而且要 div() 函数返回整型值也是错误的 在 scanf() 函数调用中, 必须使用参数的地址, 而不是参数的值, 因此在非指针变量前必须加单目运算符 & 例如, 下面是一个错误使用 scanf() 函数的程序 main() int no;

27 22 char name[10]; float score; scanf("%d%s%f",no,name,score); printf("%d%s%f",no,name,score); 该程序 scanf 语句中,no 和 score 两个变量前遗漏了 & 符号, 但 name 表示字符串的首地址, 在 name 前面不用加 & 符号, 因此正确的 scanf 语句应为 : scanf("%d%s%f",&no,name,&score); 这里出现的错误, 是使用 scanf 语句最容易出现的错误, 应引起注意 8. 函数说明的疏漏只要函数返回值不是整型, 就必须在定义函数时说明其返回值类型的情况下, 必须在调用该函数的函数内说明被调用函数原型 要使前面列举的求两个实数的商的程序能正确运行, 除了必须修改实参数的类型外, 还必须在调用 div() 函数前, 增加说明 div() 函数返回 float 数据类型的说明语句 正确的程序应该是 : main() float x,y; float div(float,float); scanf("%f%f",&x,&y); printf("%f",div(x,y)); float div(a,b) float a,b; return(a/b); 9. 函数重名错误如果自定义函数与标准库函数同名, 那么标准库函数将被自定义函数重新定义, 多数编译器会用自定义函数代替标准库中的函数, 从而造成一些难以发现的错误 为了避免产生这类错误 通常不要把自己写的函数与标准库中的函数取相同的名字 10. 使用指针错误在使用指针前, 必须记住对指针进行初始化 如果不给指针赋一个地址, 那么就无从知道它指向何处 例如, 下面使用指针的方法是错误的 : char *c; *c='a';

28 第 2 章 Turbo C 2.0/3.0 使用指南 程序调试只要程序中有错误, 就必须对程序进行 调试, 以分离错误并校正错误 调试过程通常包括三个步骤 :(1) 发现错误 ;(2) 分离错误 ;(3) 校正错误 1. 错误的分类 (1) 语法错误最容易发现的错误是语法错误 如前所介绍的那些错误, 在多数情况下, 编译程序能发现错误并分离出来, 并指出出错的源程序行号 校正这类错误的方法是编辑出错行, 改错后重新编译 (2) 程序出错这是比较严重的一类错误 由于是 逻辑上的 错误, 编译程序无法发现, 程序虽能执行, 但不是正确的运行结果 在这种情况下, 编程者必须根据已知的错误, 从程序中查找并分离出错误来源 通常分离错误是调试中的一个关键步骤 2. 查错和排错正如前面指出的编译可以找出语法和语义错误, 但它不能查出程序是否编得恰当以及算法是否正确的错误 当程序可以执行, 但得不到期望的结果时, 为了查出错误. 程序员就必须从头到尾仔细地对整个程序进行检查 如果算法是正确的, 那么查找错误的过程可以先使用一组检查数据, 把已知的数据送入程序, 并且把程序 划小 进行处理, 直到分离出错误来源为止 程序的划小可以通过在程序中放入若干打印语句 printf(), 通过检查一些指定变量的值或中间结果, 就可能把出错的原因分离出来 为了避免潜在错误, 对程序应使用极限值进行测试 如果有错, 根据产生错误的数据源, 应查找程序中与数据有关的部分, 确定出错原因 3. 调试的一般原则编程和调试方法各式各样, 因人而异 但事实上, 人们在实践中已找到了一些具有较多优点的方法 在调试方面, 逐步检验编程模块被认为是费用最低 时间最省的方法 这种方法的步骤是, 在程序开发过程中, 先建立一个基础的工作程序块, 当新的程序块增添到这个单元, 就对它进行检验和调试 使用这种方法, 编程者很容易发现错误, 因为错误很有可能出现在新增添的程序部分 虽然, 采用这种方法, 程序的编制表面上看起来似乎慢了些, 但逐步检验能保证程序在研制过程中每个程序模块的质量 只要程序到了能运行的程度就应试运行一下, 并对已完成的部分全面试验一遍 以后, 在程序中每增加一个模块, 就将新加入的模块同已能运行的部分一起调试一次 这样做可以保证所有的故障都集中在很小的范围内 4. 调试过程 TC 提供了必要的调试手段和工具, 下面按照使用过程予以介绍 (1) 让程序执行到中途暂停以便观察阶段性结果 : 方法一 : 使程序执行到光标所在的那一行暂停 1 把光标移动到需暂停的行上 ;

29 24 2 按 F4 键或执行菜单 Run 中的 Go to Cursor 操作 当程序执行到该行将会暂停 如果把光标移动到后面的某个位置, 再按 F4 键, 程序将从当前的暂停点继续执行到新的光标位置, 第二次暂停 方法二 : 把光标所在的那一行设置成断点, 然后按 Ctrl + F9 键执行, 当程序执行到该行将会暂停 设置断点的步骤为 : 1 把光标移动到需暂停的行上 ; 2 按 Ctrl + F8 键或执行菜单 Break/watch 中的 Toggle breakpoint 操作 不管是通过光标位置还是断点设置, 其所在的程序行必须是程序执行的必经之路, 亦即不应该是分支结构中的语句, 因为该语句在程序执行中受到条件判断的限制, 有可能因条件的不满足而不被执行 这时程序将一直执行到结束位置或下一个断点位置 (2) 设置需观察的结果变量按照上面的操作, 可使程序执行到指定位置时暂停, 其目的是为了查看有关的中间结果 按 Ctrl + F7 键或菜单 Break/watch 中的 Add watch 操作, 屏幕上将会弹出小窗口供输入查看变量, 如图 2.6 所示, 我们输入了变量 i 进行查看 图 2.6 输入查看变量对于图 2.6 中的例子, 我们先把光标移动到第五行, 然后按 F4 键执行, 程序到第五行暂停, 如图 2.7 所示, 查看 (Watch) 窗口中就会显示查看变量 i 的当前值 绿色光条表示当前将被执行的程序位置 ( 或暂停位置 ) 图 2.7 查看中间结果多次使用 Ctrl + F8 键可增加多个新的查看变量 如果想改变查看变量的名字或删除查看变量, 可以按 F6 键, 使查看窗口成为操作窗口, 然后按回车键 Enter 可以改变查看变量, 按删除键 Delete 可以删除查看变量 这些菜单功能分别在 Break/watch 中

30 第 2 章 Turbo C 2.0/3.0 使用指南 25 (3) 单步执行当程序执行到某个位置时发现结果已经不正确了, 说明在此之前肯定有错误存在 如果能确定一小段程序可能有错, 先按上面步骤暂停在该小段程序的头一行, 再输入若干个查看变量, 然后单步执行, 即一次执行一行语句, 逐行检查下来, 看看到底是哪一行造成结果出现错误, 从而能确定错误的语句并予以纠正 单步执行按 F8 键或执行菜单 Run 中的 Step over 操作 如果遇到自定义函数调用, 想进入函数进行单步执行, 可按 F7 键或执行菜单 Run 中的 Trace into 操作 对不是函数调用的语句来说, F7 键与 F8 键作用相同 但一般对系统函数不要使用 F7 键 (4) 断点的使用使用断点也可以使程序暂停 但一旦设置了断点, 不管你是否还需要调试程序, 每次执行程序都会在断点上暂停 因此调试结束后应取消所定义的断点 方法是先把光标定位在断点所在行, 再按 Ctrl + F8 键或执行菜单 Break/watch 中的 Toggle breakpoint 操作, 该操作是一个开关, 第一次按是设置, 第二次按是取消设置 被设置成断点的行将呈红色背景 如果有多个断点想一下全部取消, 可执行菜单 Break/watch 中的 Clear all breakpoints 操作 断点通常用于调试较长的程序, 可以避免使用 F4 键 ( 运行程序到光标处暂停 ) 功能, 因为 [F4] 功能, 经常需要把光标定位到不同的地方, 而对于长度为上百行的程序, 要寻找某位置并不太方便 如果一个程序设置了多个断点, 按一次 Ctrl + F9 键会暂停在第一个断点, 再按一次 Ctrl + F9 键会继续执行到第二个断点暂停, 依次执行下去 (5) 结束调试 TC 中通过 结束程序运行 (Program reset) 来结束程序调试 按 Ctrl + F2 键或执行菜单 Run 中的 Program reset 操作实现 (6) 循环的调试实例下面用单步执行功能来看一下 for 语句的执行流程, 如图 2.8 所示 程序中把 for(;;) 分成三行, 以便观察执行流程 先把光标移动到第四行, 然后按 F4 键或执行菜单 Run 中的 Go to Cursor 操作, 按 Ctrl + F7 键输入查看变量 i, 由于此时 i 未赋过值, 所以显示的是一个随机数 再连续按 F8 键单步执行, 可以观察绿色光条的位置变动和查看变量 i 的变化, 绿色光条的位置变动就是程序执行的过程, 可以充分体会到 for 语句的执行流程 图 2.8 循环调试实例 通过这个例子, 读者可以举一反三调试自己的程序了

31 26 第 3 章 Visual C++ 环境下运行 C 程序 Visual C++ 6.0( 以下简称 VC++) 是微软公司开发的面向 Windows 编程的重要开发工具, 属于 Visual Studio 集成开发套件中一个重要的部分 相对于传统的开发环境,Visual C++ 能大大缩短开发周期, 降低软件的开发费用, 所以在实际的程序设计开发中, 使用非常广泛 加上 Visual C++ 比 TC 的可视化更加优越, 操作更加方便, 调试方法更加多样和灵活, 使得 Visual C++ 同样成为我们学习 C/C++ 语言的一种重要的程序设计工具 虽然 Visual C++ 主要是开发语言为 C++, 但该工具同样可以用 C 语言进行程序设计, 下面我们就对 Visual C++ 进行详细的使用介绍 3.1 启动 VC++ VC++ 是一个庞大的语言集成工具, 经安装后将占用几百兆磁盘空间 另外, 使用者编写的程序经过保存后还会占用一部分磁盘空间 首先, 打开 Visual C 从 开始 程序 Microsoft Visual Studio 6.0 Microsoft Visual C++ 6.0, 可启动 VC++, 或者直接双击桌面上的图标 Microsoft Visual C++ 6.0, 也可以启动 VC++, 屏幕上将显示, 如图 3.1 所示的窗口 图 3.1 VC++ 界面窗口 整个窗口基本可以分为 菜单栏 工具栏 编辑区 工作区 和 输出窗口, 如图 3.2 所示 各个部分的基本功能如下 :

32 第 3 章 Visual C++ 环境下运行 C 程序 27 菜单栏 : 包含了 Visual C 所有的功能, 并将功能分类在不同的菜单 用户可以根据需要, 在菜单中直接使用 Visual C 提供的功能 工具栏 : 提供了 Visual C 最常用的一些功能, 如 保存 打开 和 复制 等 用户可以直接在界面上使用 编辑区 : 进行程序编辑的主要区域, 在新建一个 C source file 后, 用户可以在该区域进行程序的编辑和修改等操作 工作区 : 主要进行软件项目工程的管理 输出窗口 : 主要用于显示程序调试或运行的结果 具体的错误信息 警告信息和详细的调试信息 图 3.2 VC++ 窗口的功能介绍 3.2 新建 / 打开 C 程序文件 在菜单栏中, 选择 文件 菜单的 新建 菜单项, 单击如图 3.3 所示的 文件 标签, 选中 C++ Source File, 按 确定 然后就可以在主界面的编辑区中开始编辑程序 另外, 在图 3.3 中, 右边的 文件 栏可以输入文件名, C 目录 栏可以设定文件保存的路径和地址 如果程序已经输入过, 可选择 文件 菜单的 打开 菜单项, 并在查找范围中找到正确的文件夹, 选择调入需要编辑的 C 源代码程序文件 打开后, 在主界面的编辑区内, 将显示这个程序, 用户可以进行直接的编辑 3.3 程序的编辑和保存 在打开的 VC++ 界面上, 可直接在编辑区输入程序, 由于完全是 Windows 界面, 输入及修改可借助鼠标和菜单进行, 十分方便 初学者可以参考本书教材部分第一章的部分简单程序进行编辑, 借此熟悉整个的编辑环境 当输入结束后, 应该保存文件, 选择 文件 菜单

33 28 的 保存 菜单项进行保存 注意在程序保存时, 对于本书中的 C 语言程序应指定扩展名.C, 否则系统将按默认的 C++ 扩展名.CPP 保存 如果不保存, 在程序的执行阶段, 系统同样会要求用户保存程序, 方法同上 如图 3.4 所示 图 3.3 新建文件 图 3.4 指定保存文件名和扩展名 3.4 执行程序 首先我们编辑一个程序, 在屏幕上显示 hello, 代码如图 3.6 所示 程序编辑完成后需要生成可执行文件, 可使用 VC++ 编译 菜单中的 构件 菜单项, 如图 3.5 所示, 也可使用快捷键 F7 在编译连接过程中 VC++ 将保存该新输入的程序, 并生成一个同名的工作区 保存文件时须填入文件名, 如 1-1.C 假如不指定扩展名.C,VC++ 会把扩展名定义为.CPP, 即 C++ 程序 编译连接生成可执行程序 图 3.5 编译连接菜单

34 第 3 章 Visual C++ 环境下运行 C 程序 29 如果程序没有错误, 将显示如图 3.6 所示信息窗口中的内容 : 0 error(s) 0 warning(s) 表示没有任何错误和警告 需要初学者注意的是, 程序有时会出现几个警告性信息 (warnings), 警告不影响程序执行, 只有致命性错误 (errors) 才影响 图 3.6 编译连接正确假如有致命性错误 (errors), 如图 3.7 所示, 双击输出窗口某行出错信息, 程序编辑区中会用蓝色箭头指示对应出错位置 根据信息窗口的提示分别予以纠正 在程序修改后, 再进行编译, 如果还有错, 反复调试编译直到正确, 最后用 编译 菜单中的 执行 菜单项 ( 或快捷键 Ctrl + F5 ) 执行程序 图 3.7 编译连接出错 当运行 C 程序后,VC++ 将自动弹出数据输入输出窗口, 如图 3.8 所示 按任意键将关闭该窗口 (Press any key to continue) 图 3.8 数据输入输出窗口

35 30 对于编译连接执行操作,VC++ 还提供了一组快捷工具按钮 ( 编译微型条 ) 该工具组一般在 VC++ 界面的右上方, 但可以拖动, 放在用户指定的位置, 如图 3.9 所示 编译构造执行 图 3.9 编译连接执行快捷工具按钮组 3.5 关闭程序工作区 在 VC++ 环境中, 当一个程序编译连接后, 系统会自动产生相应的工作区, 以完成程序的运行和调试 若想执行第二个程序, 必须关闭前一个程序的工作区, 然后通过新的编译连接, 产生第二个程序的工作区 否则的话运行的将一直是前一个程序 有的初学者在编辑了多个程序后, 发现运行的结果还是第一个程序, 就是这个原因造成的 文件 菜单提供关闭程序工作区功能, 如图 3.10 所示, 执行 关闭工作区 菜单功能, 然后在如图 3.11 所示对话框中选择 否, 此时会关闭左边窗口中的工作区, 但还保留着编辑区中的源程序 如果选择 是, 将同时关闭源程序窗口 图 3.10 关闭程序工作区 图 3.11 关闭工作区对话框 3.6 命令行参数处理 VC++ 是一个基于窗口操作的 C++ 系统, 没有提供命令行参数功能 我们需要在 Windows 的 MS-DOS 方式 窗口里以命令方式实现 具体步骤参考如下 :

36 第 3 章 Visual C++ 环境下运行 C 程序 31 (1) 正确编译连接, 生成可执行程序 ; (2) 通过 我的电脑 或 资源管理器 找到所运行的 C 源程序 ( 设为 a.c); (3) 进入 debug 文件夹 ( 它包含 a.c 程序的可执行文件 a.exe); (4) 执行 开始 菜单的 运行, 填入 command, 然后 确定 ; (5) 在打开的 MS-DOS 方式 窗口中输入 :a 参数 1 参数 2, 带参数运行程序 3.7 程序调试 VC++ 是一个完全基于 Windows 的系统, 所以它的调试过程通过鼠标比较容易进行 (1) 程序执行到中途暂停以便观察阶段性结果 : 方法一 : 使程序执行到需要的那一行暂停 1 在需暂停的行上单击鼠标, 定位光标 ; 2 如图 3.12 所示, 分别点击菜单 编译 开始调试 Run to Cursor, 或按 Ctrl + F10 键, 程序将执行到光标所在行会暂停 如果把光标移动到后面的某个位置, 再按 Ctrl + F10 键, 程序将从当前的暂停点继续执行到新的光标位置, 第二次暂停 图 3.12 执行到光标所在行暂停方法二 : 在需暂停的行上设置断点 ; 1 在需设置断点的行上单击鼠标, 定位光标 ; 2 按 编译微型条 中最右面的按钮, 如图 3.13 所示, 或按 F9 键 图 3.13 设置断点被设置了断点的行前面会有一个红色圆点标志 需要注意的是, 不管是通过光标位置还是断点设置, 其所在的程序行必须是程序执行的必经之路, 即不应该是分支结构中的语句, 因为该语句在程序执行中受到条件判断的限制, 有可能因条件的不满足而不被执行 这时程序将一直执行到结束或下一个断点为止 (2) 设置需观察的结果变量按照上面的操作, 使程序执行到指定位置时暂停, 目的是为了查看有关的中间结果 在

37 32 图 3.14 中, 左下角窗口中系统自动显示了有关变量的值, 其中 value1 和 value2 的值分别是 3 4, 而变量 i sum 的值是不正确的, 因为他们还未被赋值 图中左侧的箭头表示当前程序暂停的位置 如果还想增加观察变量, 可在图中右下角的 Name 框中填入相应变量名 图 3.14 观察结果变量 (3) 单步执行当程序执行到某个位置时发现结果已经不正确了, 说明在此之前肯定有错误存在 如果能确定一小段程序可能有错, 先按上面步骤暂停在该小段程序的头一行, 再输入若干个查看变量, 然后单步执行, 即一次执行一行语句, 逐行检查下来, 看看到底是哪一行造成结果出现错误, 从而能确定错误的语句并予以纠正 单步执行按 调试条 中 Step Over 按钮或 F10 键, 如图 3.15 所示 如果遇到自定义函数调用, 想进入函数进行单步执行, 可按 Step Into 按钮或 F11 键 当想结束函数的单步执行, 可按 Step Out 按钮或 Shift + F11 键 对不是函数调用的语句来说, F11 键与 F10 键作用相同 但一般对系统函数不要使用 F11 键 图 3.15 单步调试 (4) 断点的使用使用断点也可以使程序暂停 但一旦设置了断点, 不管你是否还需要调试程序, 每次执行程序都会在断点上暂停 因此调试结束后应取消所定义的断点 方法是先把光标定位在断点所在行, 再按 编译微型条 中最右面的按钮或 F9 键, 该操作是一个开关, 按一次是设置, 按两次是取消设置 如果有多个断点想全部取消, 可执行 编辑 菜单中的 断点 菜单项, 屏幕上会显示 Breakpoints 窗口, 如图 3.16 所示, 窗口下方列出了所有断点, 按 Remove All 按钮, 将取消所有断点 断点通常用于调试较长的程序, 可以避免使用

38 第 3 章 Visual C++ 环境下运行 C 程序 33 Run to Cursor ( 运行程序到光标处暂停 ) 或 Ctrl + F10 功能, 因为该功能经常要把光标定位到不同的地方, 而对于长度为上百行的程序, 要寻找某位置并不太方便 如果一个程序设置了多个断点, 按一次执行键 Ctrl + F5 会暂停在第一个断点, 再按一次 Ctrl + F5 键会继续执行到第二个断点暂停, 依次执行下去 图 3.16 取消所有断点 (5) 停止调试使用 Debug 菜单的 Stop Debugging 菜单项, 或 Shift + F5 键可以结束调试, 从而回到正常的运行状态 上面我们只对 Visual C++ 中主要的功能进行了介绍, 对于其他的操作读者可以自己试验, 或参考有关 Visual C++ 手册

39 34 第 4 章实验概述 本课程是工科类专业基础课程之一, 通过本课程的实验应使学生了解计算机语言的功能和适用领域, 具备程序设计的知识和能力 学生应在每次实验课之前完成题目的编程工作, 熟练地掌握 C 语言 4.1 本课程实验的任务 熟悉程序开发的全过程 ; 熟悉流程图的画法及常用算法的思想和实现 ; 熟练掌握 TC 和 VC 集成编译环境 ; 熟练掌握使用 C 语言进行程序设计的方法和技术 ; 熟练掌握程序设计风格和调试方法, 培养学生养成良好的编程习惯和较强的程序调试能力, 为今后实际从事软件开发工作打下良好的基础 4.2 本课程实验简介 本课程实验与主教材配套, 是主教材的补充和提高 共设计了六次实验和四次课程设计, 由浅入深, 从简单实例入手, 让学生了解程序开发的全过程, 熟悉程序设计风格和调试方法, 指导学生养成良好的编程习惯 4.3 本课程适用专业 工科类专业 4.4 本课程实验涉及核心知识点 结构化程序的三种基本结构,C 语言的函数 指针 数组 结构和文件的处理 4.5 本课程实验重点与难点 循环嵌套 指针 函数的参数传递 变量的存储类型 结构与文件

40 第 5 章实验项目和课程设计 35 第 5 章实验项目和课程设计 5.1 实验项目一 1. 实验项目名称 : 简单程序设计 2. 实验项目的目的和任务 : 掌握在 VC++/TC 环境下编辑 编译 连接和运行 C 程序的方法和过程 通过运行简单的 C 程序, 掌握 C 语言源程序的特点 :C 程序的一般构造形式 ;C 语言中各种常量的表示形式及变量的定义 ;C 语言中各种运算符的作用 优先级和结合性 ; 能熟练运用各种表达式 ; 标准输入输出函数的一般使用方法 3. 实验内容 : 熟悉 VC++/TC 2.0 开发环境 ( 参考本书第 1 2 章内容 ); 教材第 1 章习题 1.9; 教材第 1 章习题 1.10; 教材第 2 章习题 2.6; 教材第 2 章习题 2.9; 教材第 2 章习题 2.22; 教材第 2 章习题 学时数 :4 学时 5.2 实验项目二 1. 实验项目名称 : 控制语句的应用 2. 实验项目的目的和任务 : 掌握顺序 分支和循环结构各种语句的一般功能和执行过程 ; 学会应用各种语句进行编程 ; 掌握流程图的一般表示方法 ; 掌握结构化程序设计的基本方法 3. 实验内容 : 教材第 3 章习题 3.4; 教材第 3 章习题 3.7; 教材第 3 章习题 3.14;

41 36 教材第 3 章习题 3.16; 教材第 3 章习题 学时数 :4 学时 5.3 实验项目三 1. 实验项目名称 : 数组和结构的应用 2. 实验项目的目的和任务 : 掌握数组的定义及其应用 ; 掌握结构类型的定义及结构变量的定义 引用和初始化 ; 掌握结构数组的应用 ; 了解数组和结构的综合应用 3. 实验内容 : 教材第 4 章习题 4.3; 教材第 4 章习题 4.5; 教材第 4 章习题 4.7; 教材第 4 章习题 4.8; 教材第 4 章习题 4.10( 选做 ) 4. 学时数 :4 学时 5.4 实验项目四 1. 实验项目名称 : 指针和函数的应用 2. 实验项目的目的和任务 : 掌握指针变量的定义和使用方式 ; 掌握指针与数组的密切关系 ; 掌握使用指针数组的程序设计方法 ; 掌握 C 语言中定义函数的方法 ; 掌握函数传值和传址调用的方法 3. 上机实验内容 : 教材第 5 章习题 5.6; 教材第 5 章习题 5.9; 教材第 5 章习题 5.11; 教材第 6 章习题 6.2; 教材第 6 章习题 6.5; 教材第 6 章习题 学时数 :4 学时

42 第 5 章实验项目和课程设计 实验项目五 1. 实验项目名称 : 联合 枚举和函数 2. 实验项目的目的和任务 : 掌握函数与结构的应用 ; 学会使用函数解决较难的问题 ; 掌握联合 位域和枚举的定义和使用 3. 上机实验内容 : 教材第 6 章习题 6.15; 教材第 6 章习题 6.17; 教材第 7 章习题 7.2; 教材第 8 章习题 学时数 :4 学时 5.6 实验项目六 1. 实验项目名称 : 输入 输出和文件操作 2. 实验项目的目的和任务 : 学会使用实现文件打开 / 关闭 读 / 写等基本操作的函数 ; 掌握各种输入输出操作 3. 上机实验内容 : 教材第 9 章习题 9.2; 教材第 9 章习题 9.4; 教材第 9 章习题 9.9; 教材第 9 章习题 学时数 :4 学时 5.7 课程设计 课程设计的目的和任务 : 本课程设计是综合性强的编程, 编程中会用到较多的语法知识和较复杂的算法, 目的是进一步激发学生的程序开发兴趣, 提高学生的程序设计能力 课程设计一 用结构类型编写一个程序, 完成生命游戏的功能 :( 选做 ) 20 世纪 70 年代, 一种被称作 生命游戏 的小游戏曾风靡一时 这种游戏相当简单, 假设有一个像棋盘一样的方格网, 每个方格中放置一个生命细胞, 生命细胞只有两种状态 : 生 或 死 游戏规则如下:

43 38 如果一个细胞周围有 3 个细胞为生 ( 一个细胞周围共有 8 个细胞 ), 则该细胞为生, 即该细胞若原先为死, 则转为生, 若原先为生, 则保持不变 ; 如果一个细胞周围有 2 个细胞为生, 则该细胞的生死状态保持不变 ; 在其他情况下, 该细胞为死, 即该细胞若原先为生, 则转为死, 若原先为死, 则保持不变 依此规则进行迭代变化, 使细胞生生死死, 会得到一些有趣的结果 该游戏之所以被称为 生命游戏, 是因为其简单的游戏规则, 反映了自然界中的生存规律 : 如果一个生命, 其周围的同类生命太少的话, 会因为得不到帮助而死亡 ; 如果太多, 则会因为得不到足够的资源而死亡 写一个程序, 模拟生命游戏过程 课程设计二 最佳运动员评选问题从 100 名优秀运动员中评选出 10 名最佳运动员 具体规则如下 : (1) 运动员按 1,2,3,,100 顺序编号 ; (2) 由键盘输入所收到的选票, 每张选票至多可写 10 个不同的编号 ; (3) 对应名次的运动员编号可以有空缺, 但必须用 0 表示 ; (4) 若编号超出规定的范围, 或编号重复出现, 作废票处理 ; (5) 按选票中所列最佳运动员顺序给他们计分, 计分标准如下 : 从第一名至第十名所得分数依次为 :15,12,9,7,6,5,4,3,2,1; (6) 按各运动员所得分数高低进行排队, 列出最佳运动员前 10 名排名表, 格式为 : 名次运动员编号合计得分合计得票数如果得分相同, 则得票多的排名在前 ; 如果得分和得票都相同, 则编号小的在前 ( 提示 : 评选过程分为 3 个步骤 : 接收选票 选票检查看是否为废票, 以及有效票统计 ) 课程设计三 制作一个同学通讯录, 用于管理同学们的通信方式和资料, 可以实现查找 添加和删除等功能 基本要求如下 : (1) 用结构实现通讯信息 ; (2) 通讯资料包括姓名 学号 专业 手机号和家庭地址等 ; (3) 添加一个记录时, 一次必须输入所有的信息 ; (4) 能够通过姓名 学号和手机号来进行查询 ; (5) 当出现错误或者过期的记录时, 可以进行删除 ( 提示 : 各种不同的功能由具体的函数实现 ) 课程设计四 试编制一个五子棋游戏, 要求每一颗棋子放在棋盘上时有相应的伴音, 每一局棋结束时播放一段音乐

44 第 6 章主教材习题参考答案 39 第 6 章主教材习题参考答案 6.1 习题 C 语言具有哪些主要特点? 答 :(1)C 语言是一种兼有高级语言和汇编语言优点的语言 ; (2)C 语言是一种结构化程序设计语言 ; (3) 语言数据类型丰富 ; (4)C 语言具有种类丰富的运算符 ; (5)C 语言具有预处理功能 1.2 C 语言的主要用途是什么? 答 : 作为一种系统程序设计语言,C 语言已广泛用于为各种不同的计算机系统编写有关的系统软件, 如操作系统 编译系统 汇编器及编辑器等 ; 作为一种应用程序设计语言,C 已广泛用于编写各种应用领域的应用软件, 如数据库管理软件 CAD/CAM 软件 文字处理软件 图形软件 办公自动化软件 科学计算及工程应用软件等 1.3 简述 C 程序的结构特点 答 :C 程序为函数模块结构, 每个 C 程序都是由一个或多个函数组成, 其中至少有一个 main() 函数 程序从 main() 函数开始执行, 程序在执行中可以调用由编译系统提供的各种标准库函数和由用户自定义的函数 1.4 简述 C 程序开发的一般步骤 答 :C 程序的运行一般要经过四个步骤 即源程序的编辑 源程序的编译 目标程序的链接和可执行程序的运行 1.5 以下几个语句的显示结果是什么? printf("first second third"); printf("\nfirst second third\n"); printf("first\n second\n third\n"); printf("first\n\n second\n\n third\n"); 显示结果为 : first second third first second third

45 40 first second third first second third 注意 :\n 为换行符 1.6 以下程序完成的功能是什么? #include <stdio.h> main() int i,j,k; /* 定义变量 */ printf("please input the two integers:i and j\n"); scanf("%d,%d",&i,&j); /* 调用 scanf 函数输入变量 */ k=i*i+j*j; /* 关键算法 */ printf("the result of i*i+j*j is %d\n",k); /* 调用 printf 函数输出结果 */ 答 : 计算两个数的平方和 1.7 以下哪些标识符是合法的? 答 : 合法的标识符有 : int_do,do,dwmax_value,two_and_three 原因 :int 为 C 语言关键字 ;32data 是由数字开头 ;one_$ 含有 '$', 不合法 1.8 试编写一个 C 语言程序, 它输入一个浮点数, 计算它的倒数并将结果输出 参考程序 : #include <stdio.h> main() float x,y; printf("\nplease input a float number:"); scanf("%f",&x); y=1/x; /* 求倒数 */ printf("\nthe reciprocal of %f is %f\n",x,y);

46 第 6 章主教材习题参考答案 试编写一个 C 语言程序, 它输入三个整数, 计算它们的和并将结果输出 参考程序 : #include <stdio.h> main() int x,y,z,sum; printf(" 请输入 3 个整数 (x,y,z):\n"); scanf("%d,%d,%d",&x,&y,&z); sum=x+y+z; /* 三个整数求和 */ printf(" 三个整数 %d+%d+%d 的和是 :%d\n",x,y,z,sum); 1.10 试编制输出如下信息的 C 语言程序 ******************* Turbo C ******************* 参考程序 : #include <stdio.h> main() printf("*******************\n"); printf(" Turbo C \n"); printf("*******************\n"); 本章习题常见错误为 : 1. 习题 1.8,x,y 是 float 型, 所以在 scanf () 和 printf () 函数中, 格式字符为 %f 很多初学者写为 %d 或 %x, 详细请参见主教材表 习题 1.9,scanf () 函数中,3 个整数格式符 %d 用逗号分开, 所以在输入 3 个整数时也应该用逗号分开, 而不是空格等其他符号, 否则会发生错误 详细请参见主教材 小节内容 3. 习题 1.9,scanf () 函数中, 参数前须加上取地址符 &, 这是 scanf () 和 printf () 函数的区别 如果没有 &, 在编译的时候不会出现 error, 但在运行时会出现内存读取的错误, 初学者往往不易察觉 4. 习题 1.9, 作者在答案中使用了中文输入, 这在 VC++ 工具中是允许的 需要注意的是, 除了输出信息外, 程序中其余的标识符 关键字等都不能使用中文输入法输入, 必须在

47 42 英文输入法下输入, 比如同样是分号 ;, 使用中文输入法输入的 ; 将会出错 5. 习题 1.8 和 1.9 中,printf () 函数格式控制中的格式说明符与输出参数的个数和类型必须一一对应, 否则将会出现错误 6.scanf () 函数不要使用 '\n' 和 '\t' 等转义字符, 如果需要, 可以在前后的 printf () 中使用 养成良好的编程习惯 C 语言是一种应用性很强的编程语言, 不仅适合进行编程语言的学习, 而且也同样适合进行软件工程的开发 作为 C 语言的学习者, 不仅需要掌握 C 语言的语法和算法知识, 还需要从学习的一开始就养成良好的编程习惯, 用良好的编程风格进行程序设计 良好的编程习惯和风格, 可以使人更方便和迅速地理解程序的结构, 从而最大限度地提高程序设计的效率 细节决定成败, 看似微不足道的小习惯, 往往决定了一个程序项目的成败 另外, 学习者在实际的学习和开发中, 需要不断积累和体会, 才能真正养成自己熟悉的良好编程习惯, 终生受用 在后面各章节中, 我们将结合教材内容陆续介绍一些常用的编程习惯 这些习惯和风格是由很多经验丰富的程序员总结而成, 实用性很强, 也容易掌握, 希望学习者能理解并应用于编程学习中 编程好习惯一 : 规范存储 在每次上机学习时, 为本次编程建立单独的程序文件夹目录, 并对文件夹进行规范命名, 同时将本次上机编程内容存储到该文件夹中 如果编程是在实验室机房中进行, 在下机时, 应该将程序文件夹拷贝到 U 盘 移动硬盘等设备中带走 规范存储有利于程序的修改和查找, 也避免了不同版本的程序冲突和误删除 对于较为大型的程序, 需要长时间开发, 规范存储也能保证编程日志和各种版本的完整 6.2 习题 C 语言中的数据类型主要有哪些? 答 :C 语言中的数据类型主要分为 : 基本类型 构造类型 指针类型和空类型 其中基本类型又分为 : 整型 字符型 单精度浮点型和双精度浮点型 构造类型又分为 : 数组 结构 联合和枚举 详细请参见主教材 2.1 节 2.2 C 语言为什么要规定对所有用到的变量 先定义后使用? 这样做有什么好处? 答 : 原因是 :1. 编译系统会根据定义为变量分配内存空间, 分配空间的大小与数据类型有关 ;2. 系统可以根据变量的类型检查对该变量的运算是否合法, 这样就给程序员调试程序带来方便 详细参见主教材 2.3 节

48 第 6 章主教材习题参考答案 下面哪些是合法的常量? 123, ,0892, M, \n,0xabc,0.618e 6, Morning!,3.8e 3.14 答 : 合法的有 :123,0892 和 0xabc 是整型常量 ; 和 0.618E 6 是浮点型常量, 但 0.618E 6 不规范 ;'M' 和 '\n' 是字符常量 ;"Morning!" 是字符串常量 3.8e 3.14 不合法 详细参见主教材 2.2 节 2.4 字符常量和字符串常量有什么区别? 下述字符串常量的长度各是多少? 在内存中存储时各自占用的内存单元数又是多少? (1) Hello! (2) ABC\n\\TH\064\? 答 : 字符常量和字符串常量的表示方法不同 : 字符型常量是用单引号括起来的一个字符 ; 字符串常量是用一对双引号括起来的零个或多个字符组成的序列 最主要的区别是存储的不同 : 字符型数据在存储时, 并不是把该字符本身放到内存单元中, 而是把该字符的相应 ASCII 码值存放到该存储单元中 ; 而字符串常量是将字符存储, 并自动在其末尾加上 '\0' 作为字符串结束标志, 所以字符串常量在内存中所占用的字节数为字符串长度 +1 "Hello!" 长度是 6 个字节, 占用内存单元数是 7 "ABC\n\\TH\064\?" 长度 9, 占用内存单元数 10 需要注意的是, 在该字符串中有转义字符,\n 为换行,\\ 为反斜杠字符,\064 为八进制转义字符, 对应 ASCII 码为 52 的字符 '4' 详细参见主教材 在 ASCII 字符集中, 字母 C 的 ASCII 码值是 67, 以下程序的输出结果是什么? #include "stdio.h" void main() char a= C ; int b=10; a=a+b; printf("%c,%d\n",a,a); 答 : 结果 :M,77 在执行 a=a+b 后, 字符变量 a 的 ASCII 码变为了 写出以下程序运行的结果 #include "stdio.h" void main() int x; x= *7 24; printf("x=%d\n",x); x= 30*5% 8; printf("x=%d\n",x);

49 44 答 :x= 26 x= 6 第二个运算是取余操作 2.7 下列对变量进行定义的语句哪些正确? 哪些不正确? 为什么? 请将不正确的改正过来 (1)char cl,int a2; (2)INT a,b;floatx,y; (3)a,b:char; (4)char if; (5)int a,b (6)Int a:b:c; (7)int a,x;float x,y; 答 :(1) char cl,int a2; 错误, 因为 c1 和 a2 是不同类型的变量, 两次定义应该用分号分开 (2)INT a,b;floatx,y; 错误, 因为 :1C 语言需要区分大小写, 所以关键字 FLOAT 和 INT 必须小写为 int 和 float;2 关键字和参数间应该空格,float 和 x 应该加空格 (3)a,b:char; 错误, 应该写为 char a,b; (4)char if; 错误,if 是 C 语言的关键字, 重新命名变量 (5)int a,b 错误, 变量定义语句应该以分号表示结束, 在语句后加 ; (6)int a:b:c; 错误, 应该使用逗号分隔变量名表中的多个变量 (7)int a,x; float x,y; 错误, 变量 x 重复定义 2.8 写出下面程序的输出结果 #include "stdio.h" void main() printf("%d\n",null); printf("%d,%c\n",50,50); printf("%d,%c,%o\n",68+10,68+10,68+10); 答 : 结果是 :0 50,2 78,N,116 结果分析 : 第 1 次输出的是 NULL 对应的 ASCII 码 ; 第 2 次输出的是十进制整数 50 和 ASCII 码 50 对应的控制字符 2; 第 3 次输出的是十进制整数 78 ASCII 码 78 对应的控制字符 N 和十进制整数 78 转换为八进制的整数 分析下面程序的运行结果, 并上机予以验证 #include stdio.h void main() char i= a ; char j= b ; char k= c ;

50 第 6 章主教材习题参考答案 45 char m='\101'; char n= \116 ; printf("a%cb%c\tc%c\tabc\n",i,j,k); printf( \tb%c%c m,n); 程序中 char i= a ;char j= b ;char k= c ;char m= \101 ;char n= \116 ; 这几个语句能否改成如下语句 : int i= a ;int j= b ; int k=99;int m= \101 ;int n= \116 ; 为什么? 答 : 该程序的结果如下 : 结果分析 : 第 1 次按字符输出, 读者应该不难理解 第 2 次输出需要注意的是 '\101' 和 '\116' 是八进制转义字符, 输出的是 ASCII 码为 65 和 78 对应的控制字符 'A' 和 'N' 当把变量类型全部替换为 int 后, 结果依然正确 因为在这样的情况下, 赋给变量的值为这些字符对应的 ASCII 码 2.10 求下列表达式的值 (1) 假设 x=5.6,a=8,y=12.3 x+a%5*(int)(x+y)%3/5 (2) 设 a=21,b=30,x=4.2,y=8.4 (float)(a+b)/6+(int)x%(int)y 答 :(1) (2) 结果分析 : 本题运算过程不难, 需要读者注意的是变量类型的强制转换 详细参加主教材 2.5 节 2.11 若 x=13,y=20,z=4, 下列各表达式的结果是什么? (1)(z>=y>=x)?1:0 (2)z>=y&&y>=x (3)!(x<y)&&!x z (4)x<y?x++:++y (5)z+=x>y?x++:++y 答 :(1)0; (2)0; (3)1; (4)13; (5)25 本题需要注意的是 :(4) 中, 注意自加操作的前缀和后缀 ;(5) 中 "?" 优先级大于赋值, 所以先进行条件运算再赋值

51 用 C 语言描述下列命题 (1)i 小于 j 或小于 k (2)i 和 j 都小于 k (3)i 和 j 中有一个小于 k (4)i 是非正整数 (5)i 是奇数 (6)i 不能被 j 整除 答 :(1)i<j i<k;(2)i<k&&i<j;(3)i<k j<k;(4)int i; i<=0 或者 mod(i,1)==0&&i<=0; (5)int i; i%2=1 或者 mod(i,2)=1;(6)i%j!=0 或者 mod(i,j)!= 用条件表达式描述 : (1) 取三个数中的最大值 (2) 任意两个整数存放在变量 m 和 n 中, 让小数存放在 m 中, 大数存放在 n 中, 并输出大数 答 :(1) 最常用的方法是定义一个中间变量 t, 执行下列语句 : t=a>b?a:b; t=c>t?c:t; 最后 t 的值就是题目所求 在学习了条件语句后, 读者可以尝试用 if-else 语句完成以上功能 或者 :(max=(a>b?a:b))>c?max:c (2) int x,y,m,n; // 定义变量 scanf("%d,%d",&x,&y);// 输入两个值 x>y?(n=x,m=y):(n=y,m=x);// 按题目要求进行条件运算 printf("%d",n);// 输出最大值 2.14 分析下面程序的运行结果, 并上机予以验证 #include stdio.h void main() int x,y,z; x=13; y=25; z=0; x=x&&y z; printf( %d\n,x); printf( %d\n,x!y&&z); x=013; y=025;

52 第 6 章主教材习题参考答案 47 z=01; printf( ⑴%d\n,x y&z); printf( ⑵%d\n,x y&~z); printf( ⑶%d\n,x^y&~z); x=1; y= 1; x=x<<3; printf( %d\n,x); y<<=3; printf( %d\n,y); 答 : 结果为 :1 1 (1)11 (2)31 (3) 结果分析 : 本题需要主要四种位操作和移位运算, 详细内容参见主教材 2.4 节 2.15 用下面的 scanf 函数输入数据, 使 i=40,j=78,k=56.89,m=2.3,c1= R,c2= T 请问在键盘上如何输入? #include stdio.h void main () int i,j; float k,m; char c1,c2; scanf( i=%d**j=%d,&i,&j); scanf( %f## %f,&k,&m); scanf( %c,%c,&c1,&c2); 答 : 输入 :i=40**j=78 回车 56.89##2.3 回车 R,T 结果分析 : 详细请参见主教材 2.7 节

53 用下面的 scanf 函数输入数据, 使 a=50,b=18,x=2.89,y= 21.3,z=89.2, c1= A,c2= B 请问在键盘上如何输入? scanf( %5d%6d%c%c%f%f%*f%f,&a,&b,&c1,&c2,&x,&y,&z); 答 :50 18 AB 找出下面程序中的错误, 并予以分析 /*This is a program with some errors.*/ #include stdio.h void main () int x,y; printf( Input;x=?\n ); scanf( %d,x); printf( square(x)= %d,x*x); printf( Y=%d\n,y); 答 :(1) 第 1 个 printf() 中应该使用双引号 ; (2)scanf() 中的变量 x 没有取地址符号 ; (3) 变量 y 没有初始化 2.18 以下语句的输出应是什么? int sum=10,cap=10; cap=sum++,cap++,++cap; printf( %d\n,cap); 可选答案是 : (1)10 (2)11 (3)12 (4)13 答 :(3) 已知在 ASCII 代码集中, 字母 A 的序号是 65, 以下程序输出结果是什么? 从以下可选答案中选择你认为正确的一个 : #include stdio.h void main () char c1= B,c2= Y ; printf( %d,%d\n,++c1, c2); (1)66,89 (2)67,88 (3)67,89

54 第 6 章主教材习题参考答案 49 (4)B,Y (5)C,X (6) 输出格式不合法, 输出错误信息答 :(2)67,88 注意是 ASCII 码的运算 2.20 以下程序的输出结果是什么? 从可选答案中选择一个 #include stdio.h void main () int a=0100,b=100; printf( %d,%d\n, a,b++); 可选答案 : (1)99,101 (2)63,100 (3)63,101 (4)077,100 答 :(2)63,100 分析: 八进制数 0100 化为十进制是 64, 并执行前缀自减操作 ;100 执行后缀操作 2.21 分析下面程序的运行结果 #include stdio.h void main() int x,y,z; x=y=z=1; x+=y+=z; printf( (1)%d\n,x<y?y: x); printf( (2)%d\n,x<y?x++:y++); printf( x=%d,y=%d\n,x,y); printf( (3)%d\n,z+=x<y?x++:y++); printf( x=%d,y=%d,z=%d\n,x,y,z); x=5; y=z=6; printf( (4)%d\n,(z>=y>=x)?1:0); printf( (5)%d\n,z>=y&&y>=x); 答 :(1)3 (2)2 x=3,y=3 (3)4 x=3,y=4,z=4

55 50 (4)0 (5)1 结果分析 : 本题一共出现了 7 次输出 printf(), 其中有 5 次是运算后输出, 我们也就只对这 5 次进行讨论 第 1 次运算前, x=3,y=2,z=1; 所以第一次输出是 x 的值为 3, 第 2 次运算, 输出的是 y 的值为 2, 并且 y 进行后缀自加操作, 这里注意 : 由于条件运算不执行 x++ 操作, 所以 x 的值不变, 初学者往往在这里犯错 第 3 次运算, 先条件运算后赋值, 输出的值为 z+=3, 结果是 4 第 4 次运算也需要注意,z>=y>=x 并不是 6>=6>=5, 而是先运算得到 x>=y, 结果是 1, 再求 1>=x, 所以结果为 编写一个程序, 求出给定半径 r 的圆的面积和周长, 并且输出计算结果 r 的值由用户输入, 用浮点型数据处理 参考程序 : #include"stdio.h" main() float r,area,per; // 定义 area 为面积,per 为周长 printf(" 请输入圆的半径 :\n"); scanf("%f",&r); area=3.14*r*r; // 求面积 per=2*3.14*r; // 求周长 printf(" 该圆的面积为 %8.2f, 周长为 %8.2f\n",area,per); 作者在结果输出的时候对字段宽度进行了控制, 读者应该掌握占用的方法, 使得结果更加规范化 2.23 已知华氏温度与摄氏温度之间的转换公式是 : C=5/9 (F 32) 编写一个程序, 将用户输入的摄氏温度转换成华氏温度, 并予以输出 参考程序 : #include"stdio.h" main() float c,f; printf(" 请输入一个摄氏温度 \n"); scanf("%f",&c); c=(float)5/9*(f 32); // 使用了强制类型转换 printf(" 华氏温度为 %f",f);

56 第 6 章主教材习题参考答案 编写程序输入年利率 I( 例如 2.52%), 存款总额 S( 例如 元 ), 计算一年后的本息合计并输出 参考程序 : #include"stdio.h" main() float I,S,sum; // 定义 sum 为总和 scanf("%f,%f",&i,&s); sum=(1+i)*s; printf("sum is %8.2f",sum); 本章习题常见错误 : 1.C 语言需要区分大小写, 所以读者一定要注意程序中的大小写输入, 避免错误 2. 定义的变量没有初始化, 造成结果错误 3. 多次条件运算一定要注意变量值的变化, 分支语句的运算是由条件决定的, 避免多余的计算 4. 自加操作和自减操作一定要区分前缀和后缀 小技巧 : 很多 C 语言的初学者在编程序的时候, 都容易忘记 () 和 的匹配, 往往缺少后一半 在简单程序中, 还比较容易找到错误, 但一旦程序复杂, 出现类似错误就很难找到和纠正了 有经验的程序员往往在输入 () 和 等符号时, 都同时一起输入, 再退格输入中间的程序, 这样能很好地保证这些符号的匹配, 减少错误 编程好习惯二 : 见名知意 本章主要介绍了变量的类型和基本运算方法 见名知意, 指我们对程序中的各种标识信息 ( 包括常量 变量 宏和自定义数据类型等 ) 进行命名时采用系统 规范和易理解的命名方式 系统而规范的命名不仅可以增加系统的可读性, 还能避免重名, 提高编程的效率 本书使用命名方式为 : 变量使用英文单词命名 ; 宏定义使用大写的字母 ; 自定义数据类型采用小写等 C 语言的命名规范也不唯一, 读者可以根据实际需要选择不同的命名方式 6.3 习题 编写一个程序从终端上输入两个整数, 检查第一个数是否能被第二个数整除 参考程序 : #include<stdio.h>

57 52 main() int i,j; printf(" 请输入两个整数 :"); scanf("%d,%d",&i,&j); if(i%j) // 条件判断 printf(" 第一个数不能被第二个数整除 \n"); else printf(" 第一个数能被第二个数整除 \n"); 结果分析 : 本题较简单, 对于关键的条件判断语句 if(i%j), 直接使用了运算结果进行比较 初学者如果不容易理解, 也可以使用一个中间变量进行运算 temp=i%j 再对 temp 进行判断 3.2 以下程序的功能是什么? main() int a,b; scanf("%d %d",&a,&b); a=a<b?a:b; printf("%d\n",a); 答 : 输入两个整数, 求数值较小者并输出 3.3 编写一个程序输入某人的身高和体重, 按下式确定此人的体重是否为标准 过胖或过瘦 : (1) 标准体重 =( 身高 110) 公斤 ; (2) 超过标准体重 5 公斤为过胖 ; (3) 低于标准体重 5 公斤为过瘦 参考程序 : #include<stdio.h> main() float high,weight,nomalw; printf(" 请输入某人的身高 (cm), 体重 (kg)\n"); scanf("%f,%f",&high,&weight);

58 第 6 章主教材习题参考答案 53 nomalw=high 110; if(weight>=nomalw+5) printf(" 过胖, 请运动一下!\n"); else if(weight<=nomalw 5) printf(" 过瘦, 请多吃点吧 "); else printf(" 标准, 请保持!"); 本题目较简单, 注意三种条件的判断方法 3.4 编写程序计算 : i i<=5 result= 100 i (i 1) 1 5<i<=10 i*i i>10 参考程序 : #include<stdio.h> main() int i,j,result=0; printf("please input a integer:\n"); scanf("%d",&i); if(i<=5) for(j=1;j<=i;j++) result+=j; else if(i>10) result=i*i; else result=100; for(j=i;j>=1;j ) result =j; printf("result is %d\n",result); 或者 #include<stdio.h>

59 54 main() int i,j,result=0; printf("please input a integer:\n"); scanf("%d",&i); if(i<=5) for(j=1;j<=i;j++) result+=j; else if(5<i&&i<=10) result=100; for(j=i;j>=1;j ) result =j; else result=i*i; printf("result is %d\n",result); 结果分析 : 第一种算法较容易理解 ; 第二种算法中, 需要大家注意的是当 (5<i<=10) 时, 在条件判断中不能写为 (5<i<=10), 这样是错误的, 而应该写成 (5<i&&i<=10), 这是个较常见的错误 3.5 编程序, 完成以下功能 : 输入 5 个整数, 求其中数值最大者 参考程序 : #include<stdio.h> main() int i,j,max= 32768; for(j=1;j<=5;j++) printf(" 请输入第 %d 个整数 \n",j); scanf("%d",&i);

60 第 6 章主教材习题参考答案 55 if(max<i) max=i; printf("max=%d\n",max); 结果分析 : 本题有两点需要读者注意 :(1)if(max<i) 时, 执行 max=i 运算, 这样就保证了每次循环的时候, 变量 max 都存储的是前面已经循环的最大值 (2) 为什么变量 max 的初始值是 呢, 请大家思考 int 变量的取值范围是什么? 是 到 所以将 max 初始为 , 保证了输入任何一个整数都能满足题目的算法, 比如, 将 max 初始为 0, 那么当输入的 5 个整数都小于 0 时, 算法就失效了 请大家考虑如果本题是求最小值, 又应该怎么定义和初始变量呢? 3.6 编写一个程序计算 x y, 其中 x 是浮点数,y 是正整数 参考程序 : #include<stdio.h> main () float x,answer=1; int i,y; printf(please input a float and a integer:"); scanf("%f,%d",&x,&y); for(i=1;i<=y;i++) answer=answer*x; printf("%6.2f^%d=%f\n",x,y,answer); 3.7 编写一个程序, 使其能读入并计算一个只包含加减运算的表达式, 每 个输入的数据都是浮点数, 除第一个数以外, 其余每个数前面都有一个运算符, 例如 : ; 表达式以分号 ; 结束 参考程序 : #include<stdio.h> main() float temp,sum; char ch,operat; printf("please input a digital expression:");

61 56 scanf("%f",&sum);// 输入整数 ch=getchar();// 输入运算符 while(ch!=';')// 循环结束条件 scanf("%f",&temp); switch(ch) case '+': sum=sum+temp;// 加运算 break; case ' ': sum=sum temp;// 减运算 break; default: printf("error\n"); ch=getchar(); printf("%f",sum); 输入 , 得到的结果是 : 结果分析 : 在本题中, 使用到了 getchar() while() 和 swich 三个新函数 Getchar() 是字符输入函数, 保存字符 + 当输入一个整数和一个运算符号后, 进行一次循环运算, 直到 ; 结束 3.8 编写一个程序计算 e x =1+x+x 2 /2!+x 3 /3!+x 4 /4!+ +x n /n! 参考程序 : #include<stdio.h> main () float x,ex=1,temp,mul; int n,i,j; double y; printf(" 请输入数 X:"); scanf("%f",&x); printf(" 请输入 N 值 ( 建议 N<35):"); scanf("%d",&n);

62 第 6 章主教材习题参考答案 57 for (i=1;i<=n;i++) temp=1; mul=1; for (j=1;j<=i;j++) temp=temp*x;// 计算分子 mul=mul*j;// 计算分母 ex=ex+temp/mul;// 各项求和 printf("e^%6.3f=%f\n",x,ex); 结果分析 : 本题中, 将复杂的运算拆分为 3 步进行, 分别求出了每一项的分子和分母后, 再进行求和运算 将复杂运算分为很多简单的小部分, 是一种良好的程序设计方法 3.9 编写一个程序求满足以下公式的变量 k 的最大值 2 k <=m 其中,m 是程序输入的一个正整数 参考程序 : #include<stdio.h> main () int i,k=0,m,temp=1; printf("please input a integer(m):"); scanf("%d",&m); do // 循环运算, 每循环一次,k++ k++; temp=temp*2; while (!(temp>=m)); printf("m=%d\tk=%d\t2^%d=%d\n",m,k,k,m); 结果分析 : 本题作者使用了 do-while 语句, 详细内容请参见主教材 3.6 节 在循环运算中,temp 每乘以 2,k 自加, 直到循环结束, 这样 k 的值就等于乘法运算的次数 本题还可以使用 while if 等条件判断语句完成, 请读者思考

63 以下程序输入一个整数, 然后依次显示该整数的每一位 main() int number,digit; scanf("%d",&number); do digit=number%10; printf("%d",digit); number/=10; while(number!=0); printf("\n"); 该程序对输入的正整数可以正常工作, 但如果输入负数, 则会得到错误的结果 请改进该程序, 使它在输入负数时也能工作 例如, 如果输入的数是 4567, 则输出 7654 解题思路 : 针对题目的要求, 我们首先来分析正数和负数有什么不同 : 在本题中, 主要的区别就是整数没有符号, 而负数有符号 找到区别后, 本题不难解决 在已知算法的基础上增加正负判断, 如果是负数, 在输完数值的每一位后再输出 参考程序 : #include<stdio.h> main () int number,digit,sign; printf("please input a integer:"); scanf("%d",&number); if(number<0) sign= 1; else sign=1; do digit=sign*(number%10); Printf("%d",digit); number/=10; while (number!=0); if(sign== 1) printf(" "); // 保证了负数的每一位输出为正数

64 第 6 章主教材习题参考答案 59 printf("\n"); 3.11 编写一个程序, 计算一个整数的各位数字之和 例如输入的数是 2568, 该程序计算并显示 的值 解题思路 : 由上题 3.10 我们已经了解到了怎么样求出一个整数的各位, 在本题中该方法同样适用 不同的是, 本题的循环需要知道次数, 所以先求出整数的位数, 再求出各位, 最后再将各位的数值相加 参考程序 : #include<stdio.h> main () int temp,number; int i,j,k; static int count,sum; // 定义为静态变量 printf("please input a short type integer:"); scanf("%d",&number); temp=number; do temp/=10; count++; while (temp!=0); // 求出整数的位数并赋值给 count temp=number; for(i=count;i>1;i ) k=1; for(j=1;j<i;j++) k=k*10; temp=number/k; number=number k*temp; printf("%d%c",temp,'+'); sum=sum+temp; // 求和操作 sum=sum+number; // 参见结果分析 //temp 保存的是每一位的数值 // 取完一位后, 将未处理的部分再赋值给 number

65 60 printf("%d=%d\n",number,sum); 输入 2568, 输出为 =21 结果分析 : 由于在每次循环后需要保存 count 和 sum 的值, 所以定义为静态变量 static, 这个概念将在第 7 章中学习 程序中的 k=k*10 是保证 number 能与十 百 千 万 各位相除 3.12 编写一个程序, 当输入一个整数时, 用英语单词输出该数的每一位数字 例如 : 输入 3567, 输出 : first-digit second-digit third-digit four-digit seven six five three 解题思路 : 经过 3.10 和 3.11 两题练习后, 我们已经掌握了求整数每一位的方法 在本题中, 不同就是用英文字符串输出表示数字 因为阿拉伯数字一共有 10 个, 所以适合使用 switch-case 语句 参考程序 : #include<stdio.h> main () int i,number,digit; static int count; printf("please input a integer:"); scanf("%d",&number); printf("first-digit second-digit"); printf("third-digit fourth-digit fifth-digit\n"); do count++; digit=(number%10); switch(digit) case 0: printf (" zero "); break; case 1: printf(" one "); break; case 2: printf(" two "); break;

66 第 6 章主教材习题参考答案 61 case 3: printf(" three "); break; case 4: printf(" four "); break; case 5: printf(" five "); break; case 6: printf(" six "); break; case 7: printf(" seven "); break; case 8: printf(" eight "); break; case 9: printf(" nine "); number/=10; while (number!=0); for(i=count; i<5; i++) printf(" zero "); printf("\n"); 3.13 编写一个程序找出 1~100 中的所有素数 解题思路 : 根据素数的定义, 针对每一个整数, 需要对小于它的所有数相除, 才能确定是否为素数, 所以需要两次循环才能得到结果 参考程序 : #include<stdio.h> main() int i,j,flag;//flag 为标志位, 起到标记素数的作用 for(i=2;i<101;i++)// 循环每个数 flag=1; for(j=2;j<=i/2&&flag==1;j++)// 循环被除的每个数 if(i%j==0)// 判断素数 flag=0; if(flag)

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

<4D F736F F D205A572D2D A1AAA1AAD4ACE7F42D43D3EFD1D4CAB5D1B5BDCCB3CC2E646F6378>

<4D F736F F D205A572D2D A1AAA1AAD4ACE7F42D43D3EFD1D4CAB5D1B5BDCCB3CC2E646F6378> 第 1 部分 Visual Studio 6.0 开发环境介绍 本书以 Visual C++ 6.0 作为 C 源程序的实践开发环境, 本章将首先介绍 Visual C++ 6.0 环境的基本操作, 包括 Visual C++ 6.0 的安装和启动,C 源程序的编辑 运行与调试 1.1 安装与启动 Visual C++ 6.0 MSDN Visual C++ 6.0 1.1 Microsoft Visual

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

Microsoft PowerPoint - 01_Introduction.ppt

Microsoft PowerPoint - 01_Introduction.ppt Hello, World C 程序设计语言 第 1 章章观其大略 孙志岗 sun@hit.edu.cn http://sunner.cn prf("hello,, world\n"); 超级无敌考考你 : 如何把 hello 和 world 分别打印在两行? 2004-12-19 A Tutorial Introduction 2 hello.c 打印华氏温度与摄氏温度对照表 计算公式 : C=(5/9)(

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

图书在版编目穴 CIP 雪数据做事细节全书 / 赵彦锋编著郾 北京 : 企业管理出版社, ISBN Ⅰ 郾做... Ⅱ 郾赵... Ⅲ 郾工作方法 通俗读物 Ⅳ 郾 B 中国版本图书馆 CIP 数据核字 (2005) 第 号 书

图书在版编目穴 CIP 雪数据做事细节全书 / 赵彦锋编著郾 北京 : 企业管理出版社, ISBN Ⅰ 郾做... Ⅱ 郾赵... Ⅲ 郾工作方法 通俗读物 Ⅳ 郾 B 中国版本图书馆 CIP 数据核字 (2005) 第 号 书 做事细节全书 赵彦锋著 企业管理出版社 图书在版编目穴 CIP 雪数据做事细节全书 / 赵彦锋编著郾 北京 : 企业管理出版社, 2005.11 ISBN 7-80197-338-0 Ⅰ 郾做... Ⅱ 郾赵... Ⅲ 郾工作方法 通俗读物 Ⅳ 郾 B026-49 中国版本图书馆 CIP 数据核字 (2005) 第 136676 号 书 名 : 做事细节全书 作 者 : 赵彦锋 责任编辑 : 吴太刚

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3 浙江大学 C 程序设计及实验 试题卷 2002-2003 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:30-10:30 注意 : 答题内容必须写在答题卷上, 写在本试题卷上无效 一. 单项选择题 ( 每题 1 分, 共 10 分 ) 1. 下列运算符中, 优先级最低的是 A.

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 9 [P.11] : Dev C++ [P.12] : http://c.feis.tw [P.13] [P.14] [P.15] [P.17] [P.23] Dev C++ [P.24] [P.27] [P.34] C / C++ [P.35] 10 C / C++ C C++ C C++ C++ C ( ) C++

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 TEMPLATE 1 Template 描述 使用模板函数求最大值 使用如下 main 函数对程序进行测试 int main() { double a, b; cin >> a >> b; cout c >> d; cout

More information

C/C++ - 字符输入输出和字符确认

C/C++ - 字符输入输出和字符确认 C/C++ Table of contents 1. 2. getchar() putchar() 3. (Buffer) 4. 5. 6. 7. 8. 1 2 3 1 // pseudo code 2 read a character 3 while there is more input 4 increment character count 5 if a line has been read,

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

《C语言程序设计》第2版教材习题参考答案

《C语言程序设计》第2版教材习题参考答案 教材 C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 2011 年 10 月第二版 ISBN:978-7-302-26972-4 售价 :35 元 答案版本 本习题答案为 2012 年 2 月修订版本 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p = &a A. *p = *a B. p = *a C.p = &a D. *p =

More information

试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期 " 开放本科 " 期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默

试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期  开放本科  期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默 试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期 " 开放本科 " 期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默认扩展名为 ( ) A. cpp B. c C. exe D. obj 2. 设 x 和 y 均为逻辑值,

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

网C试题(08上).doc

网C试题(08上).doc 学习中心 姓名 学号 西安电子科技大学网络与继续教育学院 高级语言程序设计 (C) 全真试题 ( 闭卷 90 分钟 ) 题号一二三总分 题分 60 20 20 得分 一 单项选择题 ( 每小题 3 分, 共 60 分 ) 1.C 语言程序的基本单位是 A) 程序行 B) 语句 C) 函数 D) 字符 2. 下列四组选项中, 均是不合法的用户标识符的选项是 A)A B)getc C)include D)while

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 第 1 章程序设计和 C 语言 1.1 什么是计算机程序 1.2 什么是计算机语言 1.3 C 语言的发展及其特点 1.4 最简单的 C 语言程序 1.5 运行 C 程序的步骤与方法 1.6 程序设计的任务 1.1 什么是计算机程序 程序 : 一组计算机能识别和执行的指令 只要让计算机执行这个程序, 计算机就会自动地 有条不紊地进行工作 计算机的一切操作都是由程序控制的, 离开程序, 计算机将一事无成

More information

没有幻灯片标题

没有幻灯片标题 指针作为函数参数 : 原因 : 1 需要修改一个或多个值,( 用 return 语句不能解决问题 ) 2 执行效率的角度 使用方法 : 在函数原型以及函数首部中需要声明能够接受指针值的形参, 具体的写法为 : 数据类型 * 形参名 如果有多个指针型形参, 则用逗号分隔, 例如 : void swap(int *p1, int *p2) 它说明了形参 p1 p2 是指向整型变量的指针 在函数调用时,

More information

EK-STM32F

EK-STM32F STMEVKIT-STM32F10xx8 软 件 开 发 入 门 指 南 目 录 1 EWARM 安 装... 1 1.1 第 一 步 : 在 线 注 册... 1 1.2 第 二 步 : 下 载 软 件... 2 1.3 第 三 步 : 安 装 EWARM... 3 2 基 于 STMEVKIT-STM32F10xx8 的 示 例 代 码 运 行... 6 2.1 GPIO Demo... 6 2.2

More information

Microsoft Word - 11.doc

Microsoft Word - 11.doc 除 錯 技 巧 您 將 於 本 章 學 到 以 下 各 項 : 如 何 在 Visual C++ 2010 的 除 錯 工 具 控 制 下 執 行 程 式? 如 何 逐 步 地 執 行 程 式 的 敘 述? 如 何 監 看 或 改 變 程 式 中 的 變 數 值? 如 何 監 看 程 式 中 計 算 式 的 值? 何 謂 Call Stack? 何 謂 診 斷 器 (assertion)? 如 何

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

Microsoft Word - 正文.doc

Microsoft Word - 正文.doc 第 2 章 Java 语言基础 通过本章的实践, 要掌握 Java 中的标识符 关键字 常量, 熟练掌握算术 关 系 逻辑 条件 赋值 位运算符的使用, 掌握简单顺序结构的程序设计 2.1 典型习题解答 2.1 Java 中怎样进行注释? 解答 Java 语言中的注释有 3 种形式 : (1) 单行 : // (2) 多行 : /* */ (3) 文档注释 : /** */ 第三种形式是第二种形式的变形,

More information

言1.PDF

言1.PDF MSP430 WINDOWS WORKBENCH MSP430 Flash Green MCU Flash Flash MCU MSP430 16 RISC 27 125ns 1.8V~3.6V A/D 6 s MSP430 10 ESD MSP430 MSP430 10 MSP430 2001 MSP430 Windows Workbench Interface Guide Windows Workbench

More information

期中考试试题讲解

期中考试试题讲解 一 选择题 ( 一 ) 1. 结构化程序设计所规定的三种基本结构是 C A 主程序 子程序 函数 B 树形 网形 环形 C 顺序 选择 循环 D 输入 处理 输出 2. 下列关于 C 语言的叙述错误的是 A A 对大小写不敏感 B 不同类型的变量可以在一个表达式中 C main 函数可以写在程序文件的任何位置 D 同一个运算符号在不同的场合可以有不同的含义 3. 以下合法的实型常数是 C A.E4

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc C 语言开发入门 课程教学大纲 ( 课程英文名称 ) 课程编号 :201409210011 学分 :5 学分学时 :60 学时 ( 其中 : 讲课学时 :37 学时上机学时 :23 学时 ) 先修课程 : 计算机导论后续课程 :C++ 程序设计适用专业 : 信息及其计算机相关专业开课部门 : 计算机系 一 课程的性质与目标 C 语言开发入门 是计算机各专业必修的基础课程, 是数据结构 C++ Java

More information

untitled

untitled 8086/8088 CIP /. 2004.8 ISBN 7-03-014239-X.... TP313 CIP 2004 086019 16 100717 http://www.sciencep.com * 2004 8 2004 8 1 5 500 787 1092 1/16 16 1/2 391 000 1 2 ii 1 2 CAI CAI 3 To the teacher To the student

More information

FJXBQ

FJXBQ 高等医学院校选用教材 ( 供成人教育中医药专业 中西医结合专业使用 ) 方剂学 闫润红 主编 2 0 0 1 内容简介本书是供成人教育中医药专业 中西医结合专业使用的教材 全书分总论和各论两部分, 总论部分对中医方剂的基本理论, 如治法 君臣佐使 剂型 剂量等及其现代研究进展进行了介绍 各论部分对常用方剂的主治病证 配伍意义 临床应用 加减变化规律及现代研究概况等内容, 按分类进行了系统阐述 在保证方剂学学科知识结构完整性的前提下,

More information

<4D F736F F D20B3CCD0F2C9E8BCC6CAB5BCF9BDCCB3CC2843D3EFD1D4C3E8CAF629>

<4D F736F F D20B3CCD0F2C9E8BCC6CAB5BCF9BDCCB3CC2843D3EFD1D4C3E8CAF629> 第 3 章程序开发环境的使用 我们知道, 程序开发要经历源程序编辑 编译 链接 运行 调试等多个重复环节, 对于早期的程序员来说, 每一个环节都是由独立的工具完成的, 即程序的编辑器 编译器 连接器 调试器都是独立的程序工具, 在这样的环境下, 程序员的工作效率比较低 随着软件技术的进步, 逐渐出现了集成开发环境 (IDE) 所谓集成开发环境就是将源程序的编辑 编译 链接 运行 调试等程序开发的基本环节集成在一个平台上,

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

C/C++ - 函数

C/C++ - 函数 C/C++ Table of contents 1. 2. 3. & 4. 5. 1 2 3 # include # define SIZE 50 int main ( void ) { float list [ SIZE ]; readlist (list, SIZE ); sort (list, SIZE ); average (list, SIZE ); bargragh

More information

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023) ( CIP) /. :, 2005. 2 ( ) ISBN 7-5624-3339-9.......... TP311. 1 CIP ( 2005) 011794 : : : : * : : 174 ( A ) :400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / /www. cqup. com. cn : fxk@cqup.

More information

C/C++语言 - 运算符、表达式和语句

C/C++语言 - 运算符、表达式和语句 C/C++ Table of contents 1. 2. 3. 4. C C++ 5. 6. 7. 1 i // shoe1.c: # include # define ADJUST 7. 64 # define SCALE 0. 325 int main ( void ) { double shoe, foot ; shoe = 9. 0; foot = SCALE * shoe

More information

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/ 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:// 不能以数字开头 D._3_ B:// 不能用点和空格 提问 抢答 E.$anothervar C: // 不能用点和空格

More information

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7>

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7> 能源与动力工程学院 结构化编程 结构化程序设计 循环 循环结构 确定性循环 非确定性循环 I=1 sum=sum+i I = I +1 陈 斌 I>100 Yes No 目录 求和 :1+2+3++100 第四节循环的应用 PROGRAM GAUSS INTEGER I, SUM 计数器 SUM = 0 DO I = 1, 100, 1 SUM = SUM + I print*, I, SUM DO

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章流程控制和数组 3.1 实验目的 (1) 熟练掌握控制台应用程序的代码编写和调试, 以及运行方法 (2) 掌握选择结构的一般语法格式和应用 (3) 掌握 switch 语句的用法 (4) 掌握选择结构的嵌套的用法, 能灵活使用选择结构解决实际问题 (5) 掌握 while 循环语句的一般语法格式 (6) 掌握 for 循环语句的一般语法格式 (7) 掌握循环嵌套的语法格式 (8) 掌握一维数组的定义

More information

图书在版编目 (CIP) 数据 满堂花醉 / 沈胜衣著. 南京 : 江苏教育出版社, ( 沈郎文字 ) ISBN Ⅰ. 满... Ⅱ. 沈... Ⅲ. 作家 - 人物研究 - 世界 Ⅳ.K815.6 中国版本图书馆 CIP 数据核字 (2005) 第 041

图书在版编目 (CIP) 数据 满堂花醉 / 沈胜衣著. 南京 : 江苏教育出版社, ( 沈郎文字 ) ISBN Ⅰ. 满... Ⅱ. 沈... Ⅲ. 作家 - 人物研究 - 世界 Ⅳ.K815.6 中国版本图书馆 CIP 数据核字 (2005) 第 041 图书在版编目 (CIP) 数据 满堂花醉 / 沈胜衣著. 南京 : 江苏教育出版社, 2005.4 ( 沈郎文字 ) ISBN 7-5343-6512-0 Ⅰ. 满... Ⅱ. 沈... Ⅲ. 作家 - 人物研究 - 世界 Ⅳ.K815.6 中国版本图书馆 CIP 数据核字 (2005) 第 041843 号 出版者社址网址出版人 南京市马家街 31 号邮编 :210009 http://www.1088.com.cn

More information

!"# $ %&'!"#$

!# $ %&'!#$ !"# $ %&'!"#$ 内容简介本书是在作者已经出版的 XilinxAlProgrammableZynq-7000SoC 设计指南 一书的基础上进行大幅度修订而成的 本书的一大特色就是更加突出 ARMCortex-A9 双核处理器的使用 此外, 在修订本书时采用了 Xilinx 最新的 Vivado2015 4 集成开发环境 通过本书的修订, 能反映最新的 ARM 嵌入式设计技术和实现方法, 同时也能更加凸显采用异构架构的

More information

移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 移动平台应用软件开发 课程建设小组北京大学二零一五年

移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 移动平台应用软件开发 课程建设小组北京大学二零一五年 移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组北京大学二零一五年 预处理 2 预处理器 C 语言的编译系统分为编译预处理和正式编译 预处理作用 : 对源程序编译之前做一些处理, 生成扩展 C 源程序 预处理器的行为是由预处理指令控制的 宏定义 文件包含 条件编译 #define #ifdef

More information

2015年计算机二级(C语言)模拟试题及答案(四)

2015年计算机二级(C语言)模拟试题及答案(四) 2015 年计算机二级 (C 语言 ) 模拟试题及答案 (4) 一 填空题 1 C 语言中基本的数据类型有 : 2 C 语言中普通整型变量的类型说明符为, 在内存中占 字节, 有符号普通整型的数据范围是 3 整数-35 在机内的补码表示为 4 执行下列语句 int a=8;a+=a-=a*a; 后,a 的值是 5 有如下语句:charA[ ]={ I am a student }; 该字符串的长度是,A[3]=

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc 在 VMWare-5.5+RedHat-9 下建立 本机 QTopia-2.1.1 虚拟平台 张大海 2008-5-9 一 资源下载 1. 需要以下安装包 : tmake-1.13.tar.gz qtopia-free-source-2.1.1.tar.gz qt-embedded-2.3.10-free.tar.gz qt-x11-2.3.2.tar.gz qt-x11-free-3.3.4.tar.gz

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony

Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony Ioncube Php Encoder 8 3 Crack 4 ->>->>->> DOWNLOAD 1 / 5 2 / 5 Press..the..General..Tools..category4Encrypt..and..protect..files..with..PHP..encoding,..encryption,..ob fuscation..and..licensing... 2016

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

Date: :32:44 若要重复运行上面的命令, 也可以在调试程序的提示符处按 E n t e r 键 Date: :35:25 若要设置断点, 必须在程序中选定一个要停止运行的位置 命令 l 用于列出程序的下面 1 0 行 再次键 l, 可以列出下面的

Date: :32:44 若要重复运行上面的命令, 也可以在调试程序的提示符处按 E n t e r 键 Date: :35:25 若要设置断点, 必须在程序中选定一个要停止运行的位置 命令 l 用于列出程序的下面 1 0 行 再次键 l, 可以列出下面的 Summary of Comments on ebook65-12 Page: 1 Date: 2001-8-5 21:25:15 P e r l 的 - d 开关可使 P e r l 以调试方式启动运行 命令行上也指明了被调试的程序 Page: 2 Date: 2001-8-5 21:26:01 每当调试程序向你显示程序中的一个语句时, 它就是准备要执行的语句, 而不是上一个运行的语句 Date:

More information

Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE "Project Properties" IDE makefile 1.

Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE Project Properties IDE makefile 1. Oracle Solaris Studio 12.2 IDE 2010 9 2 8 9 10 11 13 20 26 28 30 32 33 Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE "Project Properties" IDE makefile 1. "File" > "New

More information

山东师大数学科学学院

山东师大数学科学学院 山东师大数学科学学院 教材 参考书 教材 C 程序设计 ( 第三版 ) 辅导书 C 程序设计实训教程 谭浩强编著 杨杰臧文科 主要内容 第一章 C 语言概述第二章数据类型 运算符与表达式第三章顺序结构程序设计第四章选择结构程序设计第五章循环结构程序设计第六章数组第七章函数第八章指针第九章结构体与共用体第十章文件 上机实习 上机地点 : 上机时间 : 上机内容 (1) 对课堂所讲内容进行验证性实验 ;

More information

nooog

nooog C : : : , C C,,, C, C,, C ( ), ( ) C,,, ;,, ; C,,, ;, ;, ;, ;,,,, ;,,, ; : 1 9, 2 3, 4, 5, 6 10 11, 7 8, 12 13,,,,, 2008 1 1 (1 ) 1.1 (1 ) 1.1.1 ( ) 1.1.2 ( ) 1.1.3 ( ) 1.1.4 ( ) 1.1.5 ( ) 1.2 ( ) 1.2.1

More information

实验目的 (1) 熟练掌握顺序 分支 循环三种结构 (2) 会使用流程控制结构编写程序 第三章程序的流程控制 实验要求 (1) 掌握 if-else swith-case 的使用 (2) 掌握 while do-while for 的使用 (3) 掌握分支嵌套和循环嵌套 (4) 分析理解如何避免死循

实验目的 (1) 熟练掌握顺序 分支 循环三种结构 (2) 会使用流程控制结构编写程序 第三章程序的流程控制 实验要求 (1) 掌握 if-else swith-case 的使用 (2) 掌握 while do-while for 的使用 (3) 掌握分支嵌套和循环嵌套 (4) 分析理解如何避免死循 实验目的 (1) 熟练掌握顺序 分支 循环三种结构 (2) 会使用流程控制结构编写程序 第三章程序的流程控制 实验要求 (1) 掌握 if-else swith-case 的使用 (2) 掌握 while do-while for 的使用 (3) 掌握分支嵌套和循环嵌套 (4) 分析理解如何避免死循环 实验范例 系统常用类 : 字符串类 (String) a) 从字符串 s 中截取一个字符串方法 s.substring()

More information

untitled

untitled MPICH anzhulin@sohu.com 1 MPICH for Microsoft Windows 1.1 MPICH for Microsoft Windows Windows NT4/2000/XP Professional Server Windows 95/98 TCP/IP MPICH MS VC++ 6.x MS VC++.NET Compaq Visual Fortran 6.x

More information

download.kaoyan.com_2006ÄêÌì½ò¹¤Òµ´óѧ¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ£¨409£©¿¼ÑÐÊÔÌâ

download.kaoyan.com_2006ÄêÌì½ò¹¤Òµ´óѧ¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ£¨409£©¿¼ÑÐÊÔÌâ 考生注意 : 本试卷共七大题, 满分 150 分 考试时间为 3 小时 ; 所有答案均写在答题纸上 ( 注明题号 ), 在此答题一律无效无效 一 选择题 ( 本题共 20 小题, 每小题 2 分, 满分 40 分 ) 1 char ch 1 2 A 0

More information

提纲 1 2 OS Examples for 3

提纲 1 2 OS Examples for 3 第 4 章 Threads2( 线程 2) 中国科学技术大学计算机学院 October 28, 2009 提纲 1 2 OS Examples for 3 Outline 1 2 OS Examples for 3 Windows XP Threads I An Windows XP application runs as a seperate process, and each process may

More information

untitled

untitled Introduction to Programming ( 數 ) Lecture 3 Spring 2005 March 4, 2005 Lecture 2 Outline 數 料 If if 狀 if 2 (Standard Output, stdout): 料. ((Standard Input, stdin): 料. 類 數 數 數 說 printf 見 數 puts 串 數 putchar

More information

untitled

untitled 1-1 1-2 1-3 1-4 1-5 1-6 1-7 1-8 1-1-1 C int main(void){ int x,y,z; int sum=0; double avg=0.0; scanf("%d",&x) ; scanf("%d",&y) ; scanf("%d",&z) ; sum=x+y+z ; avg=sum/3.0; printf("%f\n",avg); system("pause");

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN: 978-7-302-13599-9, 红色封面答案制作时间 :2011 年 2 月 -5 月一 选择题 1. 设有程序段 int k=10;while(k=0)k=k-1;, 则下面叙述正确的是 D 循环体语句一次也不执行 2. 设有程序段 int x=0,s=0;while(!x!=0)s+=++x;printf(

More information

C 语言程序设计 ( 第 33 版 )) #define PI // 下面 2 行是函数的原型说明部分 double sup_area(double r); double volume(double r); // 下面是主函数部分 { double a=-5,b,c,d; b=fab

C 语言程序设计 ( 第 33 版 )) #define PI // 下面 2 行是函数的原型说明部分 double sup_area(double r); double volume(double r); // 下面是主函数部分 { double a=-5,b,c,d; b=fab 第 1 章 C 语言基础与顺序结构 学习目标 1. 掌握 C 语言程序的结构 2. 合理选用数据类型 3. 掌握算术运算符和赋值运算符 4. 掌握控制数据的输入 输出方法 5. 掌握顺序结构以及顺序结构的流程 6. 掌握 Visual C++ 6.0 集成环境的使用方法 7. 掌握转换大小写字母的方法 8. 掌握产生随机整数的方法 计算机由硬件系统和软件系统组成, 其中硬件是物质基础, 而软件是计算机的灵魂

More information

科学计算的语言-FORTRAN95

科学计算的语言-FORTRAN95 科 学 计 算 的 语 言 -FORTRAN95 目 录 第 一 篇 闲 话 第 1 章 目 的 是 计 算 第 2 章 FORTRAN95 如 何 描 述 计 算 第 3 章 FORTRAN 的 编 译 系 统 第 二 篇 计 算 的 叙 述 第 4 章 FORTRAN95 语 言 的 形 貌 第 5 章 准 备 数 据 第 6 章 构 造 数 据 第 7 章 声 明 数 据 第 8 章 构 造

More information

C C

C C C C 2017 3 8 1. 2. 3. 4. char 5. 2/101 C 1. 3/101 C C = 5 (F 32). 9 F C 4/101 C 1 // fal2cel.c: Convert Fah temperature to Cel temperature 2 #include 3 int main(void) 4 { 5 float fah, cel; 6 printf("please

More information

试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期 " 开放本科 " 期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new

试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期  开放本科  期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new 试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期 " 开放本科 " 期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. long 2. 在每个 C 十 + 程序中都必须包含有这样一个函数, 该函数的函数名为 ) A.main

More information

6020

6020 6020 ... 1 1.1... 1 1.2... 1 1.3 6020... 2 1.3... 5 1.3.1... 5 1.3.2 ISA I/O (S1)... 5 1.3.3 (J4,5,6)... 6 1.3.4... 6... 9 2.1... 9 2.2... 9 2.3 COMPILING AND LINKING... 11 2.3.1 MICROSOFT C MICROSOFT

More information

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1 21 , 7, Windows,,,, : 010-62782989 13501256678 13801310933,,,, ;,, ( CIP) /,,. : ;, 2005. 11 ( 21 ) ISBN 7-81082 - 634-4... - : -. TP316-44 CIP ( 2005) 123583 : : : : 100084 : 010-62776969 : 100044 : 010-51686414

More information

图书在版编目 (CIP) 数据 文学与现代性批判 / 邵建著. 南京 : 江苏教育出版社, ISBN Ⅰ. 文... Ⅱ. 邵... Ⅲ. 当代文学 - 文学研究 - 中国 Ⅳ.I206.7 中国版本图书馆 CIP 数据核字 ( 2005 ) 第 04185

图书在版编目 (CIP) 数据 文学与现代性批判 / 邵建著. 南京 : 江苏教育出版社, ISBN Ⅰ. 文... Ⅱ. 邵... Ⅲ. 当代文学 - 文学研究 - 中国 Ⅳ.I206.7 中国版本图书馆 CIP 数据核字 ( 2005 ) 第 04185 图书在版编目 (CIP) 数据 文学与现代性批判 / 邵建著. 南京 : 江苏教育出版社, 2005.4 ISBN 7-5343-6528-7 Ⅰ. 文... Ⅱ. 邵... Ⅲ. 当代文学 - 文学研究 - 中国 Ⅳ.I206.7 中国版本图书馆 CIP 数据核字 ( 2005 ) 第 041850 号 出版者社址网址出版人 南京市马家街 31 号邮编 :210009 http://www.1088.com.cn

More information

林子雨《C语言程序设计》讲义PPT

林子雨《C语言程序设计》讲义PPT C 语言程序设计 厦门大学计算机科学系 2012-02-26 林子雨 ziyulin@xmu.edu.cn 2012-02-26 厦门大学非计算机专业本科生公共课 (2011-2012 第 2 学期 ) C 语言程序设计 林子雨厦门大学计算机科学系 E-mail: ziyulin@xmu.edu.cn 个人主页 :http://www.cs.xmu.edu.cn/linziyu 课程提要 第一章绪论

More information

目 录(目录名)

目  录(目录名) 目录 目录...1-1 1.1 域名解析配置命令... 1-1 1.1.1 display dns domain... 1-1 1.1.2 display dns dynamic-host... 1-1 1.1.3 display dns server... 1-2 1.1.4 display ip host... 1-3 1.1.5 dns domain... 1-4 1.1.6 dns resolve...

More information

新版 明解C言語入門編

新版 明解C言語入門編 328, 4, 110, 189, 103, 11... 318. 274 6 ; 10 ; 5? 48 & & 228! 61!= 42 ^= 66 _ 82 /= 66 /* 3 / 19 ~ 164 OR 53 OR 164 = 66 ( ) 115 ( ) 31 ^ OR 164 [] 89, 241 [] 324 + + 4, 19, 241 + + 22 ++ 67 ++ 73 += 66

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

C

C C 2017 3 14 1. 2. 3. 4. 2/95 C 1. 3/95 C I 1 // talkback.c: 2 #include 3 #include 4 #define DENSITY 62.4 5 int main(void) 6 { 7 float weight, volume; 8 int size; 9 unsigned long letters;

More information

Microsoft PowerPoint - 03.Fortran程序设计基础1

Microsoft PowerPoint - 03.Fortran程序设计基础1 简单 Fortran 90 程序的构造形式 : 第二讲 Fortran 程序设计基础 (2) [PROGRAM 程序名 ] [ 声明语句 ] [ 执行语句 ] END [PROGRAM [ 程序名 ]] 程序的书写 (P5) PROGRAM MONEY!calculate balance after interest compounded! 根据利息计算余额 REAL BALANCE, INTEREST,

More information

zyk00168ZW.PDF

zyk00168ZW.PDF () 0 4 5 (km).5 4 5.5 7 8.5 () 0 4 5 (km) 4 4.5 5 5.5 6 6.5 y5x. y0. 5x4 x y 9 5x y x y 9 5x y x x 6 x y. 55 y5x. y0. 5x4 x 0 x x y y y 5 x x x 4 y y y 5 () x y () y x x 4y 0 4x y x 0 0.4 y 0.5 0 5x y

More information

第一章三角函数 1.3 三角函数的诱导公式 A 组 ( ) 一 选择题 : 共 6 小题 1 ( 易诱导公式 ) 若 A B C 分别为 ABC 的内角, 则下列关系中正确的是 A. sin( A B) sin C C. tan( A B) tan C 2 ( 中诱导公式 ) ( ) B. cos(

第一章三角函数 1.3 三角函数的诱导公式 A 组 ( ) 一 选择题 : 共 6 小题 1 ( 易诱导公式 ) 若 A B C 分别为 ABC 的内角, 则下列关系中正确的是 A. sin( A B) sin C C. tan( A B) tan C 2 ( 中诱导公式 ) ( ) B. cos( 第一章三角函数 1. 三角函数的诱导公式 A 组 一 选择题 : 共 6 小题 1 ( 易诱导公式 ) 若 A B C 分别为 ABC 的内角 则下列关系中正确的是 A. sin( A B) sin C C. tan( A B) tan C ( 中诱导公式 ) B. cos( B C) cos A D. sin( B C) sin A sin60 cos( ) sin( 0 )cos( 70 ) 的值等于

More information

Oracle Oracle Solaris Studio IDE makefile C C++ Fortran makefile IDE Solaris Linux C/C++/Fortran Oracle IDE "P

Oracle Oracle Solaris Studio IDE makefile C C++ Fortran makefile IDE Solaris Linux C/C++/Fortran Oracle IDE P Oracle Solaris Studio 12.3 IDE 2011 12 E26461-01 2 7 8 9 9 Oracle 10 12 14 21 26 27 29 31 32 33 Oracle Solaris Studio IDE makefile C C++ Fortran makefile IDE Solaris Linux C/C++/Fortran Oracle IDE "Project

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

untitled

untitled MODBUS 1 MODBUS...1 1...4 1.1...4 1.2...4 1.3...4 1.4... 2...5 2.1...5 2.2...5 3...6 3.1 OPENSERIAL...6 3.2 CLOSESERIAL...8 3.3 RDMULTIBIT...8 3.4 RDMULTIWORD...9 3.5 WRTONEBIT...11 3.6 WRTONEWORD...12

More information

试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期 " 开放本科 " 期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. l

试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期  开放本科  期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. l 试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期 " 开放本科 " 期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. long 2. 在每个 c++ 程序中都必须包含有这样一个函数, 该函数的函数名为 ( ) A. main

More information

F515_CS_Book.book

F515_CS_Book.book /USB , ( ) / L R 1 > > > 2, / 3 L 1 > > > 2 + - 3, 4 L 1 了解显示屏上显示的图标 Wap 信箱收到一条 Wap push 信息 ( ) GSM 手机已连接到 GSM 网络 指示条越多, 接收质量越好 2 ...........................4.............................. 4 Micro SD (

More information

<C8EBC3C5C6AAA3A8B5DA31D5C2A3A92E696E6464>

<C8EBC3C5C6AAA3A8B5DA31D5C2A3A92E696E6464> 第 1 章 进入 Photoshop 的全新世界 本章导读 Photoshop 1 1.1 Photoshop CS6 Photoshop Photoshop 1.1.1 Photoshop POP 1-1 图 1-1 平面广告效果 1.1.2 Photoshop 1-2 Photoshop CS6 Photoshop CS6 Photoshop CS6 Extended 3D 3 Photoshop

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha CYPOK CYPOK 1 UltraEdit Project-->Install Language Tool: Language Suite----->hi-tech picc Tool Name ---->PICC Compiler Executable ---->c:hi-picinpicc.exe ( Command-line Project-->New Project-->File Name--->myc

More information

典型自编教材

典型自编教材 河 南 科 技 大 学 计 算 机 实 验 教 学 中 心 1. 计 算 机 文 化 基 础 实 验 指 导 书 2. 数 据 结 构 实 验 指 导 书 3. 操 作 系 统 实 验 指 导 书 4. 面 向 对 象 程 序 设 计 实 验 指 导 书 5. 数 据 库 原 理 实 验 指 导 书 6. 编 译 原 理 实 验 指 导 书 7. JAVA 程 序 设 计 实 验 指 导 书 8.

More information

目录 1 IPv6 PIM Snooping 配置命令 IPv6 PIM Snooping 配置命令 display pim-snooping ipv6 neighbor display pim-snooping ipv6 routing-ta

目录 1 IPv6 PIM Snooping 配置命令 IPv6 PIM Snooping 配置命令 display pim-snooping ipv6 neighbor display pim-snooping ipv6 routing-ta 目录 1 IPv6 PIM Snooping 配置命令 1-1 1.1 IPv6 PIM Snooping 配置命令 1-1 1.1.1 display pim-snooping ipv6 neighbor 1-1 1.1.2 display pim-snooping ipv6 routing-table 1-2 1.1.3 display pim-snooping ipv6 statistics

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

Microsoft Word - 新1-12.doc

Microsoft Word - 新1-12.doc 实训 5 面向对象编程练习 实训 5 面向对象编程练习 5.1 实训目的 通过编程和上机实验理解 Java 语言是如何体现面向对象编程基本思想 以及如何创建类 和对象 了解成员变量和成员方法的特性 5.2 实训要求 编写一个体现面向对象思想的程序 编写一个创建对象和使用对象的方法的程序 5.3 实训内容 5.3.1 创建对象并使用对象 1 定义一个 Person 类 可以在应用程序中使用该类 成员属性

More information

2015年计算机二级(C语言)模拟试题及答案(三)

2015年计算机二级(C语言)模拟试题及答案(三) 2016 年计算机二级 (C 语言 ) 模拟试题及答案 (3) 1.( A ) 是构成 C 语言程序的基本单位 A 函数 B 过程 C 子程序 D 子例程 2.C 语言程序从 ( C ) 开始执行 A 程序中第一条可执行语句 B 程序中第一个函数 C 程序中的 main 函数 D 包含文件中的第一个函数 3 以下说法中正确的是( C ) A C 语言程序总是从第一个定义的函数开始执行 B 在 C 语言程序中,

More information

第四章 102 图 4唱16 基于图像渲染的理论基础 三张拍摄图像以及它们投影到球面上生成的球面图像 拼图的圆心是相同的 而拼图是由球面图像上的弧线图像组成的 因此我 们称之为同心球拼图 如图 4唱18 所示 这些拼图中半径最大的是圆 Ck 最小的是圆 C0 设圆 Ck 的半径为 r 虚拟相机水平视域为 θ 有 r R sin θ 2 4畅11 由此可见 构造同心球拼图的过程实际上就是对投影图像中的弧线图像

More information

untitled

untitled 图书在版编目 (CIP) 数据 家居美化中的巧 / 陈赞等编著. 北京 : 中国林业出版社,2003.4 ISBN 7-5038-3399-8 I. 家 II. 陈 III. 住宅 室内装饰 基本知识 IV.TU241 中国版本图书馆 CIP 数据核字 (2003) 第 022376 号 版权所有翻印必究 1 2002.10 1 ...1...1...2...2...3...4...5...6...7...8...8...10...10...11...12...12...13...13...15...15...16...17...18...19...20...20...20...21...22

More information

IDEO_HCD_0716

IDEO_HCD_0716 IDEO HCD Toolkit Tencent CDC ...? Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC

More information

CHAPTER VC#

CHAPTER VC# 1. 2. 3. 4. CHAPTER 2-1 2-2 2-3 2-4 VC# 2-5 2-6 2-7 2-8 Visual C# 2008 2-1 Visual C# 0~100 (-32768~+32767) 2 4 VC# (Overflow) 2-1 2-2 2-1 2-1.1 2-1 1 10 10!(1 10) 2-3 Visual C# 2008 10! 32767 short( )

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information