已阅读5页,还剩71页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020 3 11 1 本书内容 第1章基础知识第2章C语言的基本要素第3章变量名 数据类型 运算符和表达式第4章C程序基本控制结构第5章函数第6章数组和指针第7章递归第8章结构 联合 位运算和枚举类型第9章预处理命令第10章文件第11章高级话题第12章C89VsC99实验 待安排 2020 3 11 2 变量定义 算术表达式 赋值语句和while语句 本章主要内容 ARMVectorTable FIQ IRQ Reserved DataAbort PrefetchAbort SoftwareInterrupt UndefinedInstruction Reset 1 3 2 第一个C语言程序 C语言程序的开发过程 4 for循环语句 常量 5 字符的输入和输出操作 函数 6 字符 整型数组和外部变量 2020 3 11 3 本章的节本要求 本章主要介绍C语言的核心要素 通过本章的学习读者会对C语言有一个整体的基本概念 并能够编制基本的C程序 本章将主要集中在以下基本内容上 变量 常量 运算符 表达式 控制流 函数 以及基本的输入输出库函数等 让初学者快速建立对C语言程序设计的整体概念 并能够编制一些简单有趣的C程序 最常使用的20 元素 2020 3 11 4 学习或者教学C语言最重要的第一步是让学习者能够动手 动手能够增强学习者的信心 而信心对学好C语言来说是重要的 在阅读过程中 作者希望初学者把主要精力放在基本要素上 感觉有难度的内容可以先放一放 2020 3 11 5 2 1C语言程序的开发过程 第一步 编辑 得到源程序 第二步 编译 得到目标码 第三步 连接 得到可执行代码 第四步 装载运行程序 得到结果 程序开发调试过程 2020 3 11 6 2 2第一个C语言程序 开发工具 VC 工具 或者Dev C 工具等 其次 学会该工具的基本使用方法 下面以 HelloWorld 程序为例 例题2 1输出 HelloWorld 2020 3 11 7 includeintmain void printf HelloWorld n return0 预处理命令 主函数 被调函数 函数参数 函数返回值 2020 3 11 8 main 函数是特殊函数 任何C程序必须有且只能有一个main 函数 main 函数可以放在C程序的任意位置 C程序的运行必须从main 函数开始 而且也在main 函数中结束 通过main这个名字才能找到将要执行的程序入口 main 2020 3 11 9 函数就是组成C语言程序的一个一个的功能模块 就像房子是由一块块砖头搭建起来的一样 C程序就是由一个个的函数组建而来的 函数是C程序的基本单位 一般一个函数完成某一个相对独立的功能 在C语言中 满足函数定义格式要求的就是一个函数 函数包括函数头和函数体两部分 2020 3 11 10 图2 1函数定义的基本形式及函数调用的传值过程 函数参数的对应关系 2020 3 11 11 例题2 2比较两个整数的大小 intMax intx inty c Max a b intMax intx inty 声明时有类型 调用时无类型 定义时有类型 2020 3 11 12 C程序的基本结构 1 C语言程序的注释 和 中间所包含的任何内容即为注释部分 2 main 函数及其返回值 是主函数的函数名 main 函数名是操作系统调用C程序的入口 3 函数参数和返回值 intMax intx inty 则有两个参数 一个是x 一个是y 2020 3 11 13 2020 3 11 14 4 函数体 包含在函数名后面的一对大括弧 之间的部分就是函数体 构成函数体的基本要素 一般分为两种 一种是变量定义 声明语句 一种是可执行语句 变量定义语句 inta b c intz 函数体大括弧 之间的内容 2020 3 11 15 C程序的运行过程 假设例题2 2的每一条语句所对应的机器指令都只占据一个字节 那么程序编译 连接 装载以后所对应的程序内存空间将抽象为如图2 2所示的结构 同时 假定 1 假定计算机有两个读写头 一个是程序读写头 另一个是数据读写头 2 假定变量定义语句也会在程序中产生可执行代码 对应PC 对应SP 2020 3 11 16 PC SP 2020 3 11 17 变量定义 算术表达式 赋值语句和while语句 完成一段数据转换任务 它按照公式m 1 3n 3n2 n3 计算m的值 当正整数n从0变化到99时 要求在终端上显示表格2 1的内容 2020 3 11 18 表2 1例题2 3的数值转换表 2020 3 11 19 例题2 3数值转换程序 第一版 在程序中 设计了两个函数 一个是必不可少的main 函数 另一个是数据转换函数Convert 它完成公式m 1 3n 3n2 n3 的计算 注意结果的取值范围 2020 3 11 20 将int改为long有什么好处 intConvert intx intmain void while n bottom m Convert n intConvert intx intz z 1 3 x 3 x x x x x return z 2020 3 11 21 变量定义语句 变量类型和变量名列表inttop intbottom intstep inta b c 变量类型 变量名列表 2020 3 11 22 表2 2几种不同的数据类型 2020 3 11 23 赋值语句 top 0 bottom 99 step 1 n top 将0赋值给top变量 并非代数运算的等于符号 2020 3 11 24 算术表达式 z 1 3 x 3 x x x x x 算术表达式 注意3x需要写为3 x C语言中3x时错误的 2020 3 11 25 当 时 while循环语句 while n bottom m Convert n printf d t d n n m n n step 当型循环结构 2020 3 11 26 while循环操作步骤 1 测试while后的条件表达式 如果条件不成立则退出while循环语句 2 如果条件表达式成立 则执行while后面的循环体部分 也就是while后大括弧之间的内容 如果循环体只有一个语句 也可以去掉大括弧 此时循环体就是while后的第一条语句 3 转入1 进行下一次while循环 2020 3 11 27 表2 3while循环时内存的变换过程 2020 3 11 28 显示输出函数printf printf 是一个通用的格式输出函数 它有两个输出参数 第一个参数是格式输出控制字符串 第二个参数是输出项 第二个参数可以缺省 也可以有多个输出项 在第一个参数中的 是格式控制字符 它控制后面参数中对应的输出项以 后面字符对应的格式输出 2020 3 11 29 d n t表示跳8个空格 2020 3 11 30 表2 4常用的输出格式控制字符 数字表示输出的域宽 字母表示输出数据类型 2020 3 11 31 2 4for循环语句 用for 循环实现while 如下 for n top n bottom n n step m Convert n printf d t d n n m For型循环 2020 3 11 32 基本语法格式如下 for 循环初值条件 循环终止条件 循环步进表达式 两个 号分隔三个表达式 2020 3 11 33 例题2 4用for循环计算1到100的和 sum 0 for i 1 i 100 i i 1 sum sum i 注意循环边界 2020 3 11 34 for循环的执行步骤一共四步 如下 1 首先执行循环初值表达式 只在进入for循环时执行一次 以后的每一次循环不再执行循环初值表达式 2 其次判断循环终止条件表达式 如果条件不满足则退出for循环语句 3 如果条件满足则执行循环体 for后大括弧之间的内容 当只有一个语句时 可以不加大括弧 此时循环体就是for后第一条语句 4 执行循环步进表达式 转入2 进行下一次循环条件判断 2020 3 11 35 2 5常量 程序中恒定不变的量 就是常量 但是 直接在程序中使用数字表示常量 会给编程带来更大的麻烦 第一 数目字的意义不明确 不便阅读 第二 一旦这些常量有变化时 需要找到每一个数目字并进行修改 这不但麻烦而且容易出错 有什么办法表示数目字常量吗 2020 3 11 36 用 define定义宏 宏的定义格式如下 defineNAME替换字符串程序在编译预处理时 自动用 替换字符串 取代NAME 例题2 5数值转换 第2版 defineTOP0 defineBOTTOM99 defineSTEP1 符号表示常量 2020 3 11 37 for n TOP n BOTTOM n n STEP m Convert n printf d t d n n m n n STEP 在步进表达式中步进 2020 3 11 38 用const定义常量 constintSINT MAX 65535 就定义了一个常量 它与用宏定义的宏名是有区别的 define定义的宏名在编译前的编译预处理阶段用字符串替换宏名得到常量 这个常量在编译以后将位于只读程序存储区 而const定义的常量将有对应的名字 它位于数据存储区 const定义的常量有名字 位于数据区 2020 3 11 39 2 6字符的输入和输出操作 getchar 和putchar 函数文本的输入 输出是按照字符流的方式来处理的 字符流实际就是字符序列 它被分成若干行 每一行有零个或者多个字符 一行紧接一行 直到整个流结束 intgetchar void intputchar intch 获取一个字符 输出一个字符 ch为int 2020 3 11 40 while ch getchar EOF putchar ch ch为什么必须是int 可以是char吗 2020 3 11 41 scanf 和printf 函数 scanf 可用于输入字符 数值或者字符串等 它有两个参数 第一个参数是输入格式控制字符串 第二个参数是输入项 scanf 还有什么不可以输入的吗 2020 3 11 42 charch inti scanf c 函数参数个数可变 2020 3 11 43 基本的格式控制字符如下 c 代表字符型 d 代表整型 u 代表无符号整型 ld 代表长整型 f 代表浮点型 s 代表字符串 2020 3 11 44 gets 和puts 函数 char gets char str intputs constchar str 函数gets 获取一个字符串直到回车返回 函数puts 则将其参数str所代表的字符串写到显示屏上 并回车换行 函数原型中的const表示不可在该函数中修改该字符串的内容 puts自动回车 2020 3 11 45 2 6 2文件拷贝 例题2 6将从键盘输入的字符显示到终端上 第1版 ch getchar while ch EOF putchar ch ch getchar 为何需要该语句 2020 3 11 46 例题2 7将从键盘输入的字符显示到终端上 第二版 ch getchar while ch getchar EOF putchar ch ch getchar 为何可去掉两处的getchar 2020 3 11 47 ch getchar EOF的意义 intgetchar intgetch void intgetche void 依据运算符的优先级解读语句的意义 2020 3 11 48 2 6 3字符计数 例题2 8统计键盘输入的字符个数 第一版 lCount 0 while getchar EOF lCount 运算符的意义 2020 3 11 49 l1 lCount l2 lCount 例题2 9统计键盘输入的字符个数 第二版 doubledCount for dCount 0 getchar EOF dCount for循环实现 2020 3 11 50 2 6 4行计数 例题2 10统计从键盘输入的文本的行数while ch getchar EOF if ch n dCountRow while循环实现 注意 并非 2020 3 11 51 if语句 单分支if语句 它控制if后面大括弧之间的语句是否执行 它分两步执行 1 首先求if后的条件表达式的 ch n 的值 2 如果值为真 即条件表达式满足 则执行if后一对大括弧间的语句体 dCountRow 如果值为假 即条件表达式不满足 则不予执行 2020 3 11 52 2 6 5单词计数 例题2 11统计从键盘输入的字符个数 单词数和行数 关键是如何判断一个单词 2020 3 11 53 2 7函数 函数可以将函数的内部实现细节封装在函数内部 例题2 12定义函数Factorial unsignedn 用于计算n 函数具有一定的封装和隐藏性 2020 3 11 54 抽象成更一般的形式如下 函数名 变量定义部分 可执行语句部分 一个带括弧的名字就是函数 2020 3 11 55 函数返回语句return的语法格式如下 return 返回值 括弧可省 当函数不需要返回值时 可以省掉return语句 在新标准C99中 return语句必须带一个确定的返回值 void以外的函数必带return语句 2020 3 11 56 2 8函数参数 复制传值 参数的传递都通过复制传值 在调用函数时 将实参复制一份传递给对应的形式参数 形参和实参各自占据不同的内存空间 对形参的任何改变都不会反作用于实参 也就是说对形参的任何改变都不会影响实参 实参并非形参 2020 3 11 57 我们来研究研究Pow 函数 该函数计算xy 它有两种实现方式 intPow intx inty inti p p 1 for i 1 i y i p p x returnp 注意y和i的作用 2020 3 11 58 为了减少一个内存单元的使用 我们可以采用例题2 13中的设计 该设计就利用了函数的形式参数不会影响实际参数这一特性 使形参y不但用于传值还用于函数内部计数 例题2 13设计Pow 函数计算xy 2020 3 11 59 intPow intx inty intp for p 1 y 0 y p p x returnp 注意y的作用 取消了i 2020 3 11 60 图2 3函数调用时的复制传值过程 2020 3 11 61 2 9字符数组和字符指针 数组是连续排放的数据类型相同的多个 对象 的集合 while 有另外一行文本输入吗 if 该行比以前找到的最长行还长吗 保存该行 并保存该行的长度 打印最长的行 2020 3 11 62 例题2 14获取输入的最长行 并打印该行 在例题2 14中 主要有以下新的知识点 charline MAXLINE charlongest MAXLINE while length GetLine line MAXLINE 0 if length maxLen StrCpy longest line maxLen length 数组的定义形式 2020 3 11 63 图2 4字符数组和指针 指针指向数组的首地址 2020 3 11 64 图2 5字符数组存放字符串常量 Good n 注意 0的存在 它有用吗 2020 3 11 65 2 9 2字符指针 所谓指针 实际上就是内存单元的地址 由于内存单元存放的数据类型不同 因而指针的类型也有所不同 字符指针 也就是char型指针 就是一个指向字符的指针 它实际上就是字符变量在内存单元的地址 指针变量则是这样一个变量 它专门用来存放变量的地址 某种类型的指针变量只能用于存放该种类型的指针 2020 3 11 66 定义指针变量的方法如下 charch 定义了两个指针变量 其名字分别为p1 p2 它们可以指向char型变量 char p1 p2 p1 指针就是地址 2020 3 11 67 p1和p2都指向了ch 2020 3 11 68 StrCpy 将指针pSrc所指向的字符复制到指针pDest所指向的位置 voidStrCpy char pDest char pSrc inti i 0 while pDest pSrc 0 该语句的语义实什么 2020 3 11 69 2 10整型数组 编写程序统计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子绝缘与介质材料制造工改进知识考核试卷含答案
- 香料分馏工安全风险评优考核试卷含答案
- 真空电子器件装配工班组评比能力考核试卷含答案
- 2025广西来宾市忻城县安忻商贸有限公司招聘4人笔试历年参考题库附带答案详解
- 2025广东省茂名市高州市国有企业赴高校招聘国企人员及笔试历年参考题库附带答案详解
- 2025广东深圳市龙岗区产服集团“春雨”第五批招聘笔试笔试历年参考题库附带答案详解
- 2025广东惠州市博罗县园区投资发展有限公司招聘总及笔试历年参考题库附带答案详解
- 2025广东云浮郁南县郁南县交通运输局招聘编外人员3名笔试历年参考题库附带答案详解
- 2025年黄山市徽城投资集团有限公司招聘10人笔试历年参考题库附带答案详解
- 2025年郑州巩义市金桥融资担保有限公司公开招聘3名笔试历年参考题库附带答案详解
- 人工智能赋能家居智能家电市场分析报告
- 2025年中级注册安全工程师安全生产技术考试真题及答案详解
- 锂电池pack技术知识培训课件
- 2025年福建省能源石化集团有限责任公司春季社会招聘210人笔试参考题库附带答案详解
- 企业内部控制与审计方案
- 四川省凉山州2025年中考物理真题附同步解析
- 湖北省部分高中2025届高三下学期四月统考(二模)政治试卷(含解析)
- 小学一年级数学下册应用题大全300题【满分必刷】
- 中外比较文学研究专题知到智慧树期末考试答案题库2024年秋湖南师范大学
- 委托代缴社保协议书范例
- 智库能力测试题及答案
评论
0/150
提交评论