Size: px
Start display at page:

Download ""

Transcription

1 中国科学院优秀教材普通高等教育电气信息类应用型规划教材 C 语言程序设计 ( 第二版 ) 罗朝盛主编 张银南白宝钢魏英 副主编 北 京

2

3 内容简介 本书共 10 章, 包括 :C 语言程序设计概述, 数据类型与常用库函数, 运算符与表达式, 算法与控制结构, 数组 字符串与指针, 函数, 编译预处理, 结构体 共用体与枚举类型, 文件操作,C++ 程序设计初步 本书配有大量的例题和习题, 适合教师课堂教学和读者自学 ; 配有以任务驱动方式设计的 C 语言程序设计实验 CAI 系统 使用本 CAI 系统进行上机实验, 学生的上机实验目的会更加明确, 可大大改善实验效果, 减轻教师指导学生实验的工作量 此外, 本书还提供用于课堂教学的电子课件和实验 CAI 系统网络版 本书可以作为各类高等院校计算机专业及理工科非计算机专业学生学习 C 语言程序设计 课程的教材, 也可作为广大计算机爱好者学习 C 语言程序设计的参考书 图书在版编目 (CIP) 数据 C 语言程序设计 / 罗朝盛主编. 2 版. 北京 : 科学出版社,2012 ISBN Ⅰ.1 C Ⅱ.1 罗 Ⅲ.1 C 语言 - 程序设计 - 高等学校 - 教材 Ⅳ.1 TP312 中国版本图书馆 CIP 数据核字 (2011) 第 号责任编辑 : 陈晓萍 / 责任校对 : 耿耘责任印制 : 吕春珉 / 封面设计 : 耕者设计工作室 科学出版社发行 各地新华书店经销 * 2012 年 2 月第二版 开本 : / 年 2 月第一次印刷 印张 :19 3/4 字数 : 定价 :35.00 元 ( 如有印装质量问题, 我社负责调换 双青 ) 销售部电话 编辑部电话 版权所有, 侵权必究举报电话 : ; ;

4 第二版前言 本书第一版自 2006 年 11 月由科学出版社出版以来, 先后 10 余次重印, 受到广大读者的欢迎, 被全国多所高等学校选为教材, 与之配套的实验 CAI 系统也推广到几十所高校, 得到了不少专家 教师和学生的好评 2009 年, 本书被中国科学院教材建设专家委员会评为信息技术类 优秀教材 ( 部级 ) 二等奖, 同年被列为浙江省 十一五 重点建设教材 几年来, 我们收到不少读者和教师来信, 他们在肯定本书的同时, 也提出不少好的意见和建议 根据读者反馈的意见, 我们又征求有关专家 教师的建议, 结合近年来使用本书的教学实践, 进行了修订, 推出第二版 在保持第一版的写作风格和特色的基础上, 对部分章节内容进行了删减 调整和充实 第二版与第一版相比较, 主要做了以下几方面的调整 1) 根据实际教学需要, 删减 调整 充实了部分章节 将原 1.3 算法及算法的表示 调整到第 4 章, 组成新的 第 4 章算法与控制结构 ; 将原第 2 章 第 3 章内容进行重新组合, 构成新的 第 2 章数据类型与常用库函数 和 第 3 章运算符与表达式 ; 考虑到程序设计的发展, 为给读者继续学习奠定基础, 增加了 第 10 章 C++ 程序设计初步 2) 对各章内容和文字均细致地进行修改, 使读者更容易理解与掌握 3) 精选和充实例题 例题是为帮助读者理解 掌握教学内容而设计的程序范例, 此次修订更换了部分例题, 对原有例题的程序代码进行优化, 使读者更容易阅读理解 对大部分例题都给出了编程分析, 在例题最后, 针对一些要求学生掌握且容易出错的问题提出了 思考与讨论, 使他们通过阅读这些例题, 能够做到举一反三, 加深对所学内容的理解和掌握, 培养其编程能力 4) 上机运行环境改用 Visual C 本书中的程序是用 Windows 环境下使用的 Visual C 环境编译运行得到的结果 所有源程序都具有可移植性 5) 更加注重 多元化 立体化 教材建设 我们修改 完善了与本书配套的以任务驱动的 C 语言程序设计实验 CAI 系统, 修改了教学使用的电子课件, 更新了作者自己的个人教学网站 ( 中与本书有关的教学辅导资料, 以方便读者浏览与下载 我们相信, 此次修订后的教材更能适合教师的教学和学生的学习 本次修订由罗朝盛提出修改思路 修订方案并最后修改定稿 参加本书修订的有罗朝盛 张银南 魏英 孙奕鸣 马杨珲 何凤梅 白宝钢等, 罗朝盛 张银南负责统稿 本书由罗朝盛担任主编, 由张银南 白宝钢 魏英担任副主编

5 ii C 语言程序设计 ( 第二版 ) 在本书修订过程中, 我们得到了浙江大学俞瑞钊教授, 杭州电子科技大学胡维华教授 饶万成副教授, 浙江工业大学陈庆章教授 胡同森教授以及浙江科技学院信息学院计算机基础教学部全体教师的帮助和支持, 他们对本书提出了不少有益的建议, 在此一并表示衷心的感谢 本书可作为各类高等院校计算机专业 理工科非计算机专业学习 C 语言程序设计的教材, 也可供有关工程技术人员和计算机爱好者参考 本书虽经多次讨论并反复修改, 但限于作者水平, 不当之处仍在所难免, 谨请广大读者指正

6 目 录 iii 第 1 章 C 语言程序设计概述 计算机程序设计概述 程序与程序设计语言 程序设计方法概述 C 语言简介 C 语言的发展 C 语言的特点 C 语言的字符集 C 语言的标识符 C 语言的程序结构 几个简单的 C 语言程序实例 C 语言程序的结构特点 C 语言函数的结构 C 语言程序的书写风格 运行一个 C 语言程序 C 语言程序运行的一般步骤 在 Microsoft Visual C++ 环境下编辑 编译及运行 C 语言程序 13 小结 17 习题 17 第 2 章数据类型与常用库函数 C 语言的数据类型 C 数据类型概述 基本数据类型 * 各类数据在内存中的存放方式 常量 数值常量 字符常量 字符串常量 转义字符 符号常量 27

7 iv C 语言程序设计 ( 第二版 ) 2.3 变量 变量的定义 变量的赋初值 指针变量 地址与指针的概念 变量的存储与访问 指针变量的定义 指针变量的初始化 指针变量的访问 标准输入 / 输出函数用法 格式化输出函数 printf( ) 格式化输入函数 scanf( ) 字符数据非格式输入 / 输出函数 常用库函数 42 小结 44 习题 44 第 3 章运算符与表达式 运算符概述 C 语言运算符分类 运算符的优先级和结合性 算术运算符与算术表达式 算术运算符 算术表达式 赋值运算符和赋值表达式 简单赋值运算符和表达式 复合赋值符及表达式 关系运算与逻辑运算 关系运算符与关系表达式 逻辑运算符与逻辑表达式 逗号运算符与逗号表达式 位运算符 指针变量的运算 指针运算符 指针变量的运算 表达式中的类型转换 61 小结 62 习题 63

8 目录 v 第 4 章算法与控制结构 C 语句结构 算法及算法的表示 算法概述 算法的特性 算法的表示 用 N-S 流程图表示算法 程序设计过程 顺序结构 选择结构 if 条件语句 条件运算符和条件表达式 switch 语句 选择结构的嵌套 选择结构程序举例 循环结构 while 语句 do while 语句 for 循环语句 循环的嵌套 多重循环结构 种循环语句比较 其他控制语句 break 语句 continue 语句 goto 语句 应用程序举例 素数与哥德巴赫猜想 穷举法 迭代法 100 小结 101 习题 102 第 5 章数组 字符串与指针 数组概述 一维数组 一维数组的定义 一维数组元素赋值 一维数组元素的引用 一维数组的基本操作 111

9 vi C 语言程序设计 ( 第二版 ) 一维数组的应用举例 二维数组与多维数组 二维数组的定义 二维数组元素的引用 二维数组的初始化 二维数组的基本操作 二维数组应用举例 多维数组的定义和引用 数组与指针 指向一维数组的指针 指向二维数组的指针 字符数组与字符串 字符数组与初始化 字符数组的引用 字符串与字符数组 字符数组的输入 / 输出 字符串与字符指针 指向字符串的指针 使用字符串指针变量与字符数组的区别 字符串处理函数 指针数组与多级指针变量 指针数组 指向指针的指针 应用程序举例 排序问题 数据查找 插入法 字符串的处理 147 小结 150 习题 150 第 6 章函数 函数概述 模块化程序设计方法 C 语言中函数的分类 函数的定义 函数的定义形式 函数返回值 形式参数的设计 162

10 目录 vii 函数原型 函数调用与参数传递 函数的调用方式 参数传递 指针变量作参数 数组作参数 函数的嵌套调用 函数的递归调用 函数与指针 返回指针值的函数 函数的指针 指向函数的指针变量作参数 main 函数的参数 函数与变量的作用域 局部变量与全局变量 动态存储变量与静态存储变量 内部函数与外部函数 应用程序举例 189 小结 191 习题 191 第 7 章编译预处理 宏定义 无参宏定义 带参宏定义 带参宏与函数的比较 文件包含 条件编译 应用程序举例 建立自己的头文件 多个源文件组成的 C 语言程序 206 小结 208 习题 208 第 8 章结构体 共用体与枚举类型 结构体类型与结构体变量 结构体概述 结构体的声明 结构体变量的定义 结构体变量的引用 215

11 viii C 语言程序设计 ( 第二版 ) 结构体变量的初始化 指向结构体的指针 结构体数组 结构体与函数 动态数据结构 链表 问题的提出 链表的基本结构 链表的基本操作 共用体 枚举类型 自定义类型标识符 237 小结 238 习题 239 第 9 章文件操作 文件系统的概念 文本文件与二进制文件 缓冲文件系统 文件类型指针 文件的打开与关闭 文件的打开 文件的关闭 文件的读写 文件读写函数概述 字符读写函数 字符串读写函数 格式读写函数 数据块读写函数 随机读写文件 应用举例 文件的加密和解密 文件的拆分与连接 263 小结 265 习题 265 第 10 章 C++ 程序设计初步 面向对象的概念 C++ 的输入与输出 使用 cout 进行输出 使用 cin 进行输入 273

12 目录 ix 10.3 函数重载 类与对象 类与对象的概念 对象的创建 构造函数 析构函数 继承与派生 继承的基本概念 派生类 283 小结 286 习题 287 附录 290 附录 A ASCII 字符集 290 附录 B 运算符的优先级和结合性 291 附录 C 标准 C 库函数 291 附录 D C 语言程序设计实验 CAI 系统 296 参考文献 301

13 第 1 章 C 语言程序设计概述 学习要求 理解程序设计的基本概念和程序的执行过程 了解 C 语言的特点 掌握 C 语言中标识符的命名规则 掌握 C 语言程序的基本组成结构 掌握开发和运行一个 C 语言程序的过程 1.1 计算机程序设计概述 程序与程序设计语言 计算机系统由硬件系统和软件系统两大部分组成 硬件是物质基础, 而软件 ( 程序 ) 可以说是计算机的灵魂, 没有软件的计算机只是一台 裸机, 什么也不能干, 有了软件, 才能灵动起来, 成为一台真正的 电脑 所有的软件, 都是用计算机语言编写的 1. 程序 什么是程序? 广义地讲, 程序就是为完成某一任务而制定的一组操作步骤 按该操作步骤执行, 就完成程序所规定的任务 譬如, 要完成一个评选 优秀团员 的任务, 可以为该任务设计程序 : 第 1 步, 发通知让同学申报或同学推荐 ; 第 2 步, 召开评审会议 ; 第 3 步, 将申报或同学推荐候选人材料交评委评阅, 并投票评选出 优秀团员 显 然上面程序所规定的 3 个操作步骤的, 任何人看了都能按照程序规定的步骤完成该任务 因为这段程序是用自然语言书写, 任务执行者是人 同样, 计算机能完成各种数据处理任务, 我们可以设计计算机程序, 即规定一组操作步骤, 使计算机按该操作步骤执行, 完成某个数据处理任务 但是迄今为止, 在为计算机设计程序时, 尚不能用自然语言来描述操作步骤, 必须用特定的计算机语言描述 用计算机语言设计的程序, 即为计算机程序 2. 程序设计语言 人和计算机交流信息使用的语言称为计算机语言或称程序设计语言 计算机程序设

14 2 C 语言程序设计 ( 第二版 ) 计语言的发展经历了从机器语言 (Machine Language) 汇编语言(Assemble Language) 到高级语言 (High Level Language) 的历程 (1) 机器语言计算机能直接识别和执行的语言是机器语言, 机器语言以二进制数表示, 即以 0 和 1 的不同编码组合来表示不同指令的操作码和地址码, 它是第 1 代计算机语言 用机器语言编写的程序称为计算机机器语言程序, 这种程序不便于记忆 阅读和书写 但由于使用的是针对特定型号计算机的语言, 故而运算效率是所有语言中最高的 (2) 汇编语言为了克服使用机器语言编程的难记 难读等缺点, 人们进行了一种有益的改进, 用一些简洁的英文字母 符号串 ( 称为助记符 ) 来替代一个特定的二进制串指令, 比如, 用 ADD 代表加法指令, MOV 代表数据传送指令等, 这样就很容易读懂和理解程序在干什么, 程序维护也就变得方便了, 这种程序设计语言称为汇编语言 汇编语言属于第 2 代计算机程序语言 汇编语言适用于编写直接控制机器操作的低层程序, 它与机器密切相关, 移植性不好, 但效率仍十分高 针对计算机特定硬件而编制的汇编语言程序, 能准确发挥计算机硬件的功能和特长, 程序具有占用内存空间少 执行速度快等特点, 所以至今仍是一种常用而强有力的软件开发工具 当然, 对于算法的描述, 汇编语言程序不如高级语言直观 汇编语言和机器语言都是面向机器的程序设计语言, 一般称为低级语言 (3) 高级语言高级语言是一种与硬件结构及指令系统无关, 表达方式比较接近自然语言和数学表达式的一种计算机程序设计语言 其优点是 : 描述问题能力强, 通用性 可读性 可维护性都较好 其缺点是 : 执行速度较慢, 编制访问硬件资源的系统软件较难 高级语言的发明是计算机发展史上颇为惊人的成就之一 1954 年, 第一个完全脱离机器硬件的高级语言 FORTRAN 问世了 50 多年来, 共有几百种高级语言出现, 目前在计算机中广泛使用的高级语言有几十种, 影响较大 使用较普遍的有 FORTRAN ALGOL COBOL BASIC FoxBASE LISP SNOBOL PL/1 PASCAL C PROLOG Ada C++ C# Visual C++ Visual Basic Visual FoxPro Delphi Java 等 C 语言是一种具有很高灵活性的高级语言, 适用于系统软件 数值计算 数据处理等, 使用非常广泛 面向对象的 C++ 语言及 Visual C++ Borland C++ C# 等集成开发工具深受程序开发者的青睐 3. 程序的执行用汇编语言和高级语言编写的程序称为 源程序, 计算机不能直接识别和执行 要把源程序翻译成机器指令, 才能执行 (1) 汇编程序的执行汇编语言编写的程序必须由 汇编程序 ( 或汇编系统 ) 将这些符号翻译成二进制数的机器语言才能运行 这种 汇编程序 就是汇编语言的翻译程序 汇编语言程序的执行过程如图 1-1 所示

15 第 1 章 C 语言程序设计概述 3 图 1-1 汇编语言程序的执行过程 (2) 高级语言程序的执行高级语言编写的程序通常有编译和解释两种执行方式 编译执行过程是将源程序整个编译成等价的 独立的目标程序, 然后通过连接程序将目标程序连接成可执行程序, 运行执行文件输出结果 其执行过程如图 1-2 所示 图 1-2 高级语言编译执行过程 解释执行过程是将源程序逐句翻译, 翻译一句执行一句, 边翻译边执行, 不产生目标程序 整个执行过程, 解释程序都一直在内存中 解释方式执行过程如图 1-3 所示 图 1-3 高级语言解释执行过程 目前, 高级语言基本提供了集成开发环境, 它集源程序编辑 编译 ( 解释 ) 执行为一体, 非常方便用户使用, 如 Turbo C Visual Basic Visual C++ Delphi 等 程序设计方法概述 程序设计是一门技术, 需要相应的理论 技术 方法和工具来支持 就程序设计方法和技术的发展而言, 可以划分以下 3 个阶段 1. 早期的程序设计 计算机发展的初期, 由于 CPU 运行速度慢 内存容量小, 因此衡量程序质量优劣的标准是占用内存的大小和运行时间的长短, 这就导致了程序设计人员不得不把大量的精力耗费在程序设计技巧上 反映在程序结构上, 对程序的流程没有严格的限制, 程序员可以随心所欲地令流程转来转去, 程序流程变得毫无规律, 读者要花费很大的精力去追踪流程, 使得程序很难修改和维护 传统方法开发软件时间长 成本高 可靠性低 难以修改和维护等问题日益突出, 这就出现了当时的 软件危机 软件危机引起了人们的高度重视, 不少计算机专家着手研究探讨产生软件危机的原因并探索解决软件危机的途径 于是, 出现了对软件工程 软件管理 软件可靠性及程序设计方法 ( 设计 编制 调试及维护程序的方法 ) 等问题的研究

16 4 C 语言程序设计 ( 第二版 ) 2. 结构化程序设计 20 世纪 60 年代末, 著名学者 E.W.Dijkstra 首先提出了 结构化程序设计 (Structured Programming,SP) 的思想 这种方法要求程序设计者按照一定的结构形式来设计和编写程序, 使程序易阅读 易理解 易修改和易维护 这个结构形式主要包括两方面的内容 1) 在程序设计中, 采用自顶向下 逐步细化的原则 按照这个原则, 整个程序设计过程应分成若干层次, 逐步加以解决 每一步是在前一步的基础上, 对前一步设计的细化 这样, 一个较复杂的大问题, 就被层层分解成为多个相对独立的 易于解决的小模块, 有利于程序设计工作的分工和组织, 也便于开展调试工作 2) 在程序设计中, 编写程序的控制结构仅由 3 种基本的控制结构 ( 顺序结构 选择结构和循环结构, 它们的算法表示将在 4.2 节介绍 ) 组成, 避免使用可能造成程序结构混乱的 goto 转向语句 按照结构化程序设计方法, 使设计编写的程序的控制结构由上述 3 种结构组成, 这样的程序就是结构化程序 C 语言是一种结构化程序设计语言 结构化程序设计技术虽已使用了几十年, 但软件质量的问题仍未得到很好的解决 这是因为面向过程的程序设计方法仍然存在与人的思维方式不协调的地方, 所以很难自然 准确地反映真实世界, 因而用此方法开发出来的软件的质量还是很难保证, 甚至需要进行重新开发 另外, 该方法在实现中只突出了实现功能的操作方法 ( 模块 ), 而被操作的数据 ( 变量 ) 处于实现功能的从属地位, 即程序模块和数据结构是松散地结合在一起 因此, 当应用程序比较复杂时, 容易出错, 难以维护 为适应现代化软件开发的需要, 一种全新的软件开发技术应运而生, 这就是面向对象的程序设计 (Object Oriented Programming,OOP) 3. 面向对象的程序设计面向对象的程序设计在 20 世纪 80 年代初就提出了, 它起源于 Smalltalk 语言 用面向对象的方法解决问题, 不再将问题分解为过程, 而是将问题分解为对象 对象是现实世界中可以独立存在 可以被区分的实体, 也可以是一些概念上的实体, 现实世界是由众多对象组成的 对象有自己的数据 ( 属性 ), 也包括作用于数据的操作 ( 方法 ), 对象将自己的属性和方法封装成一个整体, 供程序设计者使用 对象之间的相互作用通过消息传送来实现 这种 对象 + 消息 的面向对象的程序设计模式将取代 数据 + 算法 的面向过程的程序设计模式 但要注意到, 面向对象的程序设计并不是要抛弃结构化程序设计方法, 而是要 站 在比结构化程序设计更高 更抽象的层次上去解决问题 当它被分解为低级代码模块时, 仍需要结构化编程的方法和技巧, 只是它分解一个大问题为小问题时采取的思路与结构化方法是不同的 结构化的分解突出过程, 强调的是如何做 (How to do?), 代码的功能如何完成 ; 面向对象的分解突出现实世界和抽象的对象, 强调的是做什么 (What to do?), 它将大量的工作交由相应的对象来完成, 程序员在应用程序中只需说明要求对象完成的任务

