已阅读5页,还剩624页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机基础教学系列课程 C语言 课程性质 大学生公共基础课程 必修课 学时 讲课34课时 实验64 课内32 课外32 学分 2学分总评成绩 平时成绩40 期末成绩60 平时成绩 成绩1 作业 考勤10 成绩2 单元测验15 成绩3 实验报告15 期末成绩 期末理论机考60 C语言程序设计 第一章C语言的发展 特点与程序结构第二章基本数据类型 运算符和表达式第三章基本语句与顺序结构第四章选择结构第五章循环结构第六章数组第七章函数第八章指针第十章结构体第十二章文件 C语言程序设计 推荐参考书 谭浩强主编 程序设计 第二版 北京 清华大学出版社 第一章C语言的发展 特点与程序开发基本知识 1 1C语言的发展与特点1 2程序设计的基本方法1 3算法的概念及其表示1 4C语言的基本结构1 5应用程序的开发步骤和运行过程 下一章 目录 习题 C语言是一门优秀的程序设计语言C语言是在1973年由美国贝尔实验室开发的 1983年 ANSI为C语言制定了新的标准 称为ANSIC 并于1989年最终完成 目前使用较多的版本有ANSIC BorlandC TurboC MicrosoftC C VisualC 等 C语言的发展 WUCC C语言是结构化程序设计语言功能强大 具有丰富的数据类型及运算符 简洁紧凑 使用方便灵活 C语言具有自我扩充能力C语言具有汇编语言的功能可移植性好 WUCC C语言的特点 程序的概念程序是计算机解决问题所需的一系列指令的集合 著名计算机科学家NikiklausWirth提出了 算法 数据结构 程序 的公式程序就是在数据的某些特定的表示方式和结构的基础上 对抽象算法的具体描述 1 2程序设计的基本方法 程序 数据结构 算法 程序设计方法 语言工具数据结构是数据的类型和数据的组织形式 算法是为解决一个问题而采用的方法和有限的步骤 程序设计方法确定语言和编程环境 WUCC 面向过程的程序设计 所谓面向过程的程序设计 是指利用面向过程的语言工具 如Pascal Fortran和C语言等 进行程序开发的各项活动 优点 编程简单 结构性强 可读性好 遵循这种结构的程序只有一个入口和一个出口 缺点 存在数据与程序模块的分离和程序的可重用性差等问题 WUCC 面向对象的程序设计 ProgramDesigninCLanguage 面向对象的程序设计将一些新的理念和结构化程序设计中好的思想相融合 提供了一种全新的程序设计方法 1 3算法及其表示 算法的特性有穷性一个算法的操作步骤应当是有限的 确定性算法中的每一个步骤应当有确定的意义 不能有二义性 有效性算法中的每一个步骤应当正确 可行 并且能有效地执行 有零个或多个输入执行算法时需要从外界获取的信息 有一个或多个输出执行算法后应当得到正确的结果 算法举例 例1 1 输入三个数 然后输出其中最大的数 1 输入变量x y z的值 2 比较x和y 如果x y 则x送max 否则y送max 3 比较max与z 如果z max 则将z送max 4 输出max max即为最大数 算法 对同一个问题 算法是不唯一的 例如 求和1 2 3 100 1 1 2 3 4 100 2 1 100 50一个好的算法应该是 正确 易读 效率高 算法的表示方法 常用的算法描述方法有 自然语言描述 伪代码 流程图 N S图 PAD图等 1 自然语言就是用人们日常使用的语言来描述或表示算法的方法 英语和程序设计语言混合使用称为伪代码 Begin 算法开始 inputx y zifx ythenmax xelsemax yifz maxthenmax zprintmaxend 算法结束 2 用伪代码表示算法 用一些图框和方向线表示算法的图形表示法 特点 直观形象 易于理解 便于检查和交流 常用流程图符号及含义如下 3 用流程图表示算法 流程图 例1 1 对任意给定的三个整数x y z 求出其最大值 例 对任意给定的三个整数x y z 求出其最大值 4 用N S流程图表示算法 结构化程序设计 C语言是结构化程序设计语言 有三种基本结构 顺序结构选择结构循环结构实践证明 任何复杂的算法都可以用这三种基本结构来描述 程序设计的目标在正确的前提下 其重要性排列次序依次为 可读 可维护 可移植和高效 顺序结构 矩形框 用于表示顺序结构 执行时按语句的先后顺序执行 先执行语句A 再执行语句B 顺序结构的流程图 顺序结构的N S图 选择结构 分支结构 根据条件的真或假选择执行不同的操作内容 当条件成立执行语句A 否则执行语句B 选择结构的流程图 选择结构的N S图 循环结构 1 当型 while型循环 当条件成立 执行循环体 否则跳出循环体 L形框 用于表示循环结构 2 直到型循环 do while型循环 首先执行循环体 若条件不成立继续执行循环体 直到条件成立为止 例1 2 在屏幕上显示一行文字 WelcometoC includevoidmain 定义主函数 printf WelcometoC n 程序运行结果 WelcometoC 函数 Function C程序包含一个或多个函数 其中必须有一个main 圆括号指示一个函数 包含函数体 表示main函数结束 printf Welcome printf toC n printf Welcome nto nC n 程序运行结果 WelcometoC 程序运行结果 WelcometoC 注释 文本 或 不被执行以提高程序的可读性 语句 Statement 必须以 结尾格式输出函数printf 调用标准函数 显示引号中的内容 includevoidmain inta b sum 声明部分 定义变量类型a 123 b 456 执行部分 赋值语句sum a b 执行部分 赋值语句printf sum d n sum 执行部分 输出语句 程序运行结果 sum 579 赋初值 计算 输出 定义变量 例1 3 求两个整数的和 函数体包括变量说明部分语句执行部分 文件包含预处理命令 将标准输入输出头文件包含到源程序中 includevoidmain inta b c 定义变量类型printf inputtwonumbers n 提示scanf d d intmax x y intx y intz if x y z x elsez y return z 例1 4 求两个数中的较大值 程序由两个函数组成 main函数和max函数 运行程序屏幕显示提示信息 键盘输入a b的值 屏幕显示c的值 inputtwonumbers 123 456 max 456 一个C程序由一个或多个函数组成 其中必须有一个主函数main 程序执行时总是从主函数开始 main 可以置于程序的任何位置 程序中需有预处理命令 如 include 预处理命令通常放在程序的最前面 分号是C语句结束的标志 每个语句和数据定义后必须有一个分号 预处理命令 函数头和花括号 之后不能加分号 1 4 2C语言程序基本结构 C程序书写灵活 一行可以写几个语句 一个语句可以写在多个程序行上 includevoidmain inta b sum a 123 b 456 sum a b printf sum d n sum C语言本身没有输入输出语句 输入输出的操作是由库函数scanf 和printf 等函数完成的 1 4 2C语言程序基本结构 C程序严格区分大小写 一般变量 语句等用小写字母书写 符号常量等用大写字母书写 标识符 保留字之间必须至少加一个空格以示分隔 函数 C语言的函数有两种 标准库函数和用户定义的函数 用户自定义函数 可有可无 数目不限 如例1 4中的intmax intx inty C语言提供的库函数 如输出函数printf 和输入函数scanf 函数定义 函数头 函数体函数头 说明函数的类型 名字 参数及参数的类型 intmax intx inty includevoidmain inta b sum a 123 b 456 sum a b printf sum d n sum 函数体 函数头 函数体 由 括起 包括变量声明和执行部分 函数定义 1 4 3C语言的字符集 关键字和标识符 字符集 C语言允许使用字符的集合字符集的组成 26个小写字母abcdefghi z26个大写字母ABCDEFG Z10个数字0 9其他符号 空格 SPACE 制表符 Tab C语言的关键字 关键字 C语言中预定的具有特定含义的词 也称保留字 共有32个 分四类 类型说明 int long float 语句定义 if else while for 存储类 auto static 长度运算符 sizeof 标识符 标识符 用来标识变量 符号常量 数组 函数的名字 组成 只能由英文字母 数字和下划线组成 第一个字符不能是数字 只能是字母或下划线 VC6 0中有效长度为1 255个字符 例如 x m1 average k123 1 5AN WA 11 alot 11 注意 标识符严格区分大小写例如 ABC abc是不同的标识符不能和C语言的关键字 用户定义的函数名以及系统库函数同名 C的 h 头文件中经常使用以下划线开头的内部变量名 因此用户最好避免使用这类标识符 取名应尽可能见名知意 如 alfa aver pi bata等 例 以下各标识符组中 合法的用户标识符分别为 1 A PAdB scanfC voidD 4aP Da10maxtemp 2 A b bB CCPC hiyD iswabcfloatINT 3 A 0123B del wordC listD keep ssipedsigned jerwind 分隔符 分隔符分隔符主要有逗号和空格两种 逗号用于分隔变量或参数 空格用于分隔单词 在关键字和标识符之间必须用空格分隔 例如 int a b c max x y z 1 5应用程序的开发过程 1 5应用程序的开发过程 编辑器 file cfile cpp 编译器 file obj 连接器 file exe Libraries CPU 装载程序 建立 修改 保存源文件 生成目标文件 生成可执行文件 运行可执行文件 1 5应用程序的开发过程 在VisualC 6 0环境下 开发和运行 程序的步骤如下 1 启动VC 开始 程序 MicrosoftVisualC 6 0 即可启动VC6 0 2 编辑 建立源文件 3 编译 连接和运行源程序 习题 1 一个C语言程序是由 组成a 主程序b 子程序c 函数d 过程2 一个完整的C语言的程序a 至少包含一个主函数b 至少包含一个主函数与一个子函数c 必须由一个主函数与一个以上的子函数组成d 必须由一个主函数与一个子函数组成 习题 3 C语言程序的执行总是从 a main函数的入口开始b 编译预处理命令开始c 源程序的第一个函数开始d 源程序的第一行语句开始 习题 4 在C语言的源程序中 主函数的位置 a 必须在源程序的最后b 任意c 必须在源程序的开头5 一个函数一般由两部分组成 它们分别是 和 6 函数体使用 符号开始 使用 符号结束 函数头 函数体 习题 7 C程序的每条语句的结束标志是 符号 8 在C程序中 注释以 符号开始 使用 符号结束 9 算法是 10 表示算法的常用方法有 等 11 结构化程序的三种基本结构是 解决某一问题所采取的方法和步骤 自然语言 流程图 伪代码 顺序结构 选择结构 循环结构 12 判断下述说法是否正确 如不正确 说明理由 a printf函数总是从新行的起始位置开始打印 b 计算机会把 和 之间的注释文本打印到屏幕上 c 所有的变量在使用前都必须予以声明 d C语言认为变量number和NuMbEr是相同的 e 声明语句可放在函数体中的任何位置 f 打印三行输出的C语言程序必须用三条printf语句 g printf函数的格式控制串中使用转义字符 n会把光标定位到屏幕上下一行的开始位置 2 1数据与数据类型 2 2常量 变量和标准函数 2 3基本运算符及其表达式 第二章数据类型 运算符和表达式 下一章 上一章 目录 习题 整型 包括有 无符号的基本整型 短整型 长整型实型 包括单精度实型 双精度实型float double字符型 用于表示和存储ASCII字符 char 2 1数据类型 是C语言数据类型的基本型 其值不可再分解为其他类型 一种特殊的数据类型 其值为某个量的内存地址 一种无返回值函数的数据类型 void 用新的类型名替代已有类型名使用 用typedef定义 一种由单种或多种数据类型构造而成的数据类型 数组结构共用体枚举类型 C语言的基本数据类型 2 2常量 变量和标准函数 2 2 1常量2 2 2变量2 2 3标准函数 下一节 第二章 目录 习题 2 2 1常量 常量在程序执行期间其值保持不变的量C语言有以下几种类型的常量 整型常量实型 浮点型 常量字符常量字符串常量 有三种形式 十进制整数 八进制整数 由数字0开头十六进制整数 由前缀0 x或0X开头 1 整型常量 如 014 0110177777 如 0 x110XAFBDE 0X00FFH 如 11 13 0 65535 1 00021 310454 10 30199 整数又可分为 长整型整数 用后缀L l表示 012L 65536L 0XCL无符号整数 用后缀U u表示 017u 0 xfdbU无符号长整数 用后缀UL ul表示 15uL 实型常量又称实数 指带有小数部分的数 C语言中的实数是以十进制表示的 有两种表示形式 十进制小数形式 由数字 数符和小数点组成 例 0 123 123 123 0 0 2 5 指数形式 又称科学记数法 用E 或e 表示以10为底的指数 如 100000000 1 108 1E 80 0000125 1 25 10 5 1 25E 05 0 91 10 3 0 91E 03 尾数部分 指数部分 字母E e前必须有数字 而E后面的阶码必须为整数 2 实型常量 浮点数 例 下列不合法的指数形式 单独的小数点和单独的指数部分如 E 5E10 阶码只能是整数 不能带小数点 如 1234E1 52 E6 5e 2 3 E 35 E4 1012不能写成E12 必须写成 3 字符常量 字符常量 是用单引号括起来的一个字符如 a A 9 合法 a 99999 非法在内存中 字符常量以ASCII码存储 一个字符占一个字节 由于字符常量是按整数存储的 可以像整数一样在程序中参与相关的运算 如 a 32 执行结果97 32 65 9 9 执行结果57 9 48 以 开头的字符序列 有特定的含义 如 表示输出一个反斜杠符 表示输出一个双引号 ddd ddd表示八进制的ASCII码 xhh hh表示十六进制的ASCII码 例 n 回车换行 12 xa A 101 x41 注 0 或 000 是代表ASCII码为0的字符 即空字符 NULL 表示整数0 转义字符 例2 1 转义字符的应用 includevoidmain printf a tb nc bd 100 x40 n a bd 输出到显示屏 字符串常量 用一对双引号括起的字符序列 例 CHINA a 12 5 w x53 np 103q 字符串长度 字符串中所有字符的个数系统自动在每个字符串的末尾加上一个空字符NULL 即 0 作为字符串的结束 0 是一个ASCII码为0的字符 例 CHINA 在内存中所占的字节为 4 字符串常量 字符常量由单引号括起来 字符串常量由双引号括起来 字符串常量和字符常量的主要区别 字符常量只能是单个字符 字符串常量可以含有多个字符 字符常量占一个字节 字符串常量占的字节数等于字符个数加1 比较 A 与 A 的区别 若输出的字符串中含双引号 则要使用转义字符 例 printf hesaid Iamastudent n 输出 hesaid Iamastudent 5 符号常量 符号常量 用标识符表示的常量格式 define标识符常量功能 用该标识符代表后面的常量值例 definePI3 defineSTAR 预处理命令 define也称为宏定义 一个 define命令只能定义一个符号常量 用一行书写 不用分号结尾 include definePI3 用预处理命令定义符号常量voidmain floatr area l 定义变量类型为实型scanf f 例2 2 求半径为r的圆面积和圆周长 说明 符号常量名习惯用大写字母表示该命令通常放在文件头在程序中 符号常量不允许重新赋值 例 definePI3 PI 5 6 或scanf f 5 符号常量 2 2 2变量 变量概述整型变量实型变量字符型变量变量的初始化 变量概述 变量 在程序执行期间其值可以改变的量变量在使用之前必须被声明每一个变量有名字 类型 长度和值 对变量赋值过程是 覆盖 过程 用新值去替换旧值 从内存中读出变量的值 该变量保持不变 90 x 90 printf d x 定义变量的形式 类型说明符变量名表 例 inta b 定义两个整型变量a和b charc 定义字符型变量c floatf1 f2 定义单精度实型变量f1和f2 变量概述 变量类型 type 变量名 name 是一个标识符 1 整型变量 用来存放整型数据的变量 整型变量的分类表 与操作系统 编译系统 机器字长有关 有符号的整数 最高位是符号位 正整数在内存中以二进制原码形式存放 负整数在内存中以二进制补码的形式存放 有符号正整数10 有符号负整数 10 无符号整数 无符号整数的所有二进制位全部用来存放数值 不能存放负数 无符号整数65535u 例 求50的三次方 includevoidmain shortintx x 50 50 50 printf d n x 程序运行结果为 6072 错 将以上程序改为 includevoidmain intx x 50 50 50 printf d n x 运行结果 125000 因此 在定义整型变量时 要注意数据类型允许的数值范围 用来存放实型数据的变量分单精度型 双精度型和长双精度型三类 2 实型变量 includevoidmain floatf f为单精度实型变量doubled d为双精度实型变量f 33333 33333 d 33333333333333 333333 printf f f nd f n f d 输出结果 f 33333 332031d 33333333333333 332000 例2 3 实型变量的使用 f 3 字符变量 用来存放字符常量的变量例 charc1 c2 c3 c1 A c2 n c3 97 每个字符变量分配一个字节用于存放一个字符 存放的是字符的ASCII码值 字符数据与整型数据可相互赋值 直接运算 可以把字符变量按整型量输出 也允许把整型量按字符量输出 includevoidmain inta b 给一个整型变量赋一个字符值charc1 97 给一个字符变量赋一个整数值c1 c1 32 将小写字母转换为大写字母printf d d n a c1 printf c c n a c1 输出结果 9865bA 例2 4 字符型变量的使用 注意 只能将一个字符常数赋给一个字符变量 不能把一个字符串常量赋予字符变量 例 charc abc 在C语言中没有字符串变量 但可以用一个字符数组来存放一个字符串常量 4 变量的初始化 在说明变量的同时给变量赋初值格式 类型说明符变量 常数 例 inta 5 定义并初始化charc1 a c2 B doublearea r 23 e 2 intx 10 y 10 z 10 不能写成intx y z 10 inta a 5 赋初值 2 2 3标准函数 C编译系统提供的库函数包括 输入输出函数 数学函数 字符和字符串函数等 数学函数 x为弧度 doublex doublesin x cos x sin x cos x exp x log x log10 x fabs x pow x y sqrt x area s s a s b s c s a b c 2 include include 例2 5 求三角形面积 预编译命令 将系统提供的数学函数 作为头文件包含到用户源文件中 voidmain doublea b c s area scanf lf lf lf 运行 2 3运算符和表达式 2 3 1算术运算符与算术表达式2 3 2不同数据类型的转换与运算2 3 3关系运算符与关系表达式2 3 4逻辑运算符与逻辑表达式2 3 5条件运算符与条件表达式2 3 6赋值运算符与赋值表达式2 3 7逗号运算符与逗号表达式 2 3基本运算符及其表达式 1 基本算术运算符 算术运算符用于各类数值运算 包括基本算术运算符 自增运算符 自减运算符 下表为基本算术运算符 1 在C语言中 规定了运算符的优先级和结合性 优先级 语言中 运算符的优先级共分为15级 1级最高 15级最低 表达式求值时 先做优先级高的操作 如 d a b c 当运算符的优先级别相同时 运算次序由结合性决定 结合性 左结合性 先左后右 例 d 3 5 4 右结合性 先右后左 例 d a 3 运算符 整数相除截去余数 此运算为整除 5 2 2 2 5 1 3 1 3 1 3 0 对于浮点数则为通常意义的除法5 0 2 0 2 51 3 1 3 1 3 1 模运算符 用于计算两个数相除后得到的余数 如 a b求a除以b以后得到的余数 运算对象只能是整型量 其结果也是整型量 如 5 2 13 3 03 5 3 A 2 13 0 10 0 5所得结果的符号与运算符左侧操作数的符号相同 5 2 15 2 1 2 自增 自减运算符 例 x 10 y x 此时 y 11若 x 10 y x 则y 10在这两种情况下 x都被置为11 K 3 j 5 i 3 m k j n i j 例 m k 20 4 n i 15 4 例2 7 自增 自减运算符的使用 includevoidmain inti 6 a b printf d n i printf d n i a i printf d n a b i printf d n b printf d n i printf i d n i i 7777 6 7 注意 自增 自减运算只能用于变量 不能用于常量和表达式 例 i 为合法的运算 6 a b 为非法的运算 自增 自减运算符是两个 或两个 的一个整体 中间不能有空格 如果有多于两个 或两个 连写的情况 则编译首先识别前两个 或 为增量或减量运算符 表达式x y等价于 x y自增 自减运算符的运算顺序是右结合 因此对 i 应理解为 i 而 i 是非法的 例 i 3 printf d i 输出 3 例2 8 自增 自减运算符的使用 includevoidmain inti j k i 1 j 1 k i j printf i d j d k d n i j k 程序运行结果 i 2 j 1 k 2 k i j 由算术运算符和括号将运算对象 如常量 变量 函数等 连接起来的一个有值的式子 例 A 2 sqrt 4 d d 2 表达式求值的优先次序 函数 高低 3 算术表达式 号 如 a b c d 不能省略 如 2 a b 2 a b 括号只能使用圆括号 且成对出现 不能使用 和 如 a x b y c a x b y c 书写问题 LN X 例 将下列数学式子写成C算术表达式 log sqrt a x x x a e st abs a exp s t sqrt fabs sin x 3 14 180 xy pow x y A 3 x n 2 x 1 B 3 x n 2 x 1 C 3 pow x n 1 2 x 1 D 3 pow n x 2 x 1 例 与数学式子3乘以x的n次方除以 2x 1 对应的C语言表达式是 2 3 2不同数据类型间的转换与运算 在C程序中 当不同类型的量进行运算时 要转换成同一种类型然后再进行运算 例 10 a 1 5 8765 1234 b 转换方式 自动转换 数据类型自动由低级向高级转换 强制转换 将表达式的运算结果强制转换成指定的数据类型 自动类型转换 这种类型转换由编译系统自动完成转换规则 说明 1 横向的箭头表示必定的转换 2 纵向的箭头表示当运算对象类型不同时转换的方向 例 floatf 3 5 intn 6 longk 21 doubless f n k 2 强制类型转换 格式 数据类型说明符 表达式 注意 强制转换属单目运算 运算优先级为2 强制转换得到的是中间结果类型 原变量类型不变 数据类型说明符和表达式都必须加括号 单个变量除外 例 intx y floatz float x y int z x float 5 3 将5 3的值转换为float型 includevoidmain intx 8 floatf 6 85 printf float x f x d n float x x printf int f d f f n int f f 例2 12 强制类型转换的应用 2 4 f 2 3 3关系运算 比较运算 即比较两个量的大小 比较的结果为 真 或 假 例 a 3如果a 8 则结果为 真 如果a 1 则结果为 假 1 关系运算符 2 关系表达式 用关系运算符将两个表达式连接起来的式子 格式 其中 表达式1和表达式2可以是任意表达式 例 m n 20 测试此关系是否成立 成立为真 不成立为假 成立 关系表达式的值为1 不成立 关系表达式的值为0 例 5 4 b 3 a 4 b 6 5 2 7 8 0 0 0 值为 1 例2 13读程 includevoidmain inta b c a b c 10 a b c printf d d d n a b c a b c 2 printf d d d n a b c a b c 100 printf d d d n a b c 输出结果 1 10 101 20 110 20 11 关系运算的不足 关系表达式只能表达简单的关系 如 sum 1500y z即只能对一个条件进行测试 而以下关系 0 x 5则不能用关系表达式表示 x 0 x 5 2 3 4逻辑运算符与逻辑表达式 1 逻辑运算符C逻辑运算符 逻辑运算真值表 特点 全真为真 其余为假 特点 全假为假 其余为真 逻辑非 逻辑与 逻辑或 2 逻辑表达式 用逻辑运算符将表达式连接起来的式子 形式 表达式1和表达式2可以是任何表达式如 5 3 2 4 a 逻辑表达式的值整数1 true0 false 判断时 0代表 假 非0即表示 真 将下面的条件用C语言的逻辑表达式表示 例1 1 x 10且x 7x 1 x 10 x 7例2 y能被4整除 但不能被100整除或y能被400整除 y 4 0 y 100 0 y 400 0 运算顺序 算术运算 关系运算 赋值运算例 若a 2 b a c 5 f 3 0c 3 86 b 1 6 0 1 1 0 逻辑与和逻辑或运算符具有短路能力 逻辑与 表达式1 表达式2 只有表达式1的值为 真 时才求表达式2的值 如 x y 1 x x y 0 1 短路表达式 逻辑或 表达式1 表达式2 只有表达式1为假时才判断表达式2的值例 voidmain intnum 3 5 4 num 0 printf num d n num 输出 num 3 条件运算符 三目运算符 右结合 13级 条件表达式 执行过程 2 3 5条件运算符与条件表达式 例 max a b a b max a b a b 说明 在程序中常把条件表达式的值赋给某个变量 如 将ch中字母转换为小写字母charch getchar ch ch A 将x的绝对值赋给yy x 0 x x 在条件表达式中 各表达式的类型可以不同 此时 条件表达式值的类型为表达式2和表达式3中较高的类型 如 x y 1 1 5条件表达式的值为浮点型 说明 说明 条件运算符可以嵌套 这种嵌套是右结合的 例 inta 15 b 20 c 25 d 30 e e a b c c d b d e 30 例2 15读程 写出运行结果 includevoidmain inta 1 b 1 c 1 a a b b b c c c a printf 1 d n a b a b printf 2 d n a c a c a b c printf a n printf b n printf 4 d d d n a b c 运行结果 1 2 2 3b 4 2 2 4 例2 16 任意输入三个数 输出最大值 includevoidmain inta b c max scanf d d d 程序运行如下 25 748 最大数为 48 赋值运算符分两种 简单赋值运算符 复合赋值运算符 如 等优先级14 右结合性 赋值表达式 由赋值运算符连接起来式子作用 将表达式的值赋给变量 2 3 6赋值运算符和赋值表达式 简单赋值运算符为 由 连接的式子为 简单 赋值表达式 格式 作用 把右边表达式的值 赋给左边的变量 例 k i j i 2 j 3 k的值为 x a 5 b 8 x的值为 d e 2 1执行顺序是 先计算 再赋值 4 13 1 简单赋值运算符和赋值表达式 例 指出下列赋值表达式的错误 s x y 5 n a a 3 2 w 3 64E2 1 5 87 cos a sqrt a a b b y int i k 12 3 4 a a 7 赋值运算的类型转换 规则为 实型数据赋给整型变量时 只取整数部分 如 inti 1 5 2 2 x的值为0 000000 整型数据赋给实型变量时 以浮点形式取值 i值为1 如 floatx 1 4 1 4 1 4 字符型数据赋给整型变量时 整型变量的高位补的数与char的最高位相同 低八位为字符的ASCII码值 整型数据赋给字符型时 只把低8位赋给字符变量 如 K A k值为65 k 0000000001000001 例2 13 voidmain shortintx 300 chary y x printf y dy c n y y 输出结果 y 44y x y 2 复合赋值符及表达式 复合赋值运算符是在简单赋值运算符前加双目运算符构成 共10种 等 例 c c 3c 3x y 7x x y 7 设x y z的初始值分别为 10 20 30 x y z zx x y y z z 结果为 930设t的值为5t t t tt t t t t t 结果为 40 例2 14 voidmain inta b c a b c 5 printf a d b d c d n a b c a b 4 c 6 printf a d b d c d n a b c a b c printf a d b d c d n a b c a a a a printf a d n a 运行结果 a 5 b 5 c 5a 10 b 4 c 6a 20 b 4 c 6a 0 逗号运算符运算符 优先级15级最低 左结合用逗号运算符将各表达式连接起来的式子为逗号表达式 格式 如 a 3 5 a 10 a 8求解过程 先求表达式1的值 再求表达式2的值 最后求表达式n的值 表达式n的值作为整个逗号表达式的值 2 3 7逗号运算符和逗号表达式 例 逗号表达式的应用 includevoidmain inta 2 b 4 c y y c a b b c printf y d n y 输出结果 y 12 例 1 a 3 5 a 4 a 52 a 5 a a a 53 inta b a 2 b 5 a b a b 4 intx 10 y 3 z printf d n z x y x y 20 30 9 3 说明 1 用一个逗号表达式语句 可代替多个赋值语句 如a 0 b 1 c 2 可写成 a 0 b 1 c 2 2 在变量说明和函数参数表中逗号只是起分隔符作用printf d d d a b c printf d d d a b c b c 例 交换变量a b的值 a 1 0 b 2 0 voidmain floata b c a 1 0 b 2 0 printf a fb f a b c a a b b c printf a fb f a b a b c a a b b y x 1 0 1 0 2 0 习题 1 下面四个选项中 均是合法整型常量的选项是 A 160B 0 xcdfC 01D 0 x48a 0 xffff01a986 0122e50110 xe06680 x2 下面四个选项中 均是不合法浮点数的选项是 A 160 B 123C 018D e30 122e4 2123e4 234e3 e50 01e3 A B 习题 3 下面四个选项 均是合法转义字符的选项是 A B C 018 D 0 017 f 101 n xab x1f 4 下面四个选项中 均是非法常量的选项是 A ads B C 0 x18D 0 xabc 0fff 01 01177 0 0 xa 12 4560 xf a A A 习题 5 下列变量名中合法的是 A 3a4bB cos b C 6a7bD ch 566 下面错误的c常数是 A 0 0E0B 0 1E02C E 1D 1E17 下列表达式值为5的是 A sqrt 25 0 B pow 25 0 5 C 10 0 5D 25 10 C C 9 C语言中 char型数据在内存中是以形式存储的A 原码B 补码C ASC 码D 反码 10 执行以下语句的输出为 intx 15 y 5 printf d n x y 2 A 0B 1C 6D 12 习题 习题 11 判断表达式的类型 1 chara intb floatc doubled a b c d结果的类型为 2 float 5 3 结果的类型 3 doublex y int x y类型为 double float double 习题 voidmain inti 10 printf d d d d n i i i i 程序运行结果 12 12 12 11 习题 voidmain intc 5 printf d d d n c c c 8 c c 5 printf d n c c c 8 c 程序运行结果 12 14 612 上机作业 1 取圆周率为3 半径r为40 求圆面积 要求 圆周率定义为符号常量 半径用scanf 输入 分两行输出 先输出圆周率和半径 再输出面积 2 思考题 设学生常数为500 编程输出下列结果 引号也要输出 Howmanystudenthere 500 上机实验内容 1 实验教程 第二章实验一 1 3 4题2 输入两个数分别赋予变量a b 然后 交换变量a b的值再输出 上机作业 实验教程 第二章实验二 1 2 3题 编程题 任意输入三个数 输出最大值 用条件表达式 上机作业 实验教程 第三章实验一2 4题 编程 输入一个三位正整数 然后反向输出对应的数 如输入123 则输出321 要求 用 运算符 上机作业 实验与习题 第4章实验一3 4题 实验与习题 P63编程题的第4小题要求 用switch语句编写 上机作业 实验与习题 第5章实验一 1 编程题 任意输入一串字符 以 结束 分别统计其中字母 数字和其他字符的个数 改错 difinePI 3 1415926 voidMain 求圆面积 intr 40 scanf f n r area PI r r print PI dr d narea f n PI m definePI3 f f floatarea floatarea d include 第三章基本语句与顺序结构程序设计 3 1C语言程序的基本语句 3 2赋值语句 3 3数据的输入输出 下一章 上一章 目录 习题 3 1C语言程序的基本语句 C语言语句有五类 表达式语句 函数调用语句 控制语句 复合语句 空语句 是C语句结束标志 表达式语句 x x 1 z x j j 3 是表达式 不是语句 j j 3 是语句 i 自增运算表达式加分号n 10 复合赋值表达式加分号 函数调用语句 printf Good n 控制语句 if语句 while语句 return语句等 复合语句 用 括起来组成的一个语句 if a b c a a b b c 空语句 仅由一个 构成的语句 3 2赋值语句 是由赋值表达式加上分号构成的表达式语句 格式 注意 在赋值符 右边的表达式又可以是一个赋值表达式 如 a b c d 5 右结合 变量 表达式 赋值表达式是一种表达式 它可以出现在任何允许表达式出现的地方 而赋值语句则不能 如 if a b 0 c a if a b 0 c a printf d n z x y x y 赋值表达式和赋值语句的区别是 3 3数据的输入输出 C语言中数据的输入 输出是由函数来实现的 3 3 1格式输入输出函数printf 和scanf 3 3 2字符输入输出函数putchar 和getchar 1 格式输出函数 printf 函数 格式 printf 格式控制字符串 输出表列 功能 按格式控制字符串规定的格式 向标准输出设备 一般为显示器 输出输出表列中各输出项的值 printf 格式控制 输出表列 格式控制 由双引号括起来的字符串 用于指定输出格式 普通字符 按原样输出的字符格式说明 用来指定需输出数据的输出格式形式 修饰符 格式字符输出表列 需要输出的数据列表 彼此间用逗号分隔 可以是任意合法的表达式 printf a d tb f a b 格式说明 输出表列 若此例中inta 5 floatb 20 5 输出结果 a 5b 20 500000 继续 表3 1用于输出的修饰符 返回 表3 2用于输出的格式字符 返回 例 格式输出 printf 函数 printf a b 5 2f c 1 d格式符 作用 输出一个带符号的十进制整数 正数不输出符号 格式 d md ld其中 d 按整型数据的实际长度输出 m 字段宽度 ld 输出长整型数据 hd 输出短整型数据 作用 输出一个无符号的八进制 十六进制或十进制整数 例 longa 10 shortb 1 unsignedintc 65535 printf 5d o x n a a a printf hd ho hx hX hu n b b b b b printf d o x u n c c c c 1 原 10001 1 补 1111111111111111 2 o x和u格式符 输出结果 10 12 a 1 0 xffff FFFF 6553565535 177777 ffff 65535 作用 用来输出一个字符例 charch a inta 65 printf c d 3c n ch ch ch printf c t b 3d n a a 3 c格式符 输出结果 a 97 aA 65 一个整数 如果在0 127之间 也可用字符形式输出 系统会将该整数转换成对应的ASCII码字符 4 s格式符 作用 用来输出一个字符串格式 s ms m ns其中 m 输出的字符串占m列 n 输出字符串中左端n个字符 includevoidmain printf s n computer printf computer n printf 3s n 5 3s 8 2s n computer computer computer 例 输出结果 computer computercomputercom co 作用 以小数形式输出单 双精度实数 格式 f m nf其中 f 整数部分全部输出 隐含输出6位小数 m 字段宽度 整数 小数位数 数符 小数点 n 小数位数的个数 如 12 4f 5 f格式符 例 includevoidmain floatx 123 456 doubley 321 654321 printf f 7 2f 10 4f n x x x printf 5 3f n 0f n y y 输出结果 123 456001 123 46 123 4560321 654322 作用 以标准化的指数形式输出实数 小数点前必须有而且只能有一位为非0数字 格式 e m ne其中 e 默认输出6位小数m 字段宽度 指数部分占5列 n 小数部分的位数 6 e格式符 例 includevoidmain floatf 123 456 printf e n 10 2e n 10E n f f f 输出结果 1 234560e 0021 23e 002 1 234560E 002 输出表列中各输出项与各格式说明必须按照从左到右的顺序在类型上一一匹配 如果实型数据用 d输出 结果出错 整型数据用 f输出 结果为0 注意 输出表列可以是变量 常数 数组元素 函数引用及带运算符的表达式 例 printf f d d f 3 14 a b x cos y 当格式说明个数输出项时 输出不定值 注意 输出表列的求值顺序 VC是从右到左顺序求值的 输出仍从左至右 voidmain inti 8 printf d d d d n i i i i 除X E G格式符外 其他格式符必须用小写字母 输出结果 88 87 2 格式输入函数scanf 格式 scanf 格式控制 地址表列 功能 按格式控制所规定的格式 从指定的输入设备 一般为键盘 上把数据输入到指定的变量中 格式控制 普通字符 需原样输入的字符 通常不使用 格式说明 用于指定需输入数据的输入格式形式 修饰符 格式字符地址表列 给出各变量的地址 地址是由 运算得到的 是取地址运算符 得到变量在内存中的地址 单目运算符 右结合性 scanf d d 格式说明 地址表列 继续 表3 3用于输入的修饰符 返回 表3 4用于输入的格式字符 返回 格式输入的使用与注意 1 输入数据时采用的分隔符应与格式控制中的分隔符一致 格式控制中无普通字符时 输入数值型数据可用空格 Tab键 回车键作分隔符 例 inta b floatf e scanf d d 输入 23 456 23 Tab 456 23 456 23 67 612 9 a 12 b 24 scanf a d b d 注意 2 输入数据时不可规定精度 但可指定宽度 例 scanf 7 2f 输入 12346abc a b ch 3 输入格式符带有 表示该数据不赋值 例 scanf d d d 输入 12 34 567 则a 12 c 567 34被跳过 4 无符号数可用 d o x格式输入 注意 5 用C格式符输入字符时 空格 转义字符均为有效字符 例 scanf c c c 若键入ABC 则a A b B c C若键入A B C 则a A b c B若键入A B 则C未送 结果已出为 a A b c B 6 在下列情况下可认为数据输入结束 遇空格 回车 Tab键 遇宽度结束 非法输入 例3 1 includevoidmain inta floatb charc scanf d f c 运行 23 4 5y a 23 b 4 500000 c y23 4 5 y a 23 b 4 500000 c y按格式 6d 6f c送数 23 4 5y a 23 b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 明确旅游产品设计的方法和原则
- 阳光面对挫折主题班会
- 化妆品培训部年度总结
- 医疗团队展示
- 《光的干涉定》课件
- 适老智能家居系统界面
- 孵化场安全培训
- 社区工作地区发展模式社会工作专业教学案例宝典
- 永远的尹雪艳
- 透视-基础规律-1729733985977
- 合同到期欠款补充协议
- 泌尿系统结石的治疗
- 2024年学生公寓住宿协议
- 2024交通安全知识培训
- 淮阴工学院《产品形态设计》2021-2022学年第一学期期末试卷
- 2024年长沙市事业单位招聘计算机岗位专业知识试题
- 2024年中国家用燃气采暖炉市场调查研究报告
- 2024年中国心力衰竭诊断和治疗指南2024版
- 四年级数学上册 第五、六单元过关检测卷(苏教版)
- 2024陕西延长石油集团炼化公司操作工校园招聘170人高频难、易错点500题模拟试题附带答案详解
- 期末模拟练习(试题)-2024-2025学年苏教版二年级上册数学
评论
0/150
提交评论