




已阅读5页,还剩74页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计 中山大学数学与计算科学学院 冯伟 2011 09 27 ProgramTutor C语言程序的建立和运行的基本过程静态检查目标程序可执行程序编辑编译连接执行结果源程序动态检查 有错 F c F obj F exe 有错 有错 有错 1 新建项目和程序 File New 2 输入或编辑程序 3 保存程序 File Save Ctrl S 4 编译程序 Build Compile Ctrl F7 5 建立程序 Build Build F7 6 运行程序 Build Execute Ctrl F5 C程序上机过程 编译程序 Compile Ctrl F7 无错时Output窗口 建立程序 Build F7 无错时Output窗口 执行程序 Execute Ctrl F5 执行结果 认识编译器和调试C程序的上机试验 1 上机学习使用VisualStudio编译环境 界面 菜单列表及相应功能 2 通过编辑输入简单C语言程序 建立 编译并运行这些例题程序 以掌握C语言程序的建立和运行过程 3 了解和区分C语言程序的基本组成和结构 认真领会程序的书写要求以写出层次清晰 结构分明的C程序 二 基本数据类型与基本操作 1 数据类型概述2 基本数据类型3 运算符和表达式4 数据类型转换5 数据输入和输出 数据以特定的形式被储存和操作 不仅是操作的对象 而且是操作的结果 算法或程序本质上是描述数据的变化和流动 特定形式的数据之间还存在某些联系 所谓数据结构指的是数据的组织形式 是相互之间存在一种或多种特定关系的数据元素的集合 不同计算机语言定义和使用的数据结构是不同的 而采用数据结构的不同 也使解决问题的算法不同 程序 数据结构 算法 2 1数据类型概述 关于数据类型的理解 1 数据类型名称 2 数据类型占用的内存空间 3 数据类型所能表示的数据及其范围 4 数据类型所能允许的操作 C语言的数据类型 课本P43图3 4 数据类型 常量 变量 1在程序中对用到的所有数据都必须指定其数据类型 即程序中任何一个数据都必须属于一种数据类型 而且遵循 先定义 后使用 的原则 2数据类型的作用 确定数据分配内存空间大小 取值范围和允许的操作 3C语言数据分为常量和变量 分别属于前述数据类型 在程序运行过程中 其值不能被改变的量称为常量 而其值可以改变的量称为变量 4常量和变量都是运算量 即程序中参与运算的量 是程序运算或处理的对象 函数也可以作为运算量 C语言的标识符标识符是程序语言里定义的作为名字的合法有效字符序列 以表示程序中需定义的对象 数据类型 符号常量 变量 函数等 名称 C语言标识符的命名规则是 1 只能由英文字母 数字和下划线三种字符组成 2 必须以英文字母或下划线开头 3 长度有限 超过部分自动截断 一般取前8个字符为有效 用户自定义标识符注意事项 1 大小写字母是不同 即区分字母的大小写 2 尽量不要以下划线开头 避免可能和系统定义名字冲突 3 标识符尽可能选取有意义的词汇 以便 见名知意 4 一般情况下 符号常量用大写 变量名和函数名用小写 5 在易混淆地方 尽量避免用易认错的字符 0Oo 1Il 2Zz C语言的关键字C语言中用到一些英语单词 它们符合标识符的定义 但是已为其规定了特殊的含义 不允许再有其它用途 称这些特定的标识符为关键字或保留字 C语言有下述关键字 P378附录C autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile注意 用户自定义的标识符不能是关键字和编译系统库函数名 几个特殊关键字的说明1 空类型 voidvoid类型一是表示函数无返回值 二是设置空指针 2 类型修饰符 signed unsigned short long3 存取修饰符 常数型 const 暂态型 volatile 用于控制对变量访问或修改的方式 其中 const型变量在程序执行期间不可改变 volatile型变量的值可由程序中没有明确指明的方式改变 4 存储类型符 extern static register auto根据变量存在时间 生存期 外部 静态 寄存器 自动 2 2基本数据类型 1 整型 表示整数2 实型 表示实数3 字符型 表示单个字符4 字符串型 表示一串字符 字符型数组 5 逻辑型 表示逻辑 真 或 假 bool类型 基本数据类型的存储空间长度及取值范围 注意 1 长度是比特 位 数 8个比特是1个字节 2 存储长度和取值范围可能因具体机器和编译系统而异 用运算符sizeof求字节数 课本P45表3 2 P49表3 3 P50表3 4 变量的声明和赋值1 在程序中 数据及其存储空间被抽象为变量 变量名实际是一个符号地址 对应程序在编译连接时由编译系统分配的一个内存地址 其中存放变量值 2 要引用 使用 一个变量 必须首先声明 定义 其唯一数据类型 以申请开辟相应存储空间 而后才能使用 3 变量声明语句的一般形式是 typevariable list 其中 type必须是有效的C数据类型 variable list可由同类型的一个或多个变量名加上逗号分隔符组成 4 从运算器向变量名所代表的内存地址或存储单元传送数据叫赋值 赋值用运算符 表示 允许声明时对变量进行赋初值 初始化 区别 变量名 变量占用的内存空间 变量的值 变量的完整定义 变量的完整定义方法如下 存储类型数据类型符变量名列表 变量有auto 自动 static 静态 extern 外部 Register 存储器 四种存储类型 当未指明存储类型时 在函数内部申请的变量默认为auto型变量 区别 定义三个整型变量i j k inti j k 定义三个静态整型变量a b c staticinta b c 区别 变量的赋值语句与赋值表达式 赋值语句的作用是计算表达式的值后送到变量中 格式 变量名 表达式 在这里表示赋值运算符 是把的值给 区别 赋值语句是语句 有分号 赋值表达式仅表示一个值 不是语句 不能有分号 强调说明1 在C语言中 在使用变量前必须先对其进行定义 先定义后使用 以申请存储空间 变量名必须符合标识符的命名规则 变量的数据类型决定了变量占用的内存空间的大小 2 变量值的改变可由赋值语句 表达式 键盘输入等实现 变量在任一时该只能保存一个值 而且该值只与最后一次赋值有关 当前值 3 C语言规定 在函数体内部 只能在第一个可执行语句前定义变量 因此 一般在函数开头声明部分进行变量定义 变量的作用域变量在程序的何处说明对程序其他部分如何使用这个变量影响较大 以变量说明的位置为基础 决定变量存在的空间区域 称为变量的作用域规则 C语言中 程序可在三个位置说明变量 第一是在所有函数 包括main 函数 之外 叫全局变量 程序任何部分都可以使用它 第二是在函数内 叫局部变量 仅本函数内的语句可以使用它 第三是函数的形参说明部分 这些参数除了接受传递到函数的实参信息外 其它功能与局部变量一样 关于变量的其它说明1 循环变量用简单写法 如i j k等2 变量名要有意义 见名知意 score分数 age年龄3 变量名不要太长 书写麻烦 记忆麻烦4 不允许两个全局变量同名 否则编译程序时出错5 同一个函数内不能定义两个同名的局部变量 但不同函数内的局部变量可以重名 普通常量与符号常量1 常量可以是任何的基本数据类型 表示方法由其类型决定 2 普通 直接 字面 常量 一般的常量 如整数 实数 字符 转义字符 字符串等 3 符号常量 在程序中指定用标识符名字代表的常量 符号常量有两种定义方法 a 宏常量 在程序文件首部定义 definePI3 1459b 变量常量 按变量说明定义 constfloatPI 3 14159f 使用符号常量含义清楚 见名知意 且易修改 一改全改 习惯上 符号常量名用大写 区别变量名用小写 普通常量的表示1 整型常量整型常数可用以下3种表示形式 1 十进制整数 由0 9组成 2 八进制整数 由0 7组成 3 十六进制整数 由0 9 A F组成 2 实型常量 又称为浮点数只能用十进制表示 有两种表示形式 1 小数形式 它由数字和小数点组成注意 必须有小数点 2 指数形式 以指数形式表示 指数须为整数 注意 规范化的指数形式是在字母e或E之前的小数点左边只有一位非零数字 而在字母e或E之后为整数 如 3 333333e 001 3 字符常量 用一对单撇号括起来的一个字符 课本P377 注意 不能用双撇号代替单撇号 4 转义字符 将反斜杠后面字符转成别的意思 课本P40表3 1 1 用反斜杠开头后面跟一个字母代表一个特殊字符 2 用 代表字符 用 和 代表字符单和双撇号 3 用 后跟1到3个八进制数代表相应的ASCII的字符 4 用 x后跟1到2个十六进制数代表相应的ASCII的字符5 字符串常量 用一对双撇号括起来的零个或多个字符序列注意 存储时要多占一个字节 用来存储结束标志 0 字符类型数据的表示和存储形式1 字符类型的数据在内存中以相应的ASCII代码存储 2 字符数据可以等价为与其相应的ASCII码的整数 可以作为整数参与运算 取值范围0 255 字符串型与逻辑型在C语言中无专门的字符串类型及逻辑型数据 但是可以分别用字符型与数值型表示 1 字符串型 用双撇号定界的一串符号 字符串型都以字符 0结束 在C语言中用字符数组 指针 表示 2 逻辑型 逻辑值常只有两个 真 假 在C语言中 用 非0 表示 真 用0表示假 01 算术运算符 02 关系运算符 05 赋值运算符 及其扩展的复合赋值运算符 06 条件运算符 07 逗号运算符 08 指针运算符 09 地址和引用运算符 10 求字节数运算符 sizeof 11 强制类型转换运算符 类型 或类型 12 分量运算符 成员运算符 指向成员运算赋 13 下标运算符 14 其它 如函数调用运算符 课本P52表3 5最常用的算术运算符 2 3运算符和表达式 学习运算符应注意的问题 1 掌握运算符的功能 2 清楚运算的优先级别 优先级 3 明了结合方向 结合性 4 清楚表达式结果的数据类型 表达式的基本概念概念 运算符连接不同的运算量构成的带有值的运算式 特性 整个表达式是有值的 可把整个表达式看成一个数 不同的运算符连接不同的运算量构成不同的表达式 1 算术运算符与表达式 算术运算符 注意 号的写法 号的写法 ab a b a b等应该写成a ba b或应该写成a b 应写成 a b c d 是取余运算符 即获得两个整数运算的余数运算 注意 两侧运算量必须是整数 算一下 5 3 5 35 3 5 3 5 35 3 2 关系运算符与表达式 课本P91 92 关系运算符 43 43 43 43 4 010101 3 逻辑运算符与表达式 课本P93 94 逻辑运算符 非 与 或 注意 关系运算和逻辑运算是任何语言中都有的重要运算 是构成选择 循环结构的关键 逻辑运算真值表 不等式70 X 80在计算机中怎样表示 X 70 X 80 当要用 和 连接多个条件时 C语言是怎样计算的呢 1 a b c2 a b c 对于1式 只要有一个为非0 表达式的结果一定为非0 因此C语言规定 如果a为真 非0 就不会计算b和c 因为式子一定为真 非0 如果a为假 0 才会计算b 但是如果b为真 也不会计算c 也就是说只有a b都为假 0 时 才会计算c 对于2式也有同样的问题 a b c只要一个为假 0 其结果一定为假 0 不用再往下计算 所以只有a为真 才会计算b 只有a b为真 才会计算c 4 C语言的其它运算符 位运算符 移位运算符 逗号运算符 表达式1 表达式2 表达式3 都执行逗号表达式由逗号连接的多个表达式构成 逗号表达式的值只与最后一个表达式相同 如 表达式 a 1 c 2 c a 的值为3 条件运算符 表达式1 表达式2 表达式3 双分支选择如 a b c 课本P97 表达式的值由a决定 如果a为非0 则表达式的值为b 否则为c 如 a 5 b 3 c 4 则表达式 a 5 b c b c 的值为 1 取地址运算符 获取变量对应的内存地址 取值运算符 从内存地址指定的内存空间中取出值 5 自加 自减 运算符 课本P53 1 前加或前减 先对变量自加或自减1 而后使用变量 变量名 变量名 2 后加或后减 先使用变量 而后对变量自加或自减1 变量名 变量名 如 a a a a 等 注意 自增或自减运算符只能用于变量 而不能用于变量或表达式 应避免使用中的歧义性 不宜复杂 数据类型的提升与降格 由低数据类型转换为高数据类型 称为提升 包含 1 由短数据转换为长数据 2 由整数转换为浮点数 相反方向的转换称为降格 基本数据类型的由高到低的级别双精度 单精度 长整型 短整型 字符型 2 4数据类型转换 数据类型降格转换中的问题降格转换中 当数据值超过了目标类型的取值范围时 均会影响精度 1 当由一个实数降格转换为整数时 实数的小数部分全部舍去 并按整数形式存储 2 当由double型转为float型 7位有效数字 时 去掉多余的有效数字 但以四舍五入处理 不同类型数据的隐式转换1 算术转换 向高看齐 为使表达式中的各运算量具有共同的类型 2 赋值转换 转换为左边变量的类型 把一个值赋给与其不同的类型的变量 3 输出转换 按格式控制转换 在输出时转换成指定的输出格式 4 函数调用转换 实参转为形参类型 实参与形参类型不一致 不同类型数据的显式转换强制类型转换符 类型标识符 表达式 运算符的优先级和结合性 课本P378附录D 对涉及多种运算符的表达式进行运算时 应考虑运算符的优先级和结合性 首先 应当考虑运算符的优先级 明确先后计算的顺序 其次 还要考虑运算符的结合性 明确同级运算运算符的结合方向 左至右或右至左 一般依次为逻辑非 算术运算符 关系运算符 逻辑运算符 等 具体情况请参阅教材 注意 可以括号 来明示和改变运算符的优先级次序 基本数据类型及操作中需强调的问题和实例1 宏常量和变量常量的区别和使用 include definePRICE30voidmain intnum total num 10 total num PRICE printf total d n total includeconstintPRICE 30 voidmain intnum total num 10 total num PRICE printf total d n total 2 实型数据的舍入误差和使用 includevoidmain floata b pi area doublea b pi area a 123456 78900 b a 0 0002 printf f n a printf f n b pi 3 14159 area pi 10 10 printf f n pi printf f n area 3个Warning123456 789063123456 7890633 141590314 158997 123456 789000123456 7892003 141590314 159000 虽然允许隐式转换 但提倡显式类型转换 类型匹配 提高精度 3 提倡类型匹配 强制转换运算符 区别 和 运算符 includevoidmain printf d n 5 3 printf d n 5 3 printf lf n 5 0 3 printf d n int 5 0 3 printf d n int 5 0 3 printf f n float 5 3 printf f n float 5 3 121 666667121 0000002 000000 4 打印机和显示屏结果理解 includevoidmain printf abc tde rf tg n printf abc tde n printf abc tde rf tg n printf n printf h ti b bjk n printf h ti n printf h ti b bjk n 5 字符和字符串的区别和使用 include includevoidmain charc1 a charc2 a 错误 类型不匹配charc3 a printf d n sizeof char 1printf d n sizeof c1 1sizeof测试数据类型或变量字节数printf d n sizeof c3 2字符数组长度printf d n strlen c3 1strlen测试字符串长度printf d n strlen 101a 0 0 n 8 6 其它强调注意的问题 字符常量和整数的等价常用字符与ACSII码对照表中 0 255是十进制整数 等价于对应的字符 可以混合运算 注意 八进制 ddd和十六进制 xdd的表示形式 如 八进制数 101代表ASCII码 十进制数 为65的字符A AmericanStandardCodeforInformationInterchange 逻辑运算符 处理的运算对象和结果都是逻辑值整数0为假 整数非0为真 实数0为假 实数非0为真 空字符为假 非空字符为真 3 自增自减运算符的运算对象是整型 字符型和指针型a a 先使用a的值 后使a的值加 减1 a a先使a的值加 减1 后使用a的值 输入 从输入设备输入数据到内存中 输出 将内存信息由输出设备显示 方式 C语言的输入输出是通过调用函数实现的 建议 C语言的输入 输出函数作为最基本的操作之一 规定繁琐 特别要记忆大量格式符和相应的规则 建议不必花太多精力死抠每一个细节 首先重点掌握最常用的一些规则 其它部分可在需要时随时查阅 通过结合上机编写调试程序逐步深入而自然地掌握其应用 2 5数据输入和输出 1 单个字符的输入和输出 课本P78 82 格式 getchar 没有参数功能 得到从键盘上输入的一个字符 用法 charch ch getchar 格式 putchar ch 功能 在屏幕上显示一个字符 ch为字符型常量或变量 包括控制字符或其他转义字符 用法如 chara A putchar a putchar n putchar 101 putchar 015 putchar 012 putchar getchar 输出输入的字符 2 printf函数 课本P68 75 该函数是最常用的有格式的输出函数 用法如下 printf 格式控制字符串 输出表列 注意 1 格式控制字符串 是用双撇号括起来的字符串 包括格式说明和普通字符 2 格式说明由 和格式字符组成 作用是将输出数据转换为指定的格式输出 提倡类型匹配一致 避免隐式转换 即说明对应输出项在输出时的位置宽度及相应的数据类型 3 普通字符是需要原样输出的字符 目的是提示说明 增加输出数据的可读性 4 输出表列 可以是表达式 变量 常量等列表 建议输出表列不要实现计算功能 每项之间用逗号 隔开 5 在使用时 建议严格按照格式要求 提倡个数对应 类型匹配 即格式符的个数应该与输出项的个数相同 并且对应的数据类型应该一致 格式符 1 格式符的标准写法 m n 字母关于附加格式字符或修饰符的说明 a 正负号 用以指定输出项左右对齐方式 负号是左对齐 缺省正号 为右对齐 剩余位置补空格 b 域宽及精度描述符m n m是最小域宽 即输出数据所占最小位数 包括可能的小数点所占的一位 若超出该位数 则按实际位数输出 n是精度 输出实数时是小数位数 输出字符串时是自左端截取的字符个数 2 常用格式符 注意 输出实数时 若不指定精度 默认输出6位小数 但输出的数字并非都是有效数字 float和double型实数的有效位数分别是7位和16位 最后一位都采取4舍5入 规范化指数形式输出位数规定 printf实例应用 printf a d b d a b printf Hello Guys n 特别建议 格式符的使用比较复杂 建议 注意初学时不要花太多时间研究格式 先要学会基本输出格式 复杂格式以后逐步深入学习 doublepi 3 14159267 3 14159267fprintf f 8 4f 3 3f 2f n pi pi pi pi 3 141593 3 1416 3 142 3 14 2 scanf函数 课本P75 78 该函数是标准输入函数 用法如下 scanf 格式控制字符串 内存地址表列 注意 1 格式串 中 格式符 的含义与printf说明基本一致 格式符的标准写法 m 格式字符2 内存地址表列 指的是用逗号分隔的内存地址 可以是变量地址或字符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 线上教学困难及应对策略分享
- 远程办公制度与员工管理办法
- 企业网络营销策略及效果分析
- 小学科学课程教学计划实例分析
- 大型商场节日促销活动策划案
- 中小学劳动教育周计划与团队活动
- 教师资格证考试小学综合素质章节总结
- 仁爱英语七年级(下册)复习提纲
- 高级数学教师资格考试真题解析
- 重型机械安装工艺流程详解
- 慢阻肺临床路径试题及答案
- 800个产粮大县名单
- 2025年新兼职安全员安全培训试题及答案
- 集体荣誉-主题班会课件
- 养老现状课件
- 【某酚醛污水处理厂的经济评估计算过程案例2100字】
- 当代科技伦理与自然辩证法课程的融合与教学创新探索
- 公司年度财务预算
- 2025年高考语文考前关注:作文审题立意技巧
- 氯气的性质课件高一上学期化学人教版
- 水利工程监理部主要工作制度(依据2014版监理规范编写)
评论
0/150
提交评论