17 第 1 章 C 语言程序设计概述 5 目前, 常用的面向对象的程序设计语言有 Borland C++ Visual C++ Visual FoxPro Visual Basic Java Delphi Visual Fortran 等 它们虽然风格各异, 但都有共同的概念和编程模式 1.2 C 语言简介 C 语言的发展 C 语言是在 20 世纪 70 年代初问世的 1973 年, 美国电话电报公司 (AT&T) 贝尔 实验室 D.M.Ritchie 在 B 语言的基础上最终设计出了一种新的语言, 他取了 BCPL(Basic Combined Programming Language) 的第 2 个字母作为这种语言的名字, 这就是 C 语言 1978 年, 由 B.W.Kernighan 和 D.M.Ritchie 出版的名著 The C Programming Language 一书, 通常简称为 K&R, 也有人称之为 K&R 标准 但是, 在 K&R 中并没有定义一个 完整的标准 C 语言,10 年后 ( 即 1983 年 ) 由美国国家标准学会在此基础上制定了一个 C 语言标准, 通常称为 ANSI C 早期的 C 语言主要是用于 UNIX 系统 由于 C 语言的强大功能和各方面的优点逐渐 为人们认识, 到了 20 世纪 80 年代,C 开始进入其他操作系统, 并很快在各类大 中 小和微型计算机上得到了广泛的使用, 成为当代非常优秀的程序设计语言之一 在 C 的基础上,1983 年又由贝尔实验室的 Bjarne Strou-strup 推出了 C++ C++ 进一 步扩充和完善了 C 语言, 成为一种面向对象的程序设计语言 目前, 流行的 C++ 是 Borland C++ Symantec C++ 和 Microsoft Visual C++ C++ 提出了一些更为深入的概念, 它所支 持的这些面向对象的概念容易将问题空间直接地映射到程序空间, 为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法, 因而也增加了整个语言的复杂性, 掌握起来有一定难度 C 是 C++ 的基础,C++ 语言和 C 语言在很多方面是兼容的 因此, 掌握了 C 语言, 再进一步学习 C++ 就能以一种熟悉的语法来学习面向对象的语言, 从而达到事半功倍的目的 C 语言的特点 C 语言发展如此迅速, 而且成为颇受欢迎的语言之一, 主要因为它具有强大的功能 许多著名的系统软件, 如 FoxBASE DBASE III 等都是用 C 语言编写的 用 C 语言加上一些汇编语言子程序, 就更能显示 C 语言的优势, 如 PC-DOS Word 等就是用这种方法编写的 归纳起来,C 语言具有下列特点 1. 简洁紧凑 灵活方便 标准 C 语言一共有 32 个关键字,9 种控制语句, 程序书写自由, 一个 C 语句可以写在一行上, 也可分多行书写, 主要用小写字母表示

18 6 C 语言程序设计 ( 第二版 ) 2. 运算符丰富 C 的运算符包含的范围很广泛, 共有 34 个运算符 C 语言把括号 赋值 强制类型转换等都作为运算符处理, 从而使 C 的运算类型极其丰富, 表达式类型多样化, 灵活使用各种运算符可以实现在其他高级语言中难以实现的运算 3. 数据结构丰富 C 的数据类型有整型 实型 字符型 数组类型 指针类型 结构体类型 共用体类型等, 能用来实现各种复杂的数据类型的运算 ; 并引入了指针概念, 使程序效率更高 另外,C 语言具有强大的图形功能, 支持多种显示器和驱动器, 且计算功能 逻辑判断功能强大 4.C 是结构化程序设计语言结构化程序设计语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的信息交流外彼此独立 这种结构化方式可使程序层次清晰, 便于使用 维护以及调试 C 语言是以函数形式提供给用户的 这些函数可以方便地调用, 并具有多种循环 条件语句控制程序流向, 从而使程序完全结构化 5.C 语法限制不太严格 程序设计自由度大一般的高级语言语法检查比较严, 能够检查出几乎所有的语法错误 而 C 语言允许程序编写者有较大的自由度 6.C 语言允许直接访问物理地址, 可以直接对硬件进行操作 C 语言既具有高级语言的功能, 又具有低级语言的许多功能, 能够像汇编语言一样对位 字节和地址进行操作, 而这三者是计算机最基本的工作单元, 可以用来写系统软件 所以, 有人把 C 语言称为中级语言 7.C 语言程序生成代码质量高, 程序执行效率高一般只比汇编程序生成的目标代码效率低 10%~20% 8.C 语言适用范围大 C 语言还有一个突出的优点就是适合于多种操作系统, 如 DOS UNIX, 也适用于多种机型 C 语言既适合编写大型的系统软件, 也适合编写应用软件 C 语言的以上特点, 读者现在也许还不能深刻理解, 待学完 C 语言以后再回顾一下, 就会有比较深的体会 C 语言的字符集字符是组成语言的最基本的元素 C 语言字符集由字母 数字 空格 标点和特殊

19 第 1 章 C 语言程序设计概述 7 字符组成 在字符常量, 字符串常量和注释中还可以使用汉字或其他可表示的图形符号 1) 字母 : 小写字母 a~z 共 26 个, 大写字母 A~Z 共 26 个 2) 数字 :0~9 共 10 个 3) 空白符 : 空格符 制表符 换行符等统称为空白符 空白符只在字符常量和字符 串常量中起作用 在其他地方出现时, 只起间隔作用, 编译程序对它们忽略 因此在程序中使用空白符与否, 对程序的编译不发生影响, 但在程序中适当的地方使用空白符将增加程序的清晰性和可读性 4) 标点和特殊字符 C 语言编程中可以使用的标点和特殊字符共有 30 个, 如表 1-1 所示 表 1-1 标点和特殊字符 符号说明符号说明 % 百分号 ( 整型数据求余运算符或输入格式开始符 ) ~ 波浪符 ( 位取反运算符 ) & 和号 ( 取地址或位与运算符 ) = 等于号 ( 关系运算符 赋值运算符 )! 感叹号 ( 逻辑非 ) ( 左圆括号 # 磅号 ( 预处理命令开始符 ) ) 右圆括号 + 加号 ' 单引号 ( 字符常量定界符 ) - 减号 " 双引号 ( 字符串常量定界符 ) * 星号 ( 乘法或取指针指向内容运算符 ), 逗号 ( 运算符或分隔符 ) / 斜杠 ( 除法运算 ) ; 分号 ( 语句结束符 ) \ 反斜杠 ( 转义符开始符 ) : 冒号 ( 与? 构成条件运算符 ) ^ 上箭头 ( 位异或运算符 ). 实心句号 ( 小数点或成员运算符 ) > 大于号? 问号 ( 与 : 构成条件运算符 ) < 小于号 _1 下划线 { 左花括号 ( 与 } 构成复合语句 ) [ 左方括号 } 右花括号 ( 与 { 构成复合语句 ) ] 右方括号 单竖线 ( 位或运算符, 两个组成逻辑或运算符 ) 空格符 ( 分隔符 ) C 语言的标识符 在 C 语言中的标识符主要是用来表示常量 变量名 函数 数据类型等的名字 C 语言的标识符为 3 类 : 保留字符 预定义标识符和用户自定义标识符 1. 保留字符 C 语言的保留字符 ( 也称关键字 ) 共有 32 个, 根据关键字的作用, 可分为数据类型关键字 控制语句关键字 存储类型关键字和其他关键字 4 类 1) 数据类型关键字 (12 个 ):char double enum float int long short signed struct union unsigned void

20 8 C 语言程序设计 ( 第二版 ) 2) 控制语句关键字 (12 个 ):break case continue default do else for goto if return switch while 3) 存储类型关键字 (4 个 ):auto extern register static 4) 其他关键字 (4 个 ):const sizeof typedef volatile C 语言的关键字都用小写字母 C 语言中区分大写与小写,else 是关键字,ELSE 则不是 在 C 语言程序中, 关键字不能用于其他目的, 即不允许将关键字作为变量名或函数名 2. 预定义标识符 C 语言中除了上述保留字符外, 还有一类具有特殊含义的标识符, 它们被 C 系统用作库函数名 预编译命令, 这类标识符称为系统预定义标识符 例如, 系统库函数 sin printf scanf 等 ; 预编译命令 define include undef ifdef endif 等 一般来说, 用户在编写 C 语言程序时, 不要把这些标识再定义为其他用途的标识符 ( 用户自定义标识符 ) 3. 用户定自义标识符用户自定义标识符是用户根据编程的需要在程序中定义的标识符, 用于表示 ( 标识 ) 变量名 符号常量名 用户自定义函数名 类型名等 C 语言自定义标识符规定 : 标识符只能是字母 (A~Z,a~z) 数字(0~9) 下划线 (_) 组成的字符串, 并且其第 1 个字符必须是字母或下划线 例如, 以下标识符是合法的 : a, x, x3, BOOK1,sum5,mysin 以下标识符是非法的 : 3s 以数字开头 s*t 出现非法字符 * -3x 以减号开头 bowy-1 出现非法字符- ( 减号 ) 使用自定义标识符时还必须注意以下几点 1) 标准 C 不限制标识符的长度, 但它受各种版本的 C 语言编译系统限制, 同时也受到具体机器的限制 例如,Turbo C 中规定标识符前 32 位有效, 当两个标识符前 32 位相同时, 则被认为是同一个标识符 2) 标识符中, 大小写是有区别的 例如,BOOK 和 book 是两个不同的标识符 3) 标识符虽然可由程序员随意定义, 但标识符是用于标识某个量的符号 因此, 命名应尽量有相应的意义, 以便阅读理解, 做到 见名知义, 例如, 可用 sum 表示求和的量,name 表示姓名等 4) 不能使用 C 语言的关键字 : 类型说明符 语句定义符和预处理命令 5) 标识符不能和用户已编制的函数或 C 语言库函数同名, 否则程序中调用库函数就会出错

21 第 1 章 C 语言程序设计概述 C 语言的程序结构 几个简单的 C 语言程序实例 为了便于说明 C 语言的基本程序结构及特点, 首先介绍几个简单的 C 语言程序 例 1-1 具体程序如下 在屏幕输出一行文字信息 #include <stdio.h> // 文件包含 void main() // 主函数 { // 函数体开始 printf("hello C!\n"); // 输出了一句话 } // 函数体结束 这是一个最简单的 C 语言程序, 其执行结果是在屏幕上显示一行信息 Hello C! 程序运行结果如下 Hello C! Press any key to continue 以上运行结果是在 Visual C 环境下运行程序时屏幕上得到的显示 其中, 第 1 行是程序运行后输出的结果 ( 在屏幕上显示一行信息 Hello C! ), 第 2 行是 Visual C 系统在输出完运行结果后自动输出的一行信息 当用户按任意键后, 屏幕上不再显示运行结果, 而返回程序窗口, 以便进行下一步工作 ( 如修改程序 ) 为节省篇幅, 本书在以后显示运行结果时, 不再包括内容为 Press any key to continue 的行 说明 :main 是主函数的函数名, 表示这是一个主函数, 每一个 C 源程序都必须有 且只能有一个主函数 (main( ) 函数 ),{} 括起来的内容是函数体, 是函数所要完成的操作, 每个函数至少有一对 {} 本例中主函数内只有一个输出语句,printf 是 C 语言中的输出函数, 是一个由系统定义的标准函数, 可在程序中直接调用, 双引号内的字符串原样输出 "\n" 是换行符, 即在输出 Hello C! 后回车换行 #include 是 C 的预编译命令 #include <stdio.h> 把头文件 stdio.h 的内容展开在该命令所在的位置,C 语言中的一些宏 库函数声明一般都放在相应的头文件中 头文件 stdio.h 中定义了 I/O( 输入 / 输出 ) 库所用到的某些宏和函数的定义信息等 在 VC++ 中, 程序开头要求使用该命令, 否则编译时会出现警告信息 为节省篇幅, 本书例题一般省略该命令, 请读者调试程序时自行加上去, 例 1-2 输入两个数据, 计算它们的和, 并打印输出在屏幕上 程序设计如下 #include <stdio.h> void main() { int a,b,s; // 定义变量

22 10 C 语言程序设计 ( 第二版 ) } printf(" Enter two number a,b=?\n"); // 输出提示信息 scanf("%d%d", &a,&b); // 调用标准函数, 要求用户输入 a 和 b 的值 s =a+b; // 求 a 与 b 的和 printf("s=%d\n",s); // 输出结果 本程序的作用是求两个整数 a 和 b 之和 s 第 2 行是声明部分, 声明变量 a b 和 s 为整型 (int) 变量 ; 第 3 行是输出语句, 输出一行信息 (Enter two number a,b=?); 第 4 行是调用库函数 scanf( ) 从键盘读入数据 ; 第 5 行是求 a+b 的和, 并赋给变量 s; 第 6 行 是调用 printf( ) 打印输出数据 程序运行结果如下 Enter two number a,b=? 36 62< 回车 > s=98 程序中用 // 来表示对程序的说明 ( 称为注释 ), 从 // 开始到行尾都为注释说明文字 在标准 C 系统使用 /*...*/ 作注释, 在 TC++ 系统中或 VC 系统两者注释均可使用, 但常常用 // 作注释 注释文字可以是任意字符, 如汉字 拼音 英文等 注释只是给人看的, 对编译和运行不起作用 例 1-3 将例 1-2 中的求两个数的和编写成独立的函数, 在主函数中调用实现 #include <stdio.h> void main() // 主函数 { int fsum(int,int); // 用户自定义函数声明 int a,b,t; // 定义 a,b,t 为整型变量 printf(" Enter two number a,b=?\n"); scanf(" %d%d",&a,&b); // 输入变量 a 和 b 值 t=fsum(a,b); // 调用函数 fsum, 结果返回赋值给 t printf(" %d+%d=%d\n",a,b,t); // 打印输出 } int fsum(int x,int y) // 定义函数 fsum,int 指定该函数返回一个整数 { int z; z=x+y; return(z); // 返回变量 z 的值 } 本程序除 main 函数, 还有 1 个功能简单的用户自定义函数 fsum( ), 程序的执行过程如下 1) 程序从 main( ) 处开始 2) 为声明的整型变量 a b t 分配存储单元 3) 要求用户为变量 a b 输入数据 ( 如输入 38 78) 4) 执行函数 fsum( ); 将变量 a b 的值传递到函数 fsum( ) 中分别给 x y, 并将计算结果返回赋值给变量 t, 此时,t 的值为 a+b 的值 5) 在屏幕打印输出计算结果

23 第 1 章 C 语言程序设计概述 11 程序运行结果如下 Enter two number a,b=? 38 78< 回车 > 38+78= C 语言程序的结构特点 通过上面 3 个简单的 C 语言程序, 可以看出 C 语言程序的基本结构有以下几个特点 1)C 语言程序为函数模块结构, 所有的 C 语言程序都是由一个或多个函数构成, 其中必须且只能有一个主函数 main( ) 2)C 语言程序从主函数开始执行, 当执行到调用函数的语句时, 程序将控制转移到 所调用函数中执行, 执行结束后, 再返回主函数中继续运行, 直至程序执行结束 3)C 语言程序的函数是由编译系统提供的标准函数 ( 如 printf scanf 等 ) 和由用户 自己定义的函数 ( 如 fsum 等 ) 组成的 4) 源程序中可以有预处理命令 (include 命令仅为其中的一种 ), 预处理命令通常应 放在源程序的最前面 5) 每一个说明, 每一个语句都必须以分号结尾 但预处理命令, 函数头和花括号 } 之后不能加分号 C 语言函数的结构 函数是 C 语言程序的基本单位 任何函数 ( 包括主函数 main( )) 都是由函数头和函 数体两部分组成, 其一般结构如下 函数类型函数名 ([ 形式参数说明 ]) { 数据说明部分 ; 语句部分 ; } 其中, 函数头包括函数类型 函数名和圆括号中的形式参数及类型说明 如例 1-3 中的 求两个整数的和的函数定义 int fsum(int x,int y), 如果函数调用无参数传递, 圆括号中 形式参数为空 有关函数的详细介绍请参见第 6 章 函数体包括函数体内使用的数据说明和执行函数功能的语句, 第一个花括号 { 表 示函数体的开始, 最后一个花括号 } 表示函数体的结束 函数体中可以有多对花括号 {..}, 它们构成复合语句 C 语言程序的书写风格 从书写清晰, 便于阅读 理解 维护的角度出发, 在书写程序时应遵循以下规则 1) 一个说明或一个语句占一行 2) 函数与函数之间加空行, 以清楚地分出程序中有几个函数 3) 用 {} 括起来的部分, 通常表示了程序的某一层次结构 {} 一般与该结构语句的第

24 12 C 语言程序设计 ( 第二版 ) 一个字母对齐, 并单独占一行 4) 低一层次的语句或说明比高一层次的语句或说明缩进若干格后书写, 同一个层次的语句左对齐, 以便看起来更加清晰, 增强程序的可读性 5) 对数据的输入, 运行时最好要出现输入提示, 对于数据输出, 也要有一定的提示和格式 6) 对一些较难理解的 重要的语句及过程, 加上适当的注释 虽然 C 语言程序对书写的要求没有太多的限制, 只要符合语法规则就行, 但在这里我们强调书写必须规范, 特别对于初学者 在编程时应力求遵循以上规则, 以养成良好的编程风格 1.4 运行一个 C 语言程序 C 语言程序运行的一般步骤 在 节中介绍了高级语言编写的程序的执行过程 用 C 语言编写的程序叫做 C 源程序, 从 C 源程序到在计算机上得到运行结果, 其操作过程如图 1-4 所示 图 1-4 C 语言程序执行的操作过程 1. 源程序编辑源程序编辑亦称程序设计, 程序员用任一编辑软件 ( 编辑器 ) 将编写好的 C 语言程序输入计算机, 并以文本文件的形式保存在计算机的磁盘上, 编辑的结果是建立 C 源程序文件 C 语言程序习惯上使用小写英文字母, 符号常量和其他用途的符号可用大写字

25 第 1 章 C 语言程序设计概述 13 母 C 语言对大 小写字母是有区别的, 关键字必须小写 2. 程序编译 编译是指将编辑好的源文件翻译成二进制目标代码的过程 编译过程是使用 C 语言 提供的编译程序 ( 编译器 ) 完成的 不同操作系统下的各种编译器的使用命令不完全相同, 使用时应注意计算机环境 编译时, 编译器首先要对源程序中的每一个语句检查语法错误, 当发现错误时, 就在屏幕上显示错误的位置和错误类型的信息 此时, 要再次调用编辑器进行查错修改, 然后再进行编译, 直至排除所有语法和语义错误 正确的源程序文件经过编译后, 在磁盘上生成能被 CPU 直接识别二进制文件 目标文件 3. 连接程序 编译后产生的目标文件是不能直接运行, 还必须通过连接生成可执行文件才能运行 连接就是把目标文件和其他分别进行编译生成的目标程序模块 ( 如果有的话 ) 及系统提供的标准库函数连接在一起, 生成可以运行的可执行文件的过程 连接过程使用 C 语言提供的连接程序 ( 连接器 ) 完成, 生成的可执行文件存在磁盘中 4. 程序运行 生成可执行文件后, 就可以在操作系统控制下运行 若执行程序后达到预期目的, 则 C 语言程序的开发工作到此完成 否则, 要进一步检查修改源程序, 重复 编辑 编译 连接 运行 的过程, 直到取得预期结果为止 由于操作系统不同, 或系统中安装了不同版本的 C 语言处理系统, 所使用的 C 语言支持环境也会有所不同 本书中, 着重介绍标准 C(ANSI C), 因此, 编写的例子程序一般可运行于 Visual C++ Borland C++ Turbo C 等环境 除 Visual C++ 外, 不同 C 的集成开发环境其操作的差别并不大 本书所涉及的程序基本上在 Visual C++ 集成开发环境中调试通过 在 Microsoft Visual C++ 环境下编辑 编译及运行 C 语言程序 Visual C 是 Microsoft 公司在 1998 年推出的一款运行在 Windows 上的集成开发环境 Visual C 可以对 C 语言程序进行各种操作, 如建立 打开 编辑 保存 编译 连接 运行和调试等 1. 启动 Visual C++ 启动 Visual C++ 方法 : 开始 程序 Microsoft Visual Studio 6.0 Microsoft Visual C 启动 Visual C++ 后, 出现 Visual C++ 集成化环境的操作窗口, 如图 1-5 所示 ( 为创天汉化 VC 6.0 系统 )

26 14 C 语言程序设计 ( 第二版 ) 图 1-5 Visual C 主操作窗口 2. 新建 / 打开 C 语言程序文件 (1) 新建 C 语言程序文件 1) 选择 文件 新建 菜单 2) 单击 文件 选项卡, 如图 1-6 所示, 选好 C++ Source File 项, 在右边 文件 下编辑框输入文件名, 选取文件保存目录, 单击 确定 按钮, 即可在编辑窗口中输入程序 图 1-6 新建文件 (2) 打开 C 语言程序文件 1) 选择 文件 打开 菜单 2) 确定查找范围, 打开指定的文件, 如打开例 1-2(lt1-2.c) 后, 系统界面如图 1-7 所示

27 第 1 章 C 语言程序设计概述 15 图 1-7 打开例 1-2(lt1-2.c) 文件 3.C 语言程序文件存盘 1) 当输入编辑好一个新程序, 选择 文件 保存 菜单或使用快捷键 (Ctrl+S) 如果一个源程序被修改后, 需要保存为另外的源文件或保存在另外的位置, 可选择 文件 另存为 菜单, 此时将弹出 文件另存为 对话框 2) 确定好程序文件的保存位置 3) 输入要保存的文件名, 指定文件的扩展名为.c 注意 : 如果程序修改后, 以原文件名保存, 可直接使用工具栏保存按钮或选择 文件 保存 菜单 4. 编译 C 语言程序文件及程序执行 程序执行前, 首先要编译连接生成可执行文件, 打开 C 源程序文件 1) 如果是一个单一源文件, 选择 编译 编译 菜单 如果编译连接过程没有错误, 出现如图 1-8 所示的界面, 此时则在 debug 文件夹下生成一个同名扩展名为.exe 的可执行程序 如果编译出错, 则在信息窗口给出出错信息, 如图 1-9 所示 程序员根据提示修改源程序的错误, 修改后保存, 再重新进行编译, 直到无错 2) 选择 编译 执行 菜单或使用快捷键 Ctrl+F5 执行程序 例 1-2 的执行情况如图 1-10 所示

28 16 C 语言程序设计 ( 第二版 ) 图 1-8 编译连接无错情况 图 1-9 编译连接出错情况 图 1-10 执行 lt1-2.exe 的运行情况

29 第 1 章 C 语言程序设计概述 关闭程序工作区 一个程序编译连接后,Visual C++ 系统自动生成相应的工作区, 可以完成程序的执行 若要想编译执行第 2 个程序, 则须先关闭前一个程序的工作区, 才能对第 2 个程序编译连接执行, 否则执行的将是前一个程序 选择 文件 关闭工作区 菜单, 即可完成关闭程序工作区的操作 小 结 通过本章的学习, 读者应对计算机语言及程序设计的概念 C 语言程序的组成特点 C 语言程序的运行过程有一个初步了解 程序设计是一门实践性很强的课程, 学习 C 语言程序设计的一个重要环节就是要既动手又动脑地做实验 对 C 语言程序设计初学者而言, 除了学习 熟记 C 语言的一些语法规则外, 更重要的是多阅读别人编写的程序, 多自己动手编写一些小程序, 多上机调试运行程序 初学程序设计的一般规律是 : 先模仿, 在模仿的基础上改进, 在改进的基础上提高 ; 做到善于思考, 边学边练 做到这几点, 学习好 C 语言程序设计就不难了 衷心地希望每一位学习 C 语言程序设计的人, 都能从程序设计实验中获得收获, 获得快乐 习 题 一 思考题 1. 计算机高级语言编写的程序为什么不能直接被计算机执行? 程序的编译执行与解释执行的区别是什么? 2.C 语言程序的结构特点是什么? 3.C 语言中的标识符有什么规定? 程序可以使用预定义标识符作变量或自定义函 数名吗? 如果使用会造成语法错误吗? 4. 如何运行一个 C 语言程序? 5. 在 C 语言程序最前面常常看到有这样的命令 :#include <stdio.h>, 它的功能是什么? 二 判断题 1. 机器语言 汇编语言 高级语言都是计算机语言, 但只有机器语言编写的程序才 是计算机可以直接执行的程序 ( ) 2. 用汇编程序处理 C 语言的源程序, 可以生成机器语言程序 ( ) 3. 因 main 函数无返回值, 定义函数 main 时可以缺省标识符 void ( ) 4. 一条 C 语句如果太长, 可以从任何一处插入回车符, 将其分别写在若干行上 ( ) 5.C 语言源程序文件经过编译 连接之后生成一个后缀为.EXE 的文件 ( )

30 18 C 语言程序设计 ( 第二版 ) 三 填空题 1. 一个 C 语言程序由若干个函数组成, 其中必须有一个函数 2.C 语言程序中的函数一般由两部分组成, 它们是和 3.C 语言函数的函数体是以开始, 以结束 4.C 语言程序从函数开始执行, 在函数中结束 5.C 语言程序的基本单位是 C 语句至少包括一个 四 选择题 1.C 语言程序中,main 函数的位置 ( ) A. 必须放在其他函数之前 B. 必须在源程序的最后 C. 可以在程序的任何位置 D. 包含文件中的第一个函数 2. 说法正确的是 ( ) A.C 语言程序总是从第一个定义的函数开始执行 B. 在 C 语言程序中, 要调用的函数必须在 main 函数中定义 C.C 语言程序总是从 main 函数开始执行, 在 main 函数结束 D.C 语言程序中的 main 函数必须放在程序的开始部分 3. 组成一个 C 语言程序的是 ( ) A. 子程序 B. 过程 C. 函数 D. 主程序和子程序 4.C 语言中的标识符只能由字母 数字和下划线 3 种字符组成, 且第 1 个字符 ( ) A. 必须为字母或下划线 B. 必须为下划线 C. 必须为字母 D. 可以是字母 数字和下划线中的任一种字符 5. 叙述正确的是 ( ) A.C 语言程序中每一行只能写一个语句 B.C 语言中没有输出语句, 数据的输入 / 输出使用函数来完成 C.C 语言程序中的注释只能写在一行, 要注释多行就需每行加注释 (/* */) 五 编程题 D. 如果一个语句很长, 可以写成多行, 可在语句的任何位置使用空格 + 回车作 为续行符 1. 仿照例 1-1 编写程序输出如下形式的信息 : ===================== Hello! How do you do! ===================== 2. 仿照例 1-2 编写一个 C 语言程序, 输入两个整数, 输出它们的和 积 3. 仿照例 1-2 编程, 输入圆柱体的半径和高, 计算并输出圆柱体的体积

31 第 2 章数据类型与常用库函数 学习要求 掌握基本数据类型的使用, 理解不同类型数据在内存中的存放形式 掌握常量的分类及其表示形式 掌握变量的定义及初始化 理解指针的概念, 掌握指针变量的定义 初始化及简单使用 掌握数据的输入 / 输出方法及常用输入 / 输出函数的使用 掌握常用内部函数的使用 2.1 C 语言的数据类型 数据是程序处理的对象, 也是程序的必要组成部分 程序中的数据必须依附其内存 空间才能操作, 不同类型的数据在内存中存储的格式 所占内存空间的大小是不同的, 不同类型的数据参与不同的运算 例 2-1 下面是计算两个数据参与算术运算的程序, 请分析其结果 #include <stdio.h> void main() { int a,b,c,x,y; // 定义 a,b,c,x,y 为整型变量 } a=300; b=500; c=a+b; x=a*b; y=a/b; printf(" c=%d, x=%d, y=%d",c,x,y); 这是个简单的小学数学问题, 程序运行结果如图 2-1 所示 (a)tc 环境下 (b)vc++6.0 环境下 图 2-1 例 2-1 的运行结果

32 20 C 语言程序设计 ( 第二版 ) 很显然, 结果是出乎意料的,TC 环境下, 除变量 c 的值是正确的外,x y 的值都是错误的, 如图 2-1(a) 所示 ;VC 环境下, 变量 c x 的值是正确的,y 的值是错误的, 如图 2-1(b) 所示 这是为什么? 通过后面的学习, 我们就知道出错原因是程序中使用的数据类型不当造成的 C 数据类型概述 C 语言提供了丰富的数据类型, 这些数据类型可分为 4 大类, 如图 2-2 所示 图 2-2 数据类型本章主要介绍 C 语言的基本数据类型 基本数据类型基本数据类型是构成 C 语言的数据类型的最基本要素, 其中整型 (int) 实型(float 和 double) 和字符型 (char) 是表述客观事物的数据和符号的基本需要 如果程序中处理的数据是一些整数, 如统计人数 表示人的年龄一般要使用整型 (int) 数据 ; 表示有小数的数据, 如果精度要求不高, 如职工工资 平均产量等就要使用单精度数据 (float), 如果精度要求高, 则可使用双精度数据 (double) 按照 ANSI C 标准, 整型 实型和字符型数据的取值范围如表 2-1 所示 表 2-1 C 的基本数据类型分类数据类型类型符占字节数大小范围基本整型 int ~32767 整型 短整型 short int 或 short ~32767 长整型 long ~ 无符号整型无符号基本整型 unsigned int 或 unsigned 2 0~65535

33 第 2 章数据类型与常用库函数 21 分类数据类型类型符占字节数大小范围 续表 无符号整型 无符号短类型 无符号长整型 unsigned short int 或 unsigned short unsigned long int 或 unsigned long 2 0~ ~ 单精度实数 float E38~ E38 实型 双精度实数 double E308 ~ E308 字符字符型 char 1 0~255 注意 : 在不同的编译系统, 同一类型在内存中所占的字节数可能有不同的规定 在 Visual C 环境下,short int 类型占 2 字节,int unsigned int 类型占 4 字节 读者应了解所用系统的规定, 在将一个程序从一个系统移到另一个系统 时, 需要注意这个区别 对于使用 C 的数据 ( 变量或常量 ), 应该搞清以下几点 1) 数据类型 2) 此类数据在内存中的存储形式 占用的字节数 3) 数据的取值范围 4) 数据能参与的运算 5) 数据的有效范围 ( 全局变量 局部变量 ) 生存周期 ( 动态变量 静态变量 ) 等, 这部分内容将在第 6 章中介绍 例如, 对于一个基本整型 (int) 变量 x, 标准 C 系统中占用两个字节内存 以定点数据形式来存储, 数据的取值范围是 ~32767 若在程序中, 某个计算值大于 32767, 就不能用整型变量来存储, 应考虑使用长整型或实型变量 如果数据是有小数点 的实数, 如表示物体的面积 体积等, 就应使用实型 (float 或 double) 变量 * 各类数据在内存中的存放方式 了解各类数据在计算机内存中的存储形式, 对于分析程序运行结果, 在程序设计中合理使用数据类型是很重要的 本节的知识属于计算机基础知识, 如果读者已掌握, 可跳过本节内容 1. 机器数与原码 补码和反码表示 (1) 机器数在计算机内部, 一切信息 ( 包括数值 字符 指令等 ) 的存储 处理与传输均采用二进制的形式 为了方便在计算机中表示, 又便于与实际值相区分, 引入机器数和真值的概念 1) 机器数 数的符号也用二进制数 0 或 1 来表示的, 且符号位总是在该数的最高数值位之前的数称为机器数 规定 0 表示正号, 1 表示负号

34 22 C 语言程序设计 ( 第二版 ) 2) 真值 用 + - 表示符号的数叫做真值 例如, 标准 C 语言中的基本整型数据在计算机中通常用 16 位 ( 即 2 个字节 ) 来存 储, 图 2-3 所示是十进制数 67 和 -67 在计算机中的存储 形式 (2) 原码表示法 符号位为 0 表示正数, 为 1 表示负数, 数值部分用 二进制数的绝对值表示的方法称为原码表示法 通常用 [X] 原表示 X 的原码 图 2-3 数在计算机内符号的表示例如, 使用 2 个字节来存储, 十进制数 +67 和 -67 的原码表示如图 2-3 所示, 记为 : [+67] 原 = [-67] 原 = 的原码有两种表示 : [+0] 原 = [-0] 原 = 因此, 原码表示中, 数值 0 不是唯一的 原码的表示简单, 与真值转换方便, 但进行减法运算时显得很不方便 (3) 反码表示法反码表示法规定 : 正数的反码与原码相同, 负数的反码是符号位为 1( 不变 ), 数值部分等于其绝对值各位求反 (0 变 1,1 变 0) 例如, 十进制数 +67 和 -67 的反码表示为 : [+67] 反 = [-67] 反 = 在反码也有两种表示 : [+0] 反 = [-0] 反 = 由此可见,0 在反码表示 ( 即数值 0) 中也不是唯一的 (4) 补码表示法补码表示法规定 : 正数的补码与原码 反码相同, 负数的补码是在该数的反码加 1 例如, 十进制数 +67 和 -67 的补码表示为 : [+67] 补 = [-67] 补 = 在补码表示中 : [+0] 补 =[-0] 补 = 因此, 数值 0 的补码表示是唯一的 说明 : 采用补码运算, 计算机的控制线路简单, 所以目前大多数计算机采用补码存储 补码运算, 其运算结果仍为补码形式

35 第 2 章数据类型与常用库函数 定点数和浮点数数在计算机中表示, 主要分为定点数和浮点数两种类型 整数常常使用定点表示, 实数常常使用浮点表示 所谓定点数, 就是数的小数点的位置是固定的 ; 而浮点数, 则是数的小数点的位置是不固定的 (1) 整数的表示 定点数在定点整数中, 小数点定在数值右面的最低位, 即把小数点固定在数值部分的最后面, 如图 2-4 所示 例如, 整数 194 采用定点数存储形式, 如图 2-5 所示 图 2-4 整数表示 图 2-5 整数 194 存储形式 如果使用 2 个字节来存储 1 个整数, 整数的取值范围 :-2 15 M , 即 M (2) 实数的表示 浮点数浮点数表示法对应于科学计数 ( 指数 ) 法, 如数值 可以表示成 : M= = 将其指数也写成二进制表示, 则 M= 由此可见, 在计算机中一个浮点数由两部分构成 : 阶码和尾数 阶码是整数, 尾数是纯小数, 即可表示为 : M=2 P S 其中,P 是一个二进制整数,S 是二进制小数, 这里称 P 为数 M 的阶码,S 为数 M 的尾数,S 表示了数 M 的全部有效数字, 阶码 P 指明了小数点的位置 因此, 在计算机中, 一个浮点数的表示分为阶码和尾数两个部分, 其格式如图 2-6 所示 其中, 阶码确定了小数点的位置, 表示数的范围 ; 尾数则表示数的精度, 尾符也称数符, 由它确定数据的正负符号 浮点数的表示图 2-6 浮点数的存放形式范围比定点数大得多, 精度也高 在不同字长的计算机中, 浮点数所占的字长是不同的 实型数据是采用浮点数的存放形式存储的 一般微型计算机中单精度 (float 类型 ) 使用 4 个字节来存储, 通常阶码及阶符占 1 个字节, 尾数及尾符占 3 个字节, 阶符和尾符各占 1 个二进制位,float 类型的数值范围是 -2 P ~2 P, 其中 P 为 7 个二进制位表的最大数 ( ), 即 127, 所以 float 类型的数值范围是 -2 P ~2 P, 即 ~2 127, 即 ~10 38

36 24 C 语言程序设计 ( 第二版 ) 3. 字符的存储形式 ASCII 码计算机中, 对非数值的文字和其他符号进行处理时, 要对文字和符号进行数字化处理, 即用二进制编码来表示文字和符号 字符编码 (Character Code) 用二进制编码来表示字母 数字以及专门符号 目前, 计算机中普遍采用的是 ASCII(American Standard Code for Information Interchange) 码, 即美国信息交换标准代码 ASCII 码有 7 位版本和 8 位版本两种, 国际上通用的是 7 位版本,7 位版本的 ASCII 码有 128 个元素, 只需用 7 个二进制位 (2 7 =128) 表示, 其中控制字符 33 个 (0~31,127), 阿拉伯数字 10 个, 大小写英文字母 52 个, 各种标点符号和运算符号 33 个 在计算机中, 实际用 8 位表示一个字符, 最高位为 0 标准 ASCII 码共 128 个符号 ( 参见附录 A) 例如, 数字 0 的 ASCII 码为 48, 大写英文字母 A 的 ASCII 码为 65 等 在内存的存放是 ASCII 码值的二进制形式 比如, 字符 A 的存放就是 ASCII 码值 65 的二进制数据, 如图 2-7 所示 图 2-7 字符 A 在内存中的存放 例 2-2 通过下面程序的输出结果查看 ASCII 值和相应的字符 #include <stdio.h> void main() { int i; for(i=0;i<=127;i++) printf("%d %c ",i,i); } // i 从 0 循环到 127, 步长为 1, i++ 即 i=i+1 // 按十进制格式输出 i, 再按字符格式输出 i 2.2 常量 常量是指在程序运行过程中, 其值保持不变的量 这些量在程序运行之前就是已知的 常量又分为数值常量和符号常量, 数值常量是用常数本身的值表示的常量 ; 符号常量是用符号来表示常量, 在程序中凡是出现该常量的地方, 都用这个符号代替 数值常量数值常量又分为整型常量和实型常量 1. 整型常量通常整型常量指的是十进制 (Decimal) 整数, 在 C 语言中还可以使用八进制 (Octal) 和十六进制 (Hexadecimal) 形式的整型常数, 可提高系统的效率 整型常数的表示形式如表 2-2 所示

37 第 2 章数据类型与常用库函数 25 表 2-2 整型常数的表示形式 表示形式特点举例 十进制 八进制 十六进制 没有前缀, 其数码为 0~9 以前导 0( 零 ) 开头, 数码取值为 0~7 以前导 0( 零 )x( 大小写均可 ) 开头, 其数码取值为 0~9,A~F 或 a~f 如 是合法的十进制整常数, 而 23D 不是合法的十进制整常数如 是合法的八进制整常数, 它们分别代表十进制数 , 而 256( 无前缀 0) 03A2( 包含了非八进制数码 ) 不是合法的八进制整常数如 0X2A 0XA0 0XFFFF 是合法的十六进制整常数, 它们分别代表十进制数 , 而 5A( 无前缀 0X) 0X3H( 含有非十六进制数码 ) 不是合法的十六进制整常数 例 2-3 通过以下例题来说明整型常量的 3 种表示方法及相互关系 void main() { int x=123,y=0123,z=0x123; printf("%d %d %d\n",x,y,z); printf("%o %o %o\n",x,y,z); printf("%x %x %x\n",x,y,z); } 程序运行结果如下 b // 以十进制形式 %d 输出 // 以八进制形式 %o 输出 // 以十六进制形式 %x 输出 程序中的 %d %o %x 分别是 printf( ) 函数的输出十进制 八进制 十六进制整型 数的格式转换控制符 ( 将在 2.5 节中详细介绍 ) 输出时, 它们依次用后面变量的值进行 替换 2. 实型常量 C 语言的实数有 float( 单精度 ) 实数 double( 双精度 ) 实数, 它们在计算机内存 中是以浮点数形式存放的, 故又称浮点实数 在 C 语言中, 实数只采用十进制, 实型常量有两种表示形式 (1) 十进制数形式由数码 0~9 和小数点组成 例如,0.0,.25,5.789,0.13,5.0,300., 等均为合法的实数 (2) 指数形式由十进制数 a, 加阶码标志 e 或 E 以及阶码 n 组成 一般形式 :a E n 或 a e n 说明 : 阶码 n 可以带符号, 只能为十进制整数 ; e 或 E 的两边必须有数

38 26 C 语言程序设计 ( 第二版 ) 以下是合法的实数 : 2.1E5( 等于 ) 3.7E-2( 等于 ) 0.5E7( 等于 ) 以下不是合法的实数 : 345( 无小数点 ) E7( 阶码标志 E 之前无数字 ) 2.7E( 无阶码 ) -5E3.6( 阶码不可以为小数 ) 说明 : 1) 当幂为正数时, 正号可以省略, 即 1.25E+3 等价于 1.25E3 2) 同一个实数可以有多种表示形式, 例如, 可以用 E E E E+2 125E+1 表示 一般将 即 1.25E+3 称为 规范化的指数形式 字符常量 字符常量是用单引号括起来的单个字符 例如,'a' 'b' '=' '+' '?' 等都是合法字符常量 字符常量的特点如下 1) 字符常量只能用单引号括起来, 不能用双引号或其他括号 单引号中的字符不能是单引号 ' 和反斜杠 \, 它们特有的表示法在下一节的转义字符中介绍 2) 字符常量只能是单个字符, 不能是字符串, 如 'ab' 就是错误的 3) 字符可以是字符集中任意字符 在 C 语言中, 字符是按其所对应的 ASCII 码值来存储的, 一个字符占一个字节 例如,'0' 字符 ASCII 码值是十进制数 48,'A' 字符 ASCII 码值是 65 注意 : 字符 '9' 和数字 9 的区别 : 前者是字符常量, 后者是整型常量, 它们的含义和在计算机中的存储方式截然不同 字符常量可以像整数一样在程序中参与相关的运算 例如, 'a'-32; // 执行结果 97-32=65 'A'+32; // 执行结果 65+32=97 '9'-9; // 执行结果 57-9= 字符串常量 字符串常量是由一对双引号括起的字符序列 例如,"CHINA" "C program:" "$12.5" "A" 等都是合法的字符串常量 字符串常量和字符常量是不同的量 它们之间主要有以下区别 1) 字符常量由单引号括起来 ; 字符串常量由双引号括起来 2) 字符常量只能是单个字符 ; 字符串常量则可以含一个或多个字符 3) 一个字符常量可以赋予一个字符变量 ; 字符串常量则通过一个字符型数组或字符型指针变量存储 4) 字符常量占一个字节的内存空间 ; 字符串常量占的内存字节数等于字符串中字符数加 1, 因为 C 语言规定在每个字符串的结尾处, 都要加一个字符串终止符 '\0'(ASCII 码为 0), 以便系统判断字符串是否结束

39 第 2 章数据类型与常用库函数 27 例如, 字符常量 'a' 在内存中占 1 个字节, 而字符串常量 "a" 实际上在内存中占 2 个字 节, 其存储形式分别如下 a a \0 例如, 字符串 "ABCDEF" 有 6 个字符, 作为字符串常量 "ABCDEF" 存储于内存中时, 共占 7 个字节, 系统自动在后面加上 '\0', 其存储形式如下 转义字符 A B C D E F \0 转义字符是一种特殊的字符常量, 以反斜杠 \ 开头, 后跟一个或几个字符, 具有特定的含义, 不同于字符原有的意义, 故称 转义 字符 如前面在 printf( ) 函数中用到的 \n, 其中的 n 不代表字母 n, 与 \ 合起来代表 回车换行 转义字符主要用来表示用一般字符不便于表示的控制代码, 常用的转义字符如表 2-3 所示 表 2-3 转义字符 转义字符意义 ASCII 码值 ( 十进制 ) \a 响铃 (BEL) 007 \b 退格 (BS) 008 \f 换页 (FF) 012 \n 回车换行 (LF) 010 \r 回车 (CR) 013 \t 水平制表 (HT) 009 \v 垂直制表 (VT) 011 \\ 反斜杠 092 \? 问号字符 063 \' 单引号字符 039 \" 双引号字符 034 \0 空字符 (NULL) 000 \ddd 1~3 位八进制数代表的字符, 如 \41 代表! 33(!) \xhh 1~2 位十六进制数代表的字符, 如 \x41 代表 A 65(A) 符号常量 在程序中, 某个常量多次被使用, 则可以使用一个符号来代替该常量 例如, 数学运算中的圆周率常数 π( ), 如果使用一个符号 PI 来表示, 在程序中使用到该常量时, 就不必每次输入 , 用 PI 来代替它, 这样不仅在书写上方便, 而且有效地改进了程序的可读性和可维护性 C 语言中使用宏定义命令 #define 定义符号常量 其格式如下

40 28 C 语言程序设计 ( 第二版 ) #define 符号常量标识符常数表达式 例 2-4 求一个半径为 r 的球的体积和表面积 #define PI // 定义 PI 为符号常量, 值为 void main() { float v,s,r; scanf("%f",&r); v=4.0/3.0*pi*r*r*r; s=4*pi*r*r; printf("v=%f, s=%f\n",v,s); } 本程序在主函数之前用宏定义命令定义 PI 为 , 在程序中即以该值代替 PI s=pi*r*r 等效于 s= *r*r 应该注意的是, 符号常量不是变量, 它所代表的值在整个作用域内不能再改变 关于宏定义将在第 7 章中详细介绍 说明 : 1) 符号常量标识符 : 按 C 语言标识符的命名规则 为区别于一般变量, 符号常量标识符名通常采用大写字母 2) 宏定义不是 C 语句, 不必在行末加分号 如果加分号, 会把分号当作符号串的一部分 3) 宏定义中的常数表达式可以是常量和在此前已声明过的符号常量, 以及由这些常量与运算符组成的表达式 例如, #define PI #define PI2 2*PI // 定义 PI2 符号常量, 值为 2* 变量 变量是指在程序执行过程中其值可以改变的量 它们在内存中要占用一定的存储空间来存放变量的值, 变量一定有一个名字和数据类型 变量的类型是决定存储数据所用字节数和存储形式, 变量名必须是合法的标识符 其长度因 C 编译系统而异, 一般 C 系统通常允许变量名长达 32 个字符 变量的变量名和变量值是不同的概念, 如图 2-8 所示 变量名是变量的名字, 一旦被定义, 便在内存中占有一定的存储空间, 变量值是存放在该变量存储空间中的图 2-8 变量名与变量值的区别值, 会随着为变量重新赋值而改变

41 第 2 章数据类型与常用库函数 变量的定义 C 语言中的所有变量必须先定义后使用, 如果在程序中使用没有定义的变量, 编译中会出现错误信息 定义变量的一般形式是 : 类型标识符变量名列表 ; 这里的 类型标识符 必须是有效的 C 数据类型 ( 参见 2.1 节 ), 变量列表可以由一个或多个由逗号分隔的变量名构成 例如, char ch; int i,j; long k,n,m; float x,y,z; double sum,t; // 定义 ch 为字符型变量 // 定义 i,j 为基本整型变量 // 定义 k,n,m 为长整型变量 // 定义 x,y,z 单精度实型变量 // 定义 sum,t 双精度实型变量 说明 : 1) 程序中如果定义了一个变量, 执行该变量定义语句后, 就会在内存中分配一块与该类型相适应的存储空间 2) 不同数据类型的变量在计算机内存中所占字节数不同 存放形式不同, 并且参与 的运算也不同 3)C 语言程序中的变量定义常常放在函数体的最前面部分 变量的赋初值 C 语言中, 当定义一个变量后, 系统只是按定义的数据类型分配其相应的存储空间, 并不对其空间初始化, 如果在赋初值之前直接使用该变量, 则是一个不确定的值 例如, void main() { int k; k++; printf("k=%d\n",k); } 程序运行, 输出 k 的值就是一个无意义的不定值, 并在不同系统环境下运行的结果也可能完全不同 C 语言程序中有多种方法对变量赋初值, 以便使用变量 在定义时赋予初值的方法, 称为变量初始化, 一般形式为 : 例如, 类型说明符变量 1= 值 1, 变量 2= 值 2, ; int a=5,b=5,c=5; //a,b,c 为整型变量, 初始值都为 5 float x=3.2,y=0.75; //x,y 为浮点型变量, 初始值分别为 3.2,0.75 char ch1='k',ch2='p'; //ch1,ch2 为字符型变量, 初始值分别为 'K','P'

42 30 C 语言程序设计 ( 第二版 ) 注意 : 在说明中不允许连续赋值, 例如, 上面变量 a,b,c 的初值初始化为 5, 就 不能写成 :int a=b=c=5;( 是不合法的 ) 当然, 也可在变量定义后, 使用赋值语句初始化, 例如, int a,b,c; a=5;b=5;c=5; // 也可使用赋值语句 :a=b=c=5; 注意 : 定义时初始化和使用赋值语句初始化的区别 前者是在程序编译时进行的, 占用编译时间 ; 后者是在程序执行时进行的, 占用执行时间 2.4 指针变量 指针变量是专门用来存放变量所在内存地址的变量 利用指针变量可以表示各种数据结构, 方便使用数组和字符串, 也能像汇编语言一样处理内存地址, 从而编出精练而高效的程序 地址与指针的概念程序中的变量在运行时要占用内存单元, 用来存放变量的内容 内存单元按顺序编号, 称为 内存地址 通过内存单元的编号即可准确地找到该内存单元 正如学生宿舍楼被划分成许多大小相同的宿舍, 里面住着不同的学生, 为了能够快速找到相应的宿舍, 每间宿舍都有一个编号 同样为了便于管理, 内存空间也被划分成若干个大小相同 (1 个字节 ) 的存储单元, 里面存放着各种数据, 每一个存储单元也有一个编号, 这个编号被称为地址 在 C 语言中将内存单元的地址称为指针 内存单元的地址和内存单元的内容是两个不同的概念, 如同宿舍的编号和宿舍所住的学生是不同的 内存单元的地址即为指针, 即变量的地址就是变量的指针 变量的存储与访问如果在程序中定义了一个变量, 在编译时系统根据定义的变量类型, 分配一定大小的存储空间 例如, 标准 C 系统对整型变量分配两个字节, 对实型变量分配 4 个字节, 字符型变量分配 1 个字节 例如, 有定义 int x,y,z; 假设编译该语句时系统分配 2000 和 2001 两个字节给变量 x,2002 和 2003 两个字节给 y,2004 和 2005 两个字节给 z 在内存中已经没有 x,y, z 这些变量名了, 事实上, 变量与内存的地址对应起来, 对变量值的存取都是通过地址进行的, 如图 2-9 所示 例如, 执行语句 scanf("%d",&x); 就把从键盘输入的值送到地址为 2000 开始的两个存储单元中 执行 printf("%d",x); 语句时, 根据变量名与地址的对应关系, 找到变量 x 的地址 2000, 然后由 2000 开始的两个字节中取出数据 ( 即变量的值 3), 把它输出

43 第 2 章数据类型与常用库函数 31 图 2-9 变量的存储与访问 因此, 对内存数据的存取有两种方法 : 直接存取和间接存取 (1) 直接存取 所谓直接存取, 是指在程序执行过程中需要存取变量值时, 直接存取变量所占内存 单元中的内容 (2) 间接存取 所谓间接存取, 是指为了要存取一个变量值, 首先从存放变量地址的指针变量中取 得该变量的存储地址, 然后再从该地址中存取该变量值 指针变量的定义 指针变量定义的一般形式 : 类型符 * 标识符 ; 说明 : 1) * 直接修饰的 标识符 是指针变量 例如, int *p,x; //p 是指针变量,x 是整型变量 2) 指针所指对象的类型称为指针的基准类型 例如, int *p1; char *p2; //p1 的基准类型为整型, 即 p1 所指向对象的类型是整型 //p2 的基准类型为字符型, 即 p2 所指向对象的类型是字符型 3) 指针变量只能指向类型与其基准类型相同的变量 例如, int x,*p1= &x; char y, *p2=&y; 在以上两句中,p1 可以指向 x, 但不能指向 y;p2 可以指向 y, 但不能指向 x

44 32 C 语言程序设计 ( 第二版 ) 注意 : 既然指针变量的内容都是某个地址, 为什么还要对其规定不同的基类型? 这个问题仍然与上一节所讨论的变量的存储与访问过程有关 不同类型的变量所占据的存储空间大小不尽相同, 而变量的地址仅仅是其存储空间的起始地址, 系统需要综合变量地址和变量类型两方面的信息才能正确访问变量的整个存储空间 指针变量的初始化 指针变量的正确使用方法应为 先定义, 再初始化, 然后引用 初始化指针变量的方法主要有以下 3 种 1) 将某个已经定义过的数据类型与指针变量基类型相同的变量地址赋值给指针变量 例如, int a,*p; p=&a; // 此处两语句可合并写成 :int a,*p=&a; 2) 将某个已经初始化过的基类型相同的指针变量赋值给指针变量 例如, int a, *p1,*p2=&a; p1=p2; // 将 p2 赋值给 p1, 即让 p1 也指向 p2 所指向的变量 3) 使用 malloc 函数或 calloc 函数, 给它们分配一个自由的内存空间地址 关于它们的使用将在本书 节中介绍 指针变量的访问 一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针 本书约定 : 指针 是指地址, 是常量 ; 指针变量 是指取值为地址的变量 ; 定义指针的目的是为了通过指针去访问内存单元 例如, int a=5,*p=&a; 定义语句的意义是定义变量 a, 并赋值 5, 定义指针变量 p, 并把 a 的地址赋值给 p, 即让指针变量 p 指向变量 a, 如图 2-10 图 2-10 指针示意图所示 通过指针变量访问它所指向变量的格式为 : * 指针变量 指针运算符 * 是一个单目运算符, 它需要一个指针变量作为运算量 例如,*p 表示指针变量 p 所指向的变量 通常把 * 指针变量 称为取内容运算 通过指针变量 p 访问变量 x, 例如, 给变量 x 赋值为 10, 可使用 *p=10 等价于 x=10, 要打印输出该变量的值可使用语句 printf("%d",*p); 例 2-5 通过指针变量间接访问另一个变量 #include <stdio.h> void main() { int a,b,*p1,*p2; a=5;

45 第 2 章数据类型与常用库函数 33 } b=8; p1=&a; p2=&b; printf("a=%d,b=%d\n",*p1,*p2); *p1=*p1+*p2; // 相当于 a=a+b; printf("a+b=%d\n",*p1); // 相当于 printf("a+b=%d\n",a); 程序运行结果如下 a=5,b=8 a+b=13 注意 : 程序中多处出现 *p1 和 *p2, 在定义语句中其含义为定义两个能够指向整型变量的指针变量 p1 和 p2, 而在其他地方的含义则是其所指向的变量 a 和 b 2.5 标准输入 / 输出函数用法 程序运行时, 常常需要将数据通过键盘输入或从磁盘数据文件读入计算机中, 以便程序进行处理 程序处理后的数据结果, 需要输出到计算机屏幕或磁盘文件中, 以便用户分析使用这些数据 因此, 数据的输入 / 输出是程序设计时必须考虑的 程序设计中的数据输入 / 输出是相对计算机内存的,C 语言程序的数据输入 / 输出处理如图 2-11 所示 在 C 语言中, 没有专门的输入 / 输出语句, 所有的输入 / 输出操作都是通过对标准 I/O 库函数的调用实现 最常用的输入 / 输出函数有 scanf( ) printf( ) getchar( ) 和 putchar( ) 等 在使用 C 语言库函数时, 要用预编译命令 #include, 将有关 头文件 包括到源文件中 使用标准输入 / 输出库函数时要用到 stdio.h 文件, 因此源文件开头应有以下预编译命令 :#include <stdio.h> 或 #include "stdio.h" 图 2-11 C 语言程序数据输入 / 输出 格式化输出函数 printf( ) printf 函数是一个标准库函数, 它的函数原型在头文件 stdio.h 中 一般形式为 : printf(" 格式字符串 ", 输出项列表 );

46 34 C 语言程序设计 ( 第二版 ) 功能 : 向计算机屏幕按 格式控制符 规定的格式输出指定的 输出项列表 中各值 例如, 图 2-12 所示是输出变量 x 值的简单例子 图 2-12 格式输出函数 printf( ) 说明 : 格式字符串 是用双引号括起来的字符串, 也称 转换控制字符串 它包 括两种信息 : 格式说明, 由 % 和格式字符组成, 如 %d %f 等, 作用是将输出的数 据转换为指定的格式输出 ; 普通字符, 即需要原样输出的字符 1. 格式说明 格式控制符的一般形式为 : %[ 标志 ][ 输出最小宽度 ][. 精度 ][ 长度 ] 格式字符 其中, 方括号 [ ] 中的项为可选项 (1) 格式字符格式字符规定了对应输出项的输出格式, 常用格式字符如表 2-4 所示 ( 设有变量定义 :int a=65;float x= ;) 表 2-4 输出格式字符 格式字符意义举例输出结果 d, i 按十进制整数输出 printf("%d",a) 65 o 按八进制整数输出 printf("%o",a) 101 x 或 X 按十六进制整数输出 printf("%x",a) 41 u 按无符号整数输出 printf("%u",a) 65 c 按字符型输出 printf("%c",a) A s 按字符串输出 printf("%s","abc") abc f 按浮点型小数输出 printf("%f",x) e 或 E 按科学计数法输出 printf("%e",x) e+00 g 或 G 按 e 和 f 格式中较短的一种输出 printf("%g",x) (2) 最小宽度与精度修饰符用于确定数据输出的宽度 精度 小数位数, 当没有修饰符时, 以上各项按系统缺省数据实际宽度输出, 当数据实际宽度大于给定的宽度, 系统也按实际宽度输出 表 2-5 列出了数据宽度及精度修饰符

47 第 2 章数据类型与常用库函数 35 表 2-5 字段宽度修饰符 修饰符 格式 说明意义 m %md 以宽度 m 输出整型数, 不足 m 时, 左补空格 0m %0md 以宽度 m 输出整型数, 不足 m 时, 左补零 m.n %m.nf 以宽度 m 输出实型小数, 小数位为 n 位.n %.nf n 为输出数据小数位数, 整数部分按实际宽度输出 例 2-6 数据输出的最小宽度与精度修饰符示例 void main() { int a=123; float x= ; printf("%05d, %5.2f\n",a,x); printf("%2d, %2.1f\n",a,x); } 程序运行结果如下 00123, ,12.3 可以看出, 当指定宽度小于数据的实际宽度时, 对整数, 按该数的实际宽度输出 ; 对浮点数, 相应小数位的数四舍五入 例如, 按 %5.2f 输出, 输出 若指定宽度小于等于浮点数整数部分的宽度, 则该浮点数整数部分按实际位数输出, 但小数位数仍遵守宽度修饰符给出的值 例如, 上面的 按 %2.1f 输出, 结果为 :12.3 (3) 长度修饰符 (l/h) 长度修饰符 l 和 h 与输出格式字符 d u f 等连用, 用于输出长整型 (long) 短整型 (short) 无符号整型 (unsigned) 和双精度 (double) 类型数据, 如表 2-6 所示 表 2-6 长度修饰符 修饰符格式说明 h %hd, %hu 输出 short int 型 unsigned int 类型数据 l %ld, %lu %lf, %le, %lg 输出 long int 型 unsigned long 类型数据 输出 double 类型数据 (4) 标志字符标志字符有 - + # 和空格 4 种, 其作用如表 2-7 所示 表 2-7 标志字符的作用 标志字符说明 - + # 空格 结果左对齐, 右边填空格输出符号 ( 正号或负号 ), 输出值为正时冠以正号, 为负时冠以负号对 c s d u 类无影响 ; 对 o 类, 在输出时加前缀 0, 对 x 类, 在输出时加前缀 0x; 对 e g f 类, 当结果有小数时才给出小数点输出数据将加一个空格

48 36 C 语言程序设计 ( 第二版 ) 例 2-7 格式修饰符示例 void main() { int i=123; float a= ; printf("%6d%10.4f\n",i,a); printf("%-6d%+10.4f\n",i,a); printf("%6d%-10.4f\n",i,a); printf("%#o,%o\n",i,i); printf("%#x,%x\n",i,i); } 程序运行结果如下 ,173 0x7b,7b 读者对照表 3-4 和程序, 分析理解上面的输出结果 例 2-8 浮点数精度控制示例 void main() { float f= ; double d= ; printf("\n%f,%f,%10.2f\n",f,d,f); printf("%-10.2f,%010.2lf, %.15lf\n",f,d,d); } 程序运行结果如下 , , , , 说明 :%f 按系统规定的格式输出, 即整常数部分全部输出, 小数部分取 6 位 在一般系统下, 单精度实数的有效位数为 7 位 ( 即不包括小数点在内的前 7 位准确无误, 超出部分, 虽也打印出来, 但无意义 ); 双精度实数的有效位数为 15 位 %010.2lf 是指当输出实际长度小于指定宽度 10 时, 以 0 填充 2. 普通字符 在格式字符串中可以包含其他非格式字符的普通字符 : 可打印字符和转义字符 可打印字符主要是一些说明字符, 这些字符按原样显示在屏幕上, 如果有汉字系统支持, 也可以输出汉字 转义字符通常是不可打印的字符, 它们其实是一些控制字符, 控制产生特殊的输出效果, 常用的有 '\t' '\n' 其中,'\t' 为水平制表符, 作用是跳到下一个水平制表位, 在各个机器中, 水平制表位的宽度是不一样的, 这里设为 8 个字符宽度, 那么 '\t' 跳到下一个 8 的倍数的列上 '\n' 为回车换行符, 遇到 '\n', 显示自动换到新的一行

49 第 2 章数据类型与常用库函数 37 在 C 语言中, 如果要输出 %, 则在控制字符中用两个 % 表示, 即 %% 例 2-9 格式输出中普通字符示例 #include <stdio.h> void main() { int i=123; long n=456; float a= ,y=20.5; printf("i=%4d\ta=%7.4f\n\tn=%lu\n",i,a,n); printf("y=%5.2f%%\n",y); } 程序运行结果如下 i=123 a= n=456 y=20.50% 请读者分析程序中格式字符与非格式字符在程序中的作用 格式化输入函数 scanf( ) scanf 函数是一个标准库函数, 它的函数原型在头文件 stdio.h 中 一般形式是 : scanf(" 格式字符串 ", 输入项的地址列表 ); 功能 : 按用户指定的格式从键盘上把数据输入到指定地址的内存单元之中 格式字符串规定数据的输入格式, 必须用双引号括起, 其内容由格式说明和普通字符两部分组成 输入项地址列表则由一个或多个变量地址组成, 各变量地址之间用逗号, 分隔, 地址一般由地址运算符 & 和变量名组成的 : 例如, & 变量名 int a,b; scanf("%d%d", &a,&b); 控制字符串由两个部分组成 : 格式说明和普通字符 1. 格式字符串 // &a,&b 分别表示变量 a 和变量 b 的地址 格式字符串规定了输入项中的变量以何种类型的数据格式被输入, 其一般形式是 : %[< 修饰符 >]< 格式字符 > 格式字符及其意义如表 2-8 所示 ( 设有变量定义 :int a;float x;char ch,*ps;)

50 38 C 语言程序设计 ( 第二版 ) 表 2-8 输入格式字符 修饰符 意义 举例 输入形式 d,i 输入一个十进制整数 scanf("%d",&a) 15 o 或 O 输入一个八进制整数 scanf("%o",&a) 015 x 或 X 输入一个十六进制整数 scanf("%x",&a) 0x15 F 输入一个小数形式的浮点数 scanf("%f",&x) e,e,g,g 输入一个指数形式的浮点数 scanf("%e",&x) 3.568e+3 c 输入一个字符 scanf("%c",&ch) A s 输入一个字符串 scanf("%s",ps) ABCD 修饰符是可选的, 包括宽度 m 长度修饰符(h/l) 及 * 字符, 它们的意义如表 2-9 所示 表 2-9 scanf( ) 的修饰符的作用 修饰符 格式举例 说明 h %hd, %hu 输入 short int 型 unsigned int 类型数据 l %ld, %lu,%o,%x %lf, %le, %lg 输入 long int 型 unsigned long 类型数据 输入 double 类型数据 m %md, %mu 指定输入数据所占宽度 ( 字符数 ),m 应为正整数 * %*d 表示对应的输入数据在读入后不赋值给相应的变量 例 2-10 数据输入示例 #include <stdio.h> void main() { int i,j; long n,m; float a,b; double x,y; scanf("%d%*d%d",&i,&j); // 输入 i,j, 注意此处有 * 字符 scanf("%ld%d",&n,&m); // 注意, 此处对应 m 的输入控制符没加长度修饰符 l scanf("%f%f",&a,&b); scanf("%lf%f",&x,&y); // 注意, 此处对应 y 的输入控制符没加长度修饰符 l printf("i=%d,j=%d\n",i,j); printf("n=%ld,m=%ld\n",n,m); printf("a=%f,b=%.10f\n",a,b); printf("x=%lf\ny=%.10lf\n",x,y); } 程序运行结果如下 3 5 6< 回车 > < 回车 > < 回车 > < 回车 >

51 第 2 章数据类型与常用库函数 39 i=3,j=6 n=123,m=456 a= ,b= x= y= 上面的运行结果中, 前 4 行是用户输入的数据, 后 4 行为程序的输出结果, 通过分析可以看到 : 1) 第 1 行输入了 个数据, 其中 %*d 对应的 5 被跳过, 所以变量 j 得到的值是 6 2) 由于与长整型变量 m 和双精度变量 y 对应的格式控制符没有加长度修饰符 l, 输入的值存入对应的变量, 所以输出的 m 和 y 的值有可能是错误的 2. 普通字符 格式普通字符可以是空格 转义字符和可打印的非格式字符 (1) 空格在有多个输入项时, 一般用空格或回车作为分隔符, 若以空格作分隔符, 则当输入项中包含字符类型时, 可能产生非预期的结果, 例如, scanf("%d%c",&a,&ch); 输入 :32 q< 回车 >, 期望 a=32,ch='q', 但实际上, 分隔符空格被读入并赋给 ch 为避免这种情况, 可使用如下语句 scanf("%d %c",&a,&ch); 此处 %d 后的空格, 就可跳过字符 q 前的所有空格, 保证非空格数据的正确录入 (2) 转义字符 :\n \t 输入格式符最好不使用转义, 因为不同编译系统对转义字符处理不同, 容易造成数 据输入出错 (3) 可打印的非格式字符在格式字符串中若包含除格式说明以外的其他字符, 则在输入数据时, 这些字符必 须与数据一并输入, 否则变量就得不到期待的数据 例如, scanf("%d,%d,%c",&a,&b,&ch); 数据输入应为 :1,2,q< 回车 > 如果输入为 1 2 q, 除 a=1 正确赋值外, 对 b 与 ch 的赋值都不能正确赋值 也就是说, 这些不打印字符应是输入数据分隔符,scanf 在读入时自动去除与可打印字符相同的字符 又如, scanf("a=%d,b=%d",&a,&b); 若给 a 输入 1,b 输入 2, 则数据输入应为 :a=1,b=2

52 40 C 语言程序设计 ( 第二版 ) 3. 关于 scanf 函数的几点说明 1)scanf 函数中没有精度控制, 但可以指定数据的宽度 例如, 又如, scanf("%5.2f",&a); // 错误, 不能用此语句输入小数为 2 位的实数 scanf("%2d%3f%4f",&a,&b,&c); 如果输入 : < 回车 > 由于 %2d 只要求读入 2 个数字字符, 因此把 12 读入送给变量 a,%3f 要求读入 3 个字符可以是数字 正负号或小数点, 把 345 读入送给 b, 又按 %4f 读入 6789 送给 c 2) 在输入多个数值数据时, 若格式控制串中没有非格式字符作输入数据之间的间隔, 可用空格 TAB 或回车作间隔 C 执行时碰到空格 TAB 回车或非法数据 ( 如对 %d 输入 12A 时,A 即为非法数据 ) 时即认为该数据结束 3) 在输入字符数据时, 若格式控制串中无非格式字符, 则认为所有输入的字符均为有效字符 例如, 有下面的程序 #include <stdio.h> void main() { char a,b,c; scanf("%c%c%c",&a,&b,&c); printf("a=%d,b=%d,c=%d\n",a,b,c); } // 输出字符的 ASCII 码值 若输入为 :d e f < 回车 >, 则输出结果 :a=100,b=32,c=101 可以看出实际输入情况是 : 把 'd' 赋予 a, 空格赋予 b,'e' 赋予 c 若输入改为 :def < 回车 >, 则输出结果 :a=100,b=101,c=102 可以看出实际输入情况是 : 把 'd' 赋予 a,'e' 赋予 b,'f' 赋予 c 若想输入改为 :d < 回车 > e < 回车 > f < 回车 > (f 输不进去 ) 程序输出结果是 :a=100,b=10,c=101 可以看出实际输入情况是: 把 'd' 赋予 a, 换行符 (ASCII 码 10) 赋予 b,'e' 赋予 c 字符数据非格式输入 / 输出函数 字符输入 / 输出函数的原型声明在头文件 stdio.h 中 1. 字符输出函数 putchar( ) 字符输出函数的格式 : putchar(ch);

53 第 2 章数据类型与常用库函数 41 该函数的功能是向显示器终端输出一个字符 其中,ch 可以是一个字符变量或常量, 也可以是一个转义字符 说明 : 1)putchar( ) 函数只能用于单个字符的输出, 且一次只能输出一个字符 2) 从功能角度来看,printf( ) 函数可以完全代替 putchar( ) 函数, 其等价形式 : printf("%c",ch) 例 2-11 输出字符的程序 #include <stdio.h> void main() { char x,y,z,ch; x='b'; y='y';z='e';ch=007; putchar(x); putchar(y);putchar(z); // 输出 3 个字符 putchar(007); // 响铃一声 putchar(ch); // 响铃一声 } 程序运行结果如下 BYE( 响铃两声 ) 2. 字符输入函数 getchar( ) getchar( ) 函数的格式 : getchar(); getchar( ) 函数的作用 : 从系统的输入设备键盘输入一个字符 从功能角度来看,scanf( ) 函数可以完全代替 getchar( ) 函数 例如, 有定义 char c1;, 则 c1=getchar( ); 可使用等价语句 scanf("%c",&c1); 说明 : 1)getchar( ) 函数一次只能返回一个字符, 即调用一次只能输入一个字符 2) 程序第一次执行 getchar( ) 函数时, 系统暂停等待用户输入, 直到按 Enter 键结束 如果用户输入了多个字符, 则该函数只取第一个字符, 多余的字符 ( 包括换行符 '\n') 存 放在键盘缓冲区中, 如果程序再一次执行 getchar( ) 函数, 则程序就直接从键盘缓冲区读入, 直到读完后, 如果还有 getchar( ) 函数才会暂停, 再次等待用户输入 例 2-12 输入一个字符, 回显该字符并输出其 ASCII 码值 #include <stdio.h> void main() { char ch1,ch2; ch1=getchar(); ch2=getchar(); putchar(ch1); putchar(ch2); printf("%c\n%c",ch1,ch2); }

54 42 C 语言程序设计 ( 第二版 ) 以上程序运行后, 若 ch1 ch2 分别得到字符 A B, 应输入 AB< 回车 >, 如果输入 A< 回车 >, 则实际上 ch1 被赋值为字符 A,ch2 被赋值为字符换行符 '\n'(ascii 值为 10) 注意 : 在程序设计中, 要根据情况选择合适的输入 / 输出函数, 使用字符输入 / 输出函数时, 通常会考虑配对的使用 2.6 常用库函数 C 语言是函数语言, 程序的基本单位是函数, 用户编写程序其实就是编写一定功能函数 C 语言提供了丰富的内部函数, 又叫做库函数, 也称标准函数 标准 C 语言编译系统提供了上百种库函数 ( 见附录 C) 用户编写的程序( 函数 ) 可直接调用系统提供的库函数 由于库函数的原型说明是放在文件名后缀为.h 的 头文件 中声明的, 因此要调用 C 语言内部函数, 一般需要使用 #include 命令将相应的头文件包含到程序中 其格式是 : #include " 头文件 " 或 #include < 头文件 > 有关该命令的详细使用, 请参见 第 7 章编译预处理, 库函数的原型说明通常集中在下面几个头文件中 <stdio.h> 中声明了 C 语言中大部分关于输入 / 输出操作的函数 <math.h> 中声明的库函数用来处理相关的数学问题, 这些数学函数大部分是作用于浮点数类型的数据, 其所支持的功能包括三角函数数值运算 指数对数运算 绝对值以及一些基本的数值处理 <stdlib.h> 中声明了许多相当基本的函数, 让 C 语言的使用者仅仅使用标准函数库就能实现强大的功能, 其中涉及数据类型转换 内存操作 随机数处理 排序和程序流程控制等方方面面的内容 <string.h> 中声明了对字符串的各种处理函数 <ctype.h> 中声明了对字符的相关处理函数 <graphics.h> 中声明了与在图形界面作图有关的处理函数 在附录 C 中列出了标准 C 系统常用的库函数, 程序中只要给出函数名和它要求的参数, 就可方便地调用它们, 来求得相应函数值或完成相应的操作 函数的使用方法如下 函数名 ([ 参数列表 ]) 说明 : 1) 使用库函数要注意参数的个数及其参数的数据类型 2) 要注意函数的定义域 ( 自变量或参数的取值范围 ) 例如,sqrt(x) 要求 :x>=0 3) 要注意函数的值域 例如,exp(23773) 的值超出了实数在计算机中的表示范围,

55 第 2 章数据类型与常用库函数 43 即数据溢出 下面介绍一些最常用的函数, 更多的库函数, 请读者参阅附录 C 1. 数学函数 使用数学函数要在程序文件头部使用 :#include <math.h> (1) 取绝对值函数 abs( ) fabs( ) abs(x): 返回整数 x 的绝对值 fabs(x): 返回浮点数的绝对值 注意 : 函数 abs( ) 是在头文件 stdlib.h 说明, 所以在文件头部使用 :#include "stdlib.h" (2)exp( ) exp(x): 返回 e 的指定次幂, 即求 e x (3) 对数函数 log( ) log10( ) log(x): 返回 x 的自然对数, 即求 lnx log10(x): 返回以 10 为底的对数, 即求 log 10 x (4) 平方根函数 sqrt( ) sqrt(x): 返回 x 的平方根, 如 sqrt(25) 的值为 5,sqrt(2) 的值为 此函数要求 x>0, 如果 x<0 则出错 (5) 幂次函数 pow( ) y pow(x,y): 返回 x 的 y 次方的值, 即求 x (6) 三角函数 sin( ) cos( ) tan( ) sin(x) cos(x) tan(x) 的自变量 x 必须是弧度 例如, 数学式 sin30,c 的表达式写作为 :sin(30*3.14/180) 2. 随机函数 使用随机函数要在程序文件头部使用 :#include <stdlib.h> (1) 随机函数 rand(void) rand( ): 函数返回 0~32767 的随机整数 该函数不要参数, 其括号不能省略 若要 产生 1~100 的随机整数, 则可通过表达式 rand( )%100; 来实现 例 2-13 下段程序每次运行, 将产生 10 个 [1,100] 之间的随机整数 #include <stdio.h> #include <stdlib.h> void main() { int i; for(i=1;i<=10;i++) printf("random number #%d: %d \n",i,rand()%100+1); } (2) 初始化随机数发生器 srand srand(unsigned seed): 初始化 C 系统的随机函数发生器, 可使 rand( ) 产生不同序列的随机数

56 44 C 语言程序设计 ( 第二版 ) 3. 字符函数使用字符函数要在程序文件头部使用 :#include <ctype.h> (1) 判断字符函数 isalpha( ) isalnum( ) isdigit( ) isalpha(ch): 判断 ch 是否是字母, 是返回 1, 不是返回 0 isalnum(ch):ch 是否是字母或数字, 是返回 1, 不是返回 0 isdigit(ch):ch 是否是数字字符 (0~9), 是返回 1, 不是返回 0 (2) 字符大小写转换函数 tolower( ) toupper( ) tolower(ch): 若 ch 是大写字母则转换成小写字母, 否则不变 toupper(ch): 若 ch 是小写字母则转换成大写字母, 否则不变 C 语言的函数非常多, 这里仅仅介绍最基本的函数, 初学者不必为一时掌握不了它们的功能及使用方法而着急, 在以后的章节中我们还会介绍更多的函数 使用得多了, 自然而然就会掌握它们的用法 读者也可通过查阅相关资料来了解更多函数的使用 小 结 本章学习的数据类型 常量 变量 标准输入 / 输出函数是 C 语言程序设计的基础, 在程序设计中要正确使用数据类型和库函数 C 语言中提供的数据类型有 4 大类 : 基本类型 构造类型 指针类型和空类型 在编写程序时, 常常需要用到不同的数据 数据有类型之分, 不同类型的数据在计算机中的存放形式不同, 使用的内存空间不同, 参与的运算也不同 初学者很难理解这一点, 写程序时常常将数据类型用错 例如, 要计算 S=1+1/2+1/3+1/4+ +1/100 如果 S 定义为整型数据, 则不能得到正确的结果 C 语言中的变量是某个内存空间的标识, 它通常有 3 个基本要素 :C 合法的变量名, 变量的数据类型和变量的数值 ; 在变量使用之前, 必须先对它进行定义, 否则将出错 C 编译系统根据声明变量的类型给变量分配内存空间 C 语言输入 / 输出功能是通过调用系统函数完成的, 程序中通常在最前面使用头包含 #include <stdio.h> 习 题 一 判断题 1. 执行 int x=3,y=4; float z;z=x/y; 后,z 的值为 0.75 ( ) 2. 字符常量 A 与字符串常量 A 所占用的存储单元大小不同 ( ) 3. 已知一个字符在内存中占 1 个字节, 字符串 Program 在内存中占 7 个字节 ( )

57 第 2 章数据类型与常用库函数 用户自定义标识符可以和 C 语言库函数同名 ( ) 5. 不同类型的变量在内存中占用存储空间的大小都是一样的 ( ) 6.printf 函数中的格式符 %c 只能用于输出字符类型数据 ( ) 7. 按格式符 %d 输出 float 类型变量时, 截断小数位取整后输出 ( ) 8. 按格式符 %6.3f 输出 i (i=123.45) 时, 输出结果为 ( ) 9.scanf 函数中的格式符 %d 不能用于输入实型数据 ( ) 10. 格式符 %f 不能用于输入 double 类型数据 ( ) 11. 当格式符中指定宽度时, 从缓冲区中读入的字符数完全取决于所指定的宽度 ( ) 12. 执行语句 printf("%s","hello\0world!"); 后的输出结果是 Hello World! ( ) 二 填空题 1.printf(" 格式字符串 ", 输出项列表 ) 函数中的 格式控符串 包括两种信息 : 2.scanf(" 格式字符串 ", 地址列表 ) 函数中的 地址列表 给出各变量的地址 地址是由 后跟变量名组成的 3. 函数只能接受单个字符, 输入多于 1 个字符时, 只接收第 1 个字符 4. 若有定义 int d=27;, 函数 printf("%-5d,%-5o,%-5x\n", d, d, d) 的输出结果是 5. 若有定义 float x1=13.24, x2=-78.32;, 函数 printf("x(%d)=%.2f x(%d)=%.2f\n", 1, x1, 2, x2) 的输出结果是 6. 若有定义 int a,b;char ch;, 执行输入语句 scanf("%d%c%d",&a,&ch,&b);, 要使用变量 a=5,b=6,ch='+', 则输入数据应为 三 选择题 1. E2 是 ( ) A. 值为 100 的实型常数 B. 值为 100 的整型常数 C. 不合法的标识符 D. 合法的标识符 2. 以下选项中不正确的实型常量是 ( ) A.0.23E5 B.2.3e-1 C.1E3.2 D.2.3e0 3. 以下数据中, 不正确的数值或字符常量是 ( ) A.011 B.3.987E-2 C.018 D.0xabcd 4. 以下字符中, 不正确的 C 语言转义字符是 ( ) A.' \t' B.' \011' C.' \n' D.' \018' 5. 下列语句定义 x 为指向 int 类型变量 a 的指针, 其中 ( ) 是正确的 A.int a, *x=a; B.int a, *x=&a; C.int *x=&a, a; D.int a, x=a;

58 46 C 语言程序设计 ( 第二版 ) 四 程序阅读题 1. 写出下面程序的运行结果 #include "stdio.h" void main() { float p= ; printf("p=%.2f\n",p); printf("p=%.4f\n",p); printf("p=%10.2f\n",p); printf("p=%10.4f\n",p); printf("p=%-10.2f\n",p); printf("p=%-10.4f\n",p); } 2. 写出下面程序的运行结果 #include <stdio.h> main() { int a=15; float b= ; char c='a'; printf("a=%d,%5d\n",a,a); printf("b=%f,%5.4f\n",b,b); printf("c=%c,%d,%o,%x\n",c,c,c,c); printf("%s\n","computer"); } 3. 运行下面的程序, 分别输入下面 3 组数据, 分别会得到什么样的结果? #include "stdio.h" void main() { char ch; ch=getchar(); putchar(ch); printf("----ascii:%d",ch); } 第 1 组数据 :a< 回车 > 第 2 组数据 :ab< 回车 > 第 3 组数据 :abc< 回车 >

59 第 3 章运算符与表达式 学习要求 掌握各种运算符的使用, 理解运算符的优先级 结合性和要求运算的对象数目掌握各类表达式的书写及其表达式的正确使用理解隐式数据类型转换和强制数据类型转换 3.1 运算符概述 C 语言程序中所有的运算都是在表达式中完成的 表达式是由运算符将各种类型的变量 常量 函数等运算对象按一定的语法规则连接成的式子, 它描述了一个具体的求值运算过程 C 语言运算符分类 C 语言中具有十分丰富的运算符, 这也是 C 语言的主要特点之一 C 语言的运算符可分为 10 大类, 如表 3-1 所示 表 3-1 C 语言的运算符分类 运算符类型运算符及含义说明 算术运算符 关系运算符 加 (+) 减 (-) 乘 (*) 除 (/) 求余 ( 或称模运算,%) 自增 (++) 自减 (--) 用于各类数值运算 大于 (>) 小于(<) 等于(==) 大于等于(>=) 小于等于(<=) 用于比较运算不等于 (!=) 逻辑运算符逻辑与 (&&) 或 ( ) 非 (!) 用于逻辑运算 位运算符位与 (&) 位或 ( ) 位非 (~) 位异或 (^) 左移 (<<) 右移 (>>) 参与运算的量, 按二进制位进行运算 简单赋值 (=) 赋值运算符 复合算术赋值 (+=, - =,*=,/=,%=) 复合位运算赋值 (&=, =,^=,>>=,<<=) 用于赋值运算 条件运算符条件求值 (? :) 三目运算符, 用于条件求值 逗号运算符, 用于把若干表达式组合成一个表达式 指针运算符取内容 (*) 取地址 (&) 用于取内容和取地址 字节数运算符 sizeof( ) 用于计算数据类型所占的字节数 特殊运算符括号 ( ), 下标 [ ], 成员 (->,.) 用于改变运算顺序 获得构造类中的成员

60 48 C 语言程序设计 ( 第二版 ) 运算符的优先级和结合性 C 语言的运算符具有不同的优先级 所谓优先级, 就是在一个表达式中有各种不同 的运算, 在计算表达式时, 各运算执行的先后顺序 C 语言的运算符不仅具有不同的优先级, 而且还有不同的结合性 所谓结合性, 是指在表达式中是自左向右 ( 左结合性 ) 进行运算, 还是自右向左 ( 右结合性 ) 进行运算 在表达式中, 各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定, 还要受运算符结合性的制约 C 语言中, 运算符的运算优先级共分为 15 级,1 级最高,15 级最低 在表达式中, 优先级较高的先于优先级较低的进行运算 而在一个运算量两侧的运算符优先级相同时, 则按运算符的结合性所规定的结合方向处理 例如, 算术运算符的结合性是自左至右, 即先左后右 如有表达式 x-y+z, - 与 + 的优先级相同, 则 y 应先与 - 号结合, 执行 x-y 运算, 然后再执行 +z 的运算 这种自左至右的结合方向就称为 左结合性 而自右至左的结合方向称为 右结合性, 最典型的右结合性运算符是赋值运算符, 如 x=y=z, 由于 = 的右结合性, 应先执行 y=z 再执行 x=(y=z) 运算 C 语言运算符的优先级和结合性参见附录 B 3.2 算术运算符与算术表达式 算术运算符算术运算符要求参与运算量通常是数值类型数据, 在 C 语言中, 字符数据 ( 按其 ASCII 码 ) 可参与算术运算 各算术运算符的运算规则及优先级如表 3-2 所示 ( 设有定义 :int i=5) 表 3-2 算术运算符的运算规则及优先级运算符含义运算优先级实例结果 ++ 自增 i++ i 的值为 6 -- 自减 2 i-- i 的值为 4 - 负号 -i -5 * 乘 5*4 20 / 除 3 5/2 2 % 求余 求模 5 % 加减 说明 : 1) 当 / 被用于整数或字符时, 结果取整 例如, 在整数除法中,5/2 结果为 2,

61 第 3 章运算符与表达式 49 1/2 的结果为 0 当 / 两边只要有一边是实型数据时, 其结果就为实型数据 例如, 在 除法中,5/2.0 结果为 2.5,1.0/2 的结果为 0.5 之所以是这样的结果是因为 C 语言有类 型自动转换机制 ( 在 3.8 节介绍 ) 符号 2) 取负运算的实际效果等于用 -1 乘单个操作数, 即任何数值前放置负号将改变其 3) 求余 ( 或求模运算符 ) %, 取整数除法的余数, 其结果等于两数相除后的余数 要求参与运算的数据必须是整型数据 ( % 不能用于 float 和 double 类型 ), 余数的符号 始终与分子 ( 被除数 ) 的符号一致 例如,9%4=1;-9%4=-1;9%-4=1;-9%-4=-1 例 3-1 下面是说明 % 用法的程序 void main() { int x,y; x=10;y=3; printf("%d ",x/y); // 显示 3 printf("%d ",x%y); // 显示 1, 整数除法的余数 x=1;y=2; printf("%d,%d",x/y,x%y); // 显示 0,1 } 程序运行结果如下 3 1 0,1 4) 自增 (++) 和自减 (--) ++ 是操作数加 1, -- 是操作数减 1, 其操作数必须是变量名, 不能是常量或表达式 可有以下 4 种形式 1 ++i:i 自增 1 后再参与其他运算 2 --i:i 自减 1 后再参与其他运算 3 i++:i 参与运算后,i 的值再自增 1 4 i--:i 参与运算后,i 的值再自减 1 例 3-2 分析下面程序执行后的输出结果 void main() { int x,y; x=10;y=++x; printf("%d %d",x,y); } 程序运行结果如下 如果将程序的第 2 行改为 x=10;y=x++;, 则程序运行的输出结果如下 通过上例可以看到在这两种情况下,x 都被置为 11, 但区别在于是先参与运算, 还是先使变量自增 ( 自减 ), 特别是当它们出现在较复杂的表达式或语句中时, 则应仔细分析

FY.DOC

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

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

PowerPoint 演示文稿

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

More information

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

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

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

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

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

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

没有幻灯片标题

没有幻灯片标题 第 2 章 C 语言的基本数据类型与表达 式 2. 1 C 语言的语法基础 2. 2 C 语言的基本数据类型 2. 3 常量和变量 2. 4 运算符与表达式 2. 5 数据类型转换 用 第 2 章 C 语言的基本数据类型与表达 2.1 C 语言的语法基础 2. 1. 1 C 语言字符集 式 C 语言的基本符号可分 4 个类, 归纳如下 : (1) 英文字母 : 大小写各 26 个, 共计 52 个

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言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

新・解きながら学ぶC言語

新・解きながら学ぶC言語 330!... 67!=... 42 "... 215 " "... 6, 77, 222 #define... 114, 194 #include... 145 %... 21 %... 21 %%... 21 %f... 26 %ld... 162 %lf... 26 %lu... 162 %o... 180 %p... 248 %s... 223, 224 %u... 162 %x... 180

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

FJXBQ

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

More information

山东师大数学科学学院

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

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 程序设计语言应用

《计算概论》课程 第十九讲  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

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

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

没有幻灯片标题

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

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

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式] 指针 Pointers 变量指针与指针变量 Pointer of a variable 变量与内存 (Variables and Memory) 当你声明一个变量时, 计算机将给该变量一个内存, 可以存储变量的值 当你使用变量时, 计算机将做两步操作 : - 根据变量名查找其对应的地址 ; - 通过地址对该地址的变量内容进行读 (retrieve) 或写 (set) 变量的地址称为变量的指针! C++

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

_汪_文前新ok[3.1].doc

_汪_文前新ok[3.1].doc 普 通 高 校 本 科 计 算 机 专 业 特 色 教 材 精 选 四 川 大 学 计 算 机 学 院 国 家 示 范 性 软 件 学 院 精 品 课 程 基 金 青 年 基 金 资 助 项 目 C 语 言 程 序 设 计 (C99 版 ) 陈 良 银 游 洪 跃 李 旭 伟 主 编 李 志 蜀 唐 宁 九 李 涛 主 审 清 华 大 学 出 版 社 北 京 i 内 容 简 介 本 教 材 面 向

More information

Microsoft Word - 正文.doc

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

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

( 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

PowerPoint 演示文稿

PowerPoint 演示文稿 计算概论 A 课程程序设计部分 C++ 语言基本成分 数据成分 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 再谈, 我们的进度安排 我们的学习过程 感性理性函数指针等 数据成分运算成分控制成分数组字符串 结构化的程序递归 传统学习过程 数据类型与表达式 输入输出 关系运算 控制语句 函数数组指针结构体 作业练习 感性认识作业练习 ( 以抄程序为主 ) 正常作业练习

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语言程序设计》讲义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

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

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

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

试卷代号 :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

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

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

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

ch02_Basic

ch02_Basic 主要内容 C++ 语言概述 C++ 的发展 C++ 源程序结构与书写规范 C++ 编译器和集成开发环境 C++ 编程基础 数据的简单输入输出 2 C++ 语言概述 C++ 语言概述 C++ 的发展 - C++ 是从 C 语言发展演变而来, 可以看成是 C 的超集 - 1980 年由 Bjarne Stroustrup 开发创建 - 1983 年正式取名为 C++,1989 年开始 C++ 的标准化工作

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

Introduction to Computer Systems /18-243, spring st Lecture, Jan. 12th

Introduction to Computer Systems /18-243, spring st Lecture, Jan. 12th 计算机组成原理习题课 1 授课老师 : 王浩宇 haoyuwang@bupt.edu.cn 1 练习 : 机器数的表示和相互转化 练习 1: 当十六进制数 9B 和 FF 分别表示为原码 补码 反码 移码和无符号数时, 所对应的十进制数各为多少 ( 设机器数采用一位符号位 )? 16 进制 真值 无符号数 原码 ( 真值 ) 反码 ( 真值 ) 补码 ( 真值 ) 移码 ( 真值 ) 9BH 二进制十进制

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

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

期中考试试题讲解

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

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

Microsoft Word - YYCXfm.DOC

Microsoft Word - YYCXfm.DOC C 语言程序设计 王曙燕主编曹锰副主编 北京 内容简介 本书共 13 章, 主要内容包括 C 语言的基本概念 基本语法和基本数据结构, 另外, 给出了一个小型超市管理的综合实例, 介绍了 C 语言图形程序设计的基本方法, 还简单介绍了 C++ Visual C++ 和 C# 等面向对象程序设计语言 本书注重应用性和实践性, 通过一些典型算法的解题分析及其实现给读者一些解题示范和启发 每章后面配有习题,

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 第二讲 C++ 编程基础 主要内容 C++ 语言概述 C++ 的发展 C++ 源程序结构与书写规范 C++ 编译器和集成开发环境 C++ 编程基础 数据的简单输入输出 2 C++ 语言概述 C++ 的发展 - C++ 是从 C 语言发展演变而来, 可以看成是 C 的超集 - 1980 年由 Bjarne Stroustrup 开发创建 - 1983 年正式取名为 C++,1989 年开始 C++ 的标准化工作

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 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

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

实验 2 顺序结构程序设计 9 unsigned short a; a= 1; printf("%d\n",a); 运行以上程序, 查看输出的结果, 分析为什么会输出这些信息 (1) 打开 VC 创建 liti2 2.c 文件 (2) 输入以上代码并编译执行 (3) 结果如图 2 2 所示 图 2

实验 2 顺序结构程序设计 9 unsigned short a; a= 1; printf(%d\n,a); 运行以上程序, 查看输出的结果, 分析为什么会输出这些信息 (1) 打开 VC 创建 liti2 2.c 文件 (2) 输入以上代码并编译执行 (3) 结果如图 2 2 所示 图 2 实验 2 顺序结构程序设计 明符 一 实验目的 1. 掌握 C 语言基本数据类型 运算符和赋值语句 2. 变量的定义及初始化 整型 实型 字符型等基本类型变量的定义和初始化 3. 熟练使用赋值运算 算术运算等表达式, 能够编写简单顺序结构程序 4. 掌握 C 语言基本的输入输出 熟练使用标准输入 输出函数及各种数据类型的格式说 二 实验内容及步骤 例题 2.1 输入程序, 查看输出结果 (1) 参照第一章创建

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

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

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

计算概论A B03 C++语言的基本成分 - 运算成分(2)

计算概论A B03 C++语言的基本成分 - 运算成分(2) 计算概论 A 程序设计部分 C 语言的构成成分 运算成分 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn C 语言中的运算符 C 语言的运算符范围很宽 求字节数运算符 : sizeof 下标运算符 [ ] 赋值运算符 = 算术运算符 + - * / % 关系运算符 < > == >= > ~

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

Guava学习之Resources

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

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

第 1 章 C 语言的发展 特点与程序结构 本章主要介绍了 C 语言的发展 特点和程序结构, 重点阐述了程序设计的基本方法, 包括面向过程的程序设计和面向对象的程序设计 ; 算法的概念及其表示, 包括用自然语言 流程图 伪代码 N-S 流程图的表示方法 ; 最后介绍了 C 语言应用程序的开发过程 1

第 1 章 C 语言的发展 特点与程序结构 本章主要介绍了 C 语言的发展 特点和程序结构, 重点阐述了程序设计的基本方法, 包括面向过程的程序设计和面向对象的程序设计 ; 算法的概念及其表示, 包括用自然语言 流程图 伪代码 N-S 流程图的表示方法 ; 最后介绍了 C 语言应用程序的开发过程 1 C 语言程序设计 电子教程 主编 : 杨健霑副主编 : 汪同庆 1 第 1 章 C 语言的发展 特点与程序结构 本章主要介绍了 C 语言的发展 特点和程序结构, 重点阐述了程序设计的基本方法, 包括面向过程的程序设计和面向对象的程序设计 ; 算法的概念及其表示, 包括用自然语言 流程图 伪代码 N-S 流程图的表示方法 ; 最后介绍了 C 语言应用程序的开发过程 1.1 C 语言的发展与特点 1.1.1

More information

内容简介 本书以教育部高等学校计算机科学与技术教学指导委员会编制的 关于进一步加强高等学校计算机基础教学的意见暨计算机基础课程教学基本要求 中有关计算机程序设计基础 (C 语言 ) 课程教学基本要求为指导, 结合教育部考试中心最新的全国计算机等级考试二级 (C 语言程序设计 ) 考试大纲要求和作者多

内容简介 本书以教育部高等学校计算机科学与技术教学指导委员会编制的 关于进一步加强高等学校计算机基础教学的意见暨计算机基础课程教学基本要求 中有关计算机程序设计基础 (C 语言 ) 课程教学基本要求为指导, 结合教育部考试中心最新的全国计算机等级考试二级 (C 语言程序设计 ) 考试大纲要求和作者多 普通高等教育 十二五 重点规划教材公共课系列 中国科学院教材建设专家委员会 十二五 规划教材 C 语言程序设计 张淑华朱丽莉主编 于雪晶顾煜新副主编 北京 内容简介 本书以教育部高等学校计算机科学与技术教学指导委员会编制的 关于进一步加强高等学校计算机基础教学的意见暨计算机基础课程教学基本要求 中有关计算机程序设计基础 (C 语言 ) 课程教学基本要求为指导, 结合教育部考试中心最新的全国计算机等级考试二级

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

试卷代号 :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

内容简介 C 语言是一种结构化程序设计语言, 本书通过大量的实例讲解 C 语言程序设计的方法, 主要内容包括 C 语言程序的结构 数据类型 运算符和表达式 数据的输入和输出 选择结构 循环结构 数组 函数 指针 编译预处理 结构和共用体 位运算 文件等 每个单元包括小结 实验 习题等 本书可作为高等

内容简介 C 语言是一种结构化程序设计语言, 本书通过大量的实例讲解 C 语言程序设计的方法, 主要内容包括 C 语言程序的结构 数据类型 运算符和表达式 数据的输入和输出 选择结构 循环结构 数组 函数 指针 编译预处理 结构和共用体 位运算 文件等 每个单元包括小结 实验 习题等 本书可作为高等 普通高等教育 十二五 重点规划教材计算机系列中国科学院教材建设委员会 十二五 规划教材 C 语言程序设计 张秀萍主编闫丽王淑霞副主编 北 京 科学出版社职教技术出版中心 www.aboo 内容简介 C 语言是一种结构化程序设计语言, 本书通过大量的实例讲解 C 语言程序设计的方法, 主要内容包括 C 语言程序的结构 数据类型 运算符和表达式 数据的输入和输出 选择结构 循环结构 数组 函数 指针 编译预处理

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

Ps22Pdf

Ps22Pdf C ( CIP) C /. :, 2001. 7 21 ISBN 7-5624 -2355-5. C........ C. TP312 CIP ( 2001 ) 034496 C * * : 7871092 1 /16 : 14. 25 : 356 20017 1 20017 1 : 1 6 000 ISBN 7-5624-2355-5 / TP311 : 21. 00 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

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

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

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

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

数据结构

数据结构 信息管理与信息系统专业 第 3 章变量与表达式 任课教师 : 吕雅丽 本章内容 3.1 C# 基本数据类型 3.2 常量与变量 3.3 创建并使用枚举类型 3.4 运算符与表达式类型 3.5 运算符的优先级与结合性 2 3.1 C# 基本数据类型 3.1.1 数值类型 1. 整数类型 整数类型又有有符号整数与无符号整数 有符号整数可以带正负号, 无符号整数不需带正负号, 默认为正数 有符号整数包括

More information

Mx* Language Reference Manual 2016 年 4 月 7 日 1 用词说明 未定义 指中央还没有表态指语言定义中不涉及的部分, 编译器和运行时环境如何表现是未知的 主要是为了给学生实现语言留下足够的空间, 标准测试集里不会出现涉及未定义部分的内容 例如 : 术语 : 源程

Mx* Language Reference Manual 2016 年 4 月 7 日 1 用词说明 未定义 指中央还没有表态指语言定义中不涉及的部分, 编译器和运行时环境如何表现是未知的 主要是为了给学生实现语言留下足够的空间, 标准测试集里不会出现涉及未定义部分的内容 例如 : 术语 : 源程 Mx* Language Reference Manual 2016 年 4 月 7 日 1 用词说明 未定义 指中央还没有表态指语言定义中不涉及的部分, 编译器和运行时环境如何表现是未知的 主要是为了给学生实现语言留下足够的空间, 标准测试集里不会出现涉及未定义部分的内容 例如 : 术语 : 源程序大小超过 256M 是未定义的 解释 : 我们测试用的源程序大小不会超过 256M 2 程序结构 Mx*

More information

文件

文件 CH10 文件 1 文件的概念 一 文件分类 二 文件的组织结构 : ASCII 码文件 ( 文本文件 ) 二进制文件 文件是二进制代码的, 则文件就是字节流 文件是 ASCII 码的, 则文件就是字符流, 也是字节流 1 如 : 对于整型变量 x, 其值为 32767 若以文本方式存放, 则共有 5 个字符, 内容为 : 00110011 00110010 00110111 00110110 00110111

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

<4D F736F F F696E74202D20B5DA32D5C220B5A5C6ACBBFA433531D3EFD1D4BBF9B4A1>

<4D F736F F F696E74202D20B5DA32D5C220B5A5C6ACBBFA433531D3EFD1D4BBF9B4A1> 第 2 章 单片机 C51 语言基础 2.1 C51 语言的基本知识 2.2 运算符与表达式 2.3 指针与绝对地址访问 2.4 本章小结 2.5 实训二发光二极管流水广告灯 返回首页 教学提示 随着单片机开发技术的不断发展, 目前已有越来越多 的人从普遍使用汇编语言逐渐过渡到使用高级语言开发, 其中又以 C 语言为主, 市场上几种常见的单片机均有其 C 语言开发环境 应用于 51 系列单片机开发的

More information

高等学校计算机应用规划教材 C 语言程序设计 梁海英张红军主编 千文陈科尹孟伟东曾霖副主编 北 京

高等学校计算机应用规划教材 C 语言程序设计 梁海英张红军主编 千文陈科尹孟伟东曾霖副主编 北 京 高等学校计算机应用规划教材 C 语言程序设计 梁海英张红军主编 千文陈科尹孟伟东曾霖副主编 北 京 内 容 简 介 本书按照程序设计的体系结构 系统地介绍了 C 语言程序设计的基本思想及基本方法 全书内容分为三 部分 第一部分(第 1 7 章)依次介绍了 C 语言程序设计的基本应用 包括 C 语言程序的结构 数据类型 及其运算 基本语句 结构化程序设计的顺序结构 选择结构 循环结构 数组及函数的开发方法与应用实

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

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx 运算符重载 Operator Overloading class Point { public: ; double x_, y_; Why Operator Overloading? Point (double x =0, double y = 0):x_(x),y_(y) { int main(){ Point a(1., 2), b(3,4); Point c = a + b; return 0;

More information

C/C++ 语言 - 循环

C/C++ 语言 - 循环 C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf

More information

<4D F736F F D20B5DA33D5C220CAFDBEDDB5C4CAE4C8EBCAE4B3F62E646F63>

<4D F736F F D20B5DA33D5C220CAFDBEDDB5C4CAE4C8EBCAE4B3F62E646F63> 嵌入式 Linux C 语言程序 设计基础教程作者 : 华清远见 第 3 章数据的输入输出 本章目标 在上一章中, 读者了解了嵌入式 Linux C 语言的数据相关的知识, 包括数据类型 变量和常量等 本 章继续介绍 C 语言中与数据有关的知识, 数据的输入输出 通过本章的学习, 读者将会掌握如下内容 : 字符输出函数 putchar 格式化输出函数 printf 字符输入函数 getchar 格式化输入函数

More information

任务 3 加法运算练习游戏 019 这就需要用到 C# 语言的基础语法, 如数据类型 运算符和控制语句, 还需要其他的常用控件 在此任务的完成过程中, 读者可以接触到 C# 的数据类型 变量常量 运算符 控制语句等基础语法, 掌握以上知识点及其在软件开发中的应用 3.2 相关知识 预定义

任务 3 加法运算练习游戏 019 这就需要用到 C# 语言的基础语法, 如数据类型 运算符和控制语句, 还需要其他的常用控件 在此任务的完成过程中, 读者可以接触到 C# 的数据类型 变量常量 运算符 控制语句等基础语法, 掌握以上知识点及其在软件开发中的应用 3.2 相关知识 预定义 任务 3 加法运算练习游戏 3.1 情境描述 选择了开发环境并理解了事件驱动机制以后, 要开发项目, 还需掌握 C# 语言的语法 本任务的目标是完成如图 3.1 和图 3.2 所示的小学生加法运算练习游戏 这个小软件的功能是在窗体中的 + 两边出现 2 个 10 以内的随机数, 让用户 ( 适合于小学生 ) 在文本框内输入其和, 然后单击 OK 按钮 若输入的和是正确的, 则跳出一个红色的图片, 同时提示答对了,

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

PowerPoint 演示文稿

PowerPoint 演示文稿 4.4.1 逻辑运算符及其优先次序 3 种逻辑运算符 : &&( 逻辑与 ) ( 逻辑或 )!( 逻辑非 ) && 和 是双目 ( 元 ) 运算符! 是一目 ( 元 ) 运算符 逻辑表达式 用逻辑运算符将关系表达式或其他逻辑量连接起来的式子 4.4.1 逻辑运算符及其优先次序 判断年龄在 13 至 17 岁之内? age>=13 && age

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

内容简介 本书从结构化程序设计技术出发, 以 C 程序设计语言为载体, 以 Windows 下的 Visual C 为程序调试和运行平台, 通过对典型实例的算法及相应 C 语言代码的描述, 介绍了在程序设计过程中如何对问题进行分析 如何组织数据和如何描述解决问题, 揭示了在计算机应用过

内容简介 本书从结构化程序设计技术出发, 以 C 程序设计语言为载体, 以 Windows 下的 Visual C 为程序调试和运行平台, 通过对典型实例的算法及相应 C 语言代码的描述, 介绍了在程序设计过程中如何对问题进行分析 如何组织数据和如何描述解决问题, 揭示了在计算机应用过 普通高等教育 十二五 规划教材 计算机系列规划教材 计算机程序设计基础 周启生姬涛 主编 刘菲田红梅副主编 科学出版社职教技术出版中心 www.aboo 北京 内容简介 本书从结构化程序设计技术出发, 以 C 程序设计语言为载体, 以 Windows 下的 Visual C++ 2010 为程序调试和运行平台, 通过对典型实例的算法及相应 C 语言代码的描述, 介绍了在程序设计过程中如何对问题进行分析

More information

语言教程 1 C 语言概述 C 语言的发展过程 当代最优秀的程序设计语言 C 语言版本 C 语言的特点 面向对象的程序设计语言 C 和 C 简单的 C 程序介绍 输入和

语言教程 1 C 语言概述 C 语言的发展过程 当代最优秀的程序设计语言 C 语言版本 C 语言的特点 面向对象的程序设计语言 C 和 C 简单的 C 程序介绍 输入和 语言教程 1 C 语言概述...6 1.1 C 语言的发展过程...6 1.2 当代最优秀的程序设计语言...6 1.3 C 语言版本...7 1.4 C 语言的特点...7 1.5 面向对象的程序设计语言...7 1.6 C 和 C++...8 1.7 简单的 C 程序介绍...8 1.8 输入和输出函数...9 1.9 C 源程序的结构特点...10 1.10 书写程序时应遵循的规则...10

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

Microsoft PowerPoint - 1. C++介绍.ppt [兼容模式]

Microsoft PowerPoint - 1. C++介绍.ppt [兼容模式] C++ 入门 http://hwdong.com 1. 程序 = 数据 + 运算 Application = Data + Operator 程序就是对数据进行加工处理 ( 运算 ) 程序 = 数据 + 运算 数据用变量 ( 常量 ) 表示, 用运算符对它们进行运算 程序 = 变量 + 运算符 程序中的数据应有条理地存储在内存中, 处理需要按照一定步骤或方法进行 程序 = 数据结构 + 算法 机器语言

More information

关于编写硕士研究生入学考试自命题初试科目

关于编写硕士研究生入学考试自命题初试科目 华北水利水电大学 2019 年硕士研究生入学考试初试科目考试大纲 农业综合知识三 ( 科目代码 :341) 考试大纲 考试形式和试卷结构一 试卷分值及考试时间考试时间 180 分钟 (3 个小时 ), 满分 150 分二 考试基本要求本考试大纲适用于报考华北水利水电大学农业工程与信息技术专业硕士研究生入学考试, 该科目包括 : 数据库 c 语言程序设计 计算机网络三部分内容 三 试卷内容及结构数据库部分占

More information

C 语言大学实用教程 ( 第 版 ) 来完成的, 赋值操作是顺序结构中最常见的操作 但是在 C 语言中, 没有专门的赋值语句, 赋值操作通常是用赋值表达式后接一个分号 (;) 构成赋值表达式语句实现的 例如,c = a + b 只是一个赋值表达式, 而 c = a + b; // 赋值表达式语句则是

C 语言大学实用教程 ( 第 版 ) 来完成的, 赋值操作是顺序结构中最常见的操作 但是在 C 语言中, 没有专门的赋值语句, 赋值操作通常是用赋值表达式后接一个分号 (;) 构成赋值表达式语句实现的 例如,c = a + b 只是一个赋值表达式, 而 c = a + b; // 赋值表达式语句则是 第 章键盘输入与屏幕输出 内容关键词 C 语句分类 字符输入 / 输出函数 格式输入 / 输出函数 重点与难点 表达式与表达式语句的区别 scanf() 语句的正确用法 输入 / 输出数据时的格式控制 典型实例 以不同格式输入和输出两个整型数. C 语句分类 () 控制语句 C 语言只有如下 种控制语句 (Control Statement) if~else for()~ continue switch

More information

内容简介本书主要内容包括程序设计基础知识 C 语言数据类型 运算符与表达式 程序结构 数组 指针 其他数据类型 函数 文件等, 通过对大量实例进行分析, 力求提高和培养学生的程序设计能力 本书有配套辅导教程 程序设计基础实训指导教程 C 语言 ( 科学出版社出版 ), 引导读者学习和巩固各章节内容

内容简介本书主要内容包括程序设计基础知识 C 语言数据类型 运算符与表达式 程序结构 数组 指针 其他数据类型 函数 文件等, 通过对大量实例进行分析, 力求提高和培养学生的程序设计能力 本书有配套辅导教程 程序设计基础实训指导教程 C 语言 ( 科学出版社出版 ), 引导读者学习和巩固各章节内容 普通高等教育 十二五 规划教材计算机系列中国科学院教材建设专家委员会 十二五 规划教材 程序设计基础 C 语言 杨莉刘鸿翔主编唐宏亮邓芳副主编余慧王海军 1 科学出版社职教技术出版中心 www.aboo 北 京 内容简介本书主要内容包括程序设计基础知识 C 语言数据类型 运算符与表达式 程序结构 数组 指针 其他数据类型 函数 文件等, 通过对大量实例进行分析, 力求提高和培养学生的程序设计能力 本书有配套辅导教程

More information

图书在版编目 (CIP) 数据程序员的数学. 3, 线性代数 /( 日 ) 平冈和幸, ( 日 ) 堀玄著 ; 卢晓南译. 北京 : 人民邮电出版社, ( 图灵程序设计丛书 ) ISBN Ⅰ. 1 程 Ⅱ. 1 平 2 堀 3 卢 Ⅲ. 1 电子计算

图书在版编目 (CIP) 数据程序员的数学. 3, 线性代数 /( 日 ) 平冈和幸, ( 日 ) 堀玄著 ; 卢晓南译. 北京 : 人民邮电出版社, ( 图灵程序设计丛书 ) ISBN Ⅰ. 1 程 Ⅱ. 1 平 2 堀 3 卢 Ⅲ. 1 电子计算 图灵程序设计丛书 程序员的数学 3: 线性代数 [ 日 ] 平冈和幸堀玄著 卢晓南译 图书在版编目 (CIP) 数据程序员的数学. 3, 线性代数 /( 日 ) 平冈和幸, ( 日 ) 堀玄著 ; 卢晓南译. 北京 : 人民邮电出版社, 2016.3 ( 图灵程序设计丛书 ) ISBN 978-7-115-41774-9 Ⅰ. 1 程 Ⅱ. 1 平 2 堀 3 卢 Ⅲ. 1 电子计算机 数学基础 2

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 Python 入门 孙栩 xusun@pku.edu.cn 1 课程的整体介绍 目录 contents 2 Python 的介绍及如何安装 Python 3 使用 Python 编写简单小程序 1 课程的整体介绍 课程的整体介绍 Python 入门 1. Python 的介绍与安装 2. 变量与表达式 3. 一些简单的小程序 数据结构 1. 字符串 2. 列表 3. 元组 4. 字典 5. 集合 分支与循环

More information

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i; double d; 数据 (Fields) char c; void set(double

More information

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit 6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128

More information

内容简介 本书根据全国计算机等级考试二级 C 语言程序设计考试大纲要求, 结合目前高等院校学生学习计算机程序设计课程的情况组织内容, 全面地介绍了 C 语言程序设计的基础知识, 系统地讲述了 C 语言程序设计的基本方法和技巧 本书以 ANSI C 语言标准为依据, 深入浅出地介绍了 C 语言的基本数

内容简介 本书根据全国计算机等级考试二级 C 语言程序设计考试大纲要求, 结合目前高等院校学生学习计算机程序设计课程的情况组织内容, 全面地介绍了 C 语言程序设计的基础知识, 系统地讲述了 C 语言程序设计的基本方法和技巧 本书以 ANSI C 语言标准为依据, 深入浅出地介绍了 C 语言的基本数 普通高等教育计算机系列规划教材 C 语言程序设计 ( 第二版 ) 姜海涛主编曹震中武楠王妍闫超刘红娟叶永凯卫娜副主编 副主编 科学出版社职教技术出版中心 www.aboo 北京 内容简介 本书根据全国计算机等级考试二级 C 语言程序设计考试大纲要求, 结合目前高等院校学生学习计算机程序设计课程的情况组织内容, 全面地介绍了 C 语言程序设计的基础知识, 系统地讲述了 C 语言程序设计的基本方法和技巧

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

第 章 顺序结构程序设计 程序里要对数据进行各种操作 其中进行各种运算操作是最基本的操作之一 在 语言程序中 使用表达式 也就是通常所说的计算式子 描述各种运算 表达式是由参与运算的数据和表示运算的符号按照一定的规则组成的式子 描述运算的符号称为运算符 由一个或两个特定符号表示一种运算 语言具有丰富

第 章 顺序结构程序设计 程序里要对数据进行各种操作 其中进行各种运算操作是最基本的操作之一 在 语言程序中 使用表达式 也就是通常所说的计算式子 描述各种运算 表达式是由参与运算的数据和表示运算的符号按照一定的规则组成的式子 描述运算的符号称为运算符 由一个或两个特定符号表示一种运算 语言具有丰富 第 章 顺序结构程序设计 程序里要对数据进行各种操作 其中进行各种运算操作是最基本的操作之一 在 语言程序中 使用表达式 也就是通常所说的计算式子 描述各种运算 表达式是由参与运算的数据和表示运算的符号按照一定的规则组成的式子 描述运算的符号称为运算符 由一个或两个特定符号表示一种运算 语言具有丰富的运算符 可分为多种类型 包括 算术运算符? 9 关系运算符 >> > > > 逻辑运算符 位运算符

More information

第 3 章顺序结构程序设计 31 2) 直到型循环结构 先执行 A 操作, 再判断条件, 若条件成立, 再执行 A 操作, 如此反复, 直到条件不成立时才停止循环 由上述三种程序结构组成的程序称作结构化程序, 形成的软件称作结构化软件 C 程序结构 C 语言以文件为编译单位 一个 C 程

第 3 章顺序结构程序设计 31 2) 直到型循环结构 先执行 A 操作, 再判断条件, 若条件成立, 再执行 A 操作, 如此反复, 直到条件不成立时才停止循环 由上述三种程序结构组成的程序称作结构化程序, 形成的软件称作结构化软件 C 程序结构 C 语言以文件为编译单位 一个 C 程 第 3 章顺序结构程序设计 随着计算机应用的不断发展, 软件变得越来越复杂 软件的可读性 可理解性等问题变得十分突出 经过不断的研究和实践, 确定了程序设计的基本方法, 这就是结构化程序设计方法 结构化程序设计方法使得程序的逻辑结构清晰, 层次分明, 有效地改善了程序的可靠性, 提高了软件的质量 本章所介绍的语句, 将按它们在程序中出现的顺序逐条执行, 由这样的语句构成的程序结构称为顺序结构 本章主要介绍以下内容

More information

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

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 CIRCLE 1 Circle 描述 编写一个圆类 Circle, 实现半径的输入 面积的计算和输出 输入 圆的半径 (double 类型 ) 输出 圆的面积 ( 保留小数点后两位 ) 样例输入 3 样例输出 28.27 提示 圆周率的取值需要比较精确, 以保证计算结果的精度 #include

More information

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2 第十一讲 运算符重载 与类型转换 运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2 为什么要运算符重载 预定义的运算符只针对基本数据类型, 若要对类的对象进行类似的运算, 需要重新定义运算符的功能 运算符重载实质就是函数重载 : 对已有的运算符赋予多重含义, 使得同一个运算符作用于不同类型的数据时导致不同的行为

More information

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

C++ 程序设计 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 PERSON 1 Person 题目描述 编写程序, 定义一个基类 Person, 包含 name 和 age 两个数据成员 ; 再由它派生出学生类 Student 和教师类 Teacher, 其中学生类添加学号 no 数据, 教师类添加职称 title 数据 ; 要求每个类均有构造函数 析构函数和显示数据的函数

More information

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式]

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式] 函数 Function 如何重用代码 How to reuse code 3 4 = 3*3*3*3 3 4,6 5 : 拷贝 - 粘帖代码 (Copy-paste code) 3 4,6 5,12 10 : 拷贝 - 粘帖代码 (Copy-paste code) Bad! 使用函数 (with a function) 使用函数 (with a function) 使用函数 (with a function)

More information

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i;

More information