C语言第3章顺序结构程序设计_第1页
C语言第3章顺序结构程序设计_第2页
C语言第3章顺序结构程序设计_第3页
C语言第3章顺序结构程序设计_第4页
C语言第3章顺序结构程序设计_第5页
已阅读5页,还剩123页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

教学内容 3 1基本数据类型3 2常用运算符和表达式3 3表达式及赋值语句3 4基本输入输出操作的实现3 5顺序结构程序设计应用实例教学要求 1 掌握整型数据 实型数据 字符数据使用规则2 掌握各种数据运算的运算符的运算 3 掌握scanf和printf函数的使用 4 掌握编写顺序结构程序的基本方法 第3章顺序结构程序设计 用C语言编写的源程序如下 main inta b c a 24 b 14 c a b printf d n c 程序运行结果 38该程序仅由一个main 主函构成 3 1基本数据类型 C语言提供的数据结构 是以数据类型形式出现的 一 数据类型分类1 基本类型整型 实型 又称浮点型 字符型 空类型2 构造类型数组类型 结构类型 共用类型 枚举型3 指针类型C语言中的数据 有常量和变量之分 它们分别属于上述这些类型 C数据类型 本章讨论基本类型数据 二 基本数据类型1 基本数据类型 整型 实型 又称浮点型 双精度实型 字符型 无值型 空类型 2 基本数据类型的标识符 int float double char void3 类型说明符除无值型以外的4种基本数据类型可以带有说明前缀 类型说明符有以下4种 1 signed 2 unsigned 3 long 4 short例如longinta b 三 常量和变量在C语言中 数据有常量和变量之分 1 常量的概念在程序运行过程中 其值不能被改变的量称为常量 常量的类型 可通过书写形式来判别 常量的分类 表达形式 1 整型常量6 432 76543 546783424 2 实型常量2 23 546 2487615247 3 057439 5 3 字符常量 a 6 M 4 符号常量WHI defineWHI Iamastudent definePI3 14WHI PI是符号常量 例3 1输出整型常量 字符常量的值main printf d n 349 printf d n 9 printf C n M 运行结果 349 9M 例3 2符号常量PI的使用 以标识符来代表的常量事先编译预处理命令define定义编译时先由系统替换为它所代表的常量 再进行编译例如 definePI3 14main floata b r r 10 a 2 PI r b PI r r printf a f b f n a b 编译前系统进行替换 例3 3符号常量WHI的使用 defineWHI Iamastudent main printf Iamastudent n printf s n Iamastudent printf s n WHI 运行结果 Iamastudent Iamastudent Iamastudent 格式控制字符串中的普通字符 照原样输出 2 变量的概念在程序运行过程中 其值可以被改变的量称为变量 变量的三个要素 1 变量名 每个变量都必须有一个名称 2 变量值 在程序运行过程中 变量值存储在内存中 在程序中 通过变量名来引用变量的值 3 变量的类型例如 inta 23 a 2个字节 变量的类型int变量名字 a变量的值 23在内存中存储单元占16位 二进制数值 例3 3输出变量的数值 main intx y x 5 y 3 printf d d n x y x 1 y 2 printf d d n x y 运行结果 5 31 2 x y是整型变量每个变量分配2个字节存储单元 将数值5 3分别存放到x y变量的存储单元 x y变量的值重新赋值 3 变量的定义在 语言中 要求对所有用到的变量 必须先定义 后使用 系统才可知道分配多大的存储空间 变量定义的一般格式 存储类型 数据类型变量名 变量名2 例如 inta1 a2 a3 例如 floatb1 b2 b3 4 标识符命名规则 语言中 用标识符来区分不同文件 函数 变量 1 标识符有效字符 只能由字母 数字和下划线组成 且以字母或下划线开头 2 标识符有效长度 TCV2 0标识符的有效长度为 个字符 随系统而异 但至少前 个字符有效 如果超长 则超长部分被舍弃 例如student11和student12的前 个字符相同 有的系统认为这两个变量 是一回事而不加区别 3 C语言的关键字不能用作变量名 4 标识符命名通常应选择能表示数据含义的英文单词 或缩写 作变量名 或汉语拼音字头作变量名 通过变量名就知道变量值的含义 做到 见名知意 例如 name xm 姓名sex xb 性别age nl 年龄salary gz 工资注意 C语言对英文字母的大小写敏感 即同一字母的大小写 被认为是两个不同的字符 变量名total与变量名TOTAL ToTaL totAl等不是同一个变量习惯上 变量名和函数名中的英文字母用小写 以增加可读性 3 1 1整型数据 一 整型变量1 整型变量分为类 1 基本整型 int 2 短整型 short int 3 长整型 long int 4 无符号整型 无符号型又分为 3种 unsigned int unsignedshortunsignedlong 二 整型变量占用内存字节数与值域1 整型变量占用的内存字节数在16位操作系统中占用 int型变量占2个字节值域占16位short型变量占2字节值域占16位long型变量占4字节值域占32位2 不同类型的整型变量值域占用内存位数为n的整型变量其值域 有符号为 2n 1 2n 1 1 无符号为 0 2n 1 三 各种整型变量的值域范围int型变量 值域为16位 32768 32767short int 值域为16位 32768 32767long int 值域为32位 2147483648 2147483647unsignedint 值域为16位 0 65535Unsignedshortint 值域为16位 0 65535Unsignedlongint 值域为32位 0 4294967295 整型数据类型 4 整型常量 整常数 三种表示形式 1 十进制例如 10 36 2 八进制 以数字0开头 例如 012 十进制10 3 十六进制 以数字0 小写字母x开头 例如 0 x36 十进制54 5 整型常量分类 1 基本整型 其数据范围 32768 32767 与int型变量一样 2 长整型 在数值后面加字母L 小写字母l 其取值范围可达 2147483648 2147483647例如 32769 123L 315L等 6 整型数据在内存中的存放 数值是以补码表示的 一个正数的补码与原码相同 一个负数的补码求法 原码的二进制形式 取反求得反码 再加1 得到负数的补码 例如 8的原码 1000000000001000 求反码 1111111111110111 补码 1111111111111000 例3 4输出不同进制整型常量 includemain printf 0 x80 d n 0 x80 printf 0200 d n 0200 printf 128 d n 128 printf 128 o n 128 运行结果 0 x80 1280200 128128 128128 200 不输出前缀数字 以数字 开头 3 1 2实型数据 1 实型常量 实数 又称浮点数 表示形式 1 十进制形式例如 3 14 9 8 2 指数形式E e 例如 3 02 5 3 02 105 34 42367750 7 34 42367750 107 实型常量不分 单精度 float型和 双精度 double型 一个实型常量 可以赋给一个实型变量 float型或double型 例3 5实型常量的使用 includemain printf a f n 32 766 printf b e n 1 7e 37 运行结果 a 32 766000b 1 700000e 037 2 实型变量分类 1 单精度型变量float型变量占4字节 32位 提供7位有效数字值域 3 4e 38 3 4e 38 2 双精度型变量double型变量占8个字节 64位 提供15 16位有效数字值域 1 7e 308 1 7e 308 4 实型数据在内存中的存放形式 一个单精度实型数据 float 在内存中占用 个字节 32位 存放数据的数值范围 3 4e 38 3 4e 38 数值的有效数字7位例如数值 56783 4562 0 567834562e 5在内存中的浮点数存放形式 5 567834562 0831前8位后24位 实型数据类型 例3 6运行以下程序 查看运行结果 数值的有效数字7位尾数7031不是有效数值 例3 7实型变量的使用 includemain floatx y z x 42 67 y 12 3 z x y printf z1 f n z z y x printf z2 f n z 程序运行结果 z1 3 469106z2 0 288259 小数点后6位 3 1 3字符数据 1 字符常量的定义用一对单引号括起来的单个字符称为字符常量 例如 A 7 等 2 转义字符 语言还允许使用一种特殊形式的字符常量 就是以反斜杠 开头的转义字符 n b r t f 0 v ddd xhh注意 如果反斜杠或单引号本身作为字符常量 必须使用转义字符 3 以 开头的字符在printf函数中控制输出格式 n换行 t横向跳格 下一个输出区 v竖向跳格 b退格 r回车 f走纸换页 反斜杠字符 单引号 ddd1到3位8进制数所代表的字符 如 101 A xhh1到2位16进制数所代表的字符 例3 9用转义字符输出字符和不可打印字符 main printf ABC tabc txyz n printf abc bxyz n 程序运行结果如下 4 字符变量 关键字为char 字符变量类型 占用1字节内存单元 1 变量值的存储将一个字符常量存储到一个字符变量中 实际上是将该字符的ASCII码值 无符号整数 存储到内存单元中 2 变量值的特性字符数据在内存中存储的是字符的ASCII码 一个无符号整数 其形式与整数的存储形式一样 例如 charch1 ch2 定义变量 ch1 ch2 ch1 a 给字符变量赋值 ch2 b 字符数据 a b 的ASCII码值97 98 一个无符号整数 分别存放在变量ch1 ch2所占用内存存储单元中 其形式与整数的存储形式一样 ch1ch2 97 98 字符数据类型 3 一个字符型数据 既可以字符形式输出 也可以整数形式输出 例3 10字符变量的字符形式输出和整数形式输出 main charch1 ch2 ch1 a ch2 b printf ch1 c ch2 c n ch1 ch2 printf ch1 d ch2 d n ch1 ch2 程序运行结果 ch1 a ch2 bch1 97 ch2 98 4 允许对字符数据进行算术运算 此时就是对它们的ASCII码值进行算术运算 例3 11字符数据的算术运算 main charch1 ch2 ch1 a ch2 B 等价于ch1 97 ch2 66 printf ch1 d ch1 32 字母的大小写转换 printf ch2 d n ch2 32 printf ch1 c ch2 c n ch1 32 ch2 32 运行结果 ch1 65 ch2 98ch1 A ch2 b 例3 12用字符形式输出一个大于256的数值main charch1 a printf ch1 200 d n ch1 200 printf ch1 200 c n ch1 200 printf ch1 256 d n ch1 256 printf ch1 256 c n ch1 256 程序运行结果 ch1 200 297ch1 200 ch1 256 353ch1 256 a 5 字符串常量 1 字符串常量的概念和字符串长度字符串常量 是用一对双引号括起来的若干字符序列 字符串长度 字符串中字符的个数称为字符串长度 空串 长度为0的字符串 即一个字符都没有的字符串 表示为 一对紧连的双引号 例如字符串常量 Howdoyoudo 长度为14 空格也是一个字符 Goodmorning 长度为13如果反斜杠和双引号作为字符串中的有效字符 则必须使用转义字符 例 C msdos v6 22 C msdos v6 22 Isay Goodbye Isay Goodbye 例3 13输出字符串常量 includemain char p 定义一个指针变量 p Iamastudent printf s n p printf s n Isay Goodbye 运行结果 Iamastudent Isay Goodbye 6 字符串的存储C语言规定 在存储字符串常量时 由系统在字符串的末尾自动加一个 0 作为字符串的结束标志 如果有一个字符串为 CHINA 则它在内存中的实际存储如下所示 CHINA 0最后一个字符 0 是系统自动加上的 它占用 字节而非 字节内存空间 7 字符常量 A 与字符串常量 A 的区别 1 定界符不同 字符常量使用单引号 A 而字符串常量使用双引号 2 长度不同 字符常量的长度固定为1 而字符串常量的长度 可以是0 也可以是某个整数 3 存储要求不同 字符常量存储的是字符的ASCII码值 而字符串常量 除了要存储有效的字符外 还要存储一个结束标志 0 3 2常用运算符和表达式 1 运算符C语言具有丰富的运算符 TurboC提供了44种数据操作运算符 其使用范围很宽 运算符是一种向编译程序说明特定的运算或操作的符号 每一种运算符都具有特定的数据操作规则 2 运算符的分类 1 按运算符要求运算对象的个数分类 单目运算符 双目运算符 三目运算符 2 按其数据操作功能分类 算术运算符 关系运算符 逻辑运算符 位运算符 C的特殊运算符 3 运算符的优先级当一个表达式中出现多个运算符时 表达式的求值运算按运算符的优先级别从高到低的顺序执行 在C语言中 将44种运算符的优先级从高到低共分为15个等级 如书后表所示 4 运算符的结合性 1 运算符的左结合性 当一个操作数两侧的运算符具有相同的优先级时 操作数先与左边的运算符结合 即自左至右的结合方向 2 运算符的右结合性 即自右至左的结合方向 除单目运算符 赋值运算符和条件运算符是右结合性外 其它运算符都是左结合性 初等运算符 单目运算符 类型 算术运算符 关系运算符 逻辑运算符 条件运算符 赋值运算符 逗号运算符 各类运算符的优先级 从高至低 高 低 5 表达式用运算符和括号将运算对象 常量 变量和函数等 连接起来的 符合 语言语法规则的式子 称为表达式 1 简单表达式 表达式中只有一个运算符的表达式 被称为普通表达式 或称为简单表达式 2 复合表达式 有多个运算符构成的表达式 被称为复合表达式 3 特殊表达式 在使用中 单个常量 变量和函数 返回值 都可以看作是一个表达式 称为特殊表达式 6 表达式求值每一个C的合法表达式 经过运算一定能得到一个确定的数值 这个数值被称为表达式的值 复合表达式的求解过程如下 1 按运算符的优先级高低次序执行 例如 先乘除后加减 2 如果在一个运算对象 或称操作数 两侧的运算符的优先级相同 则按 语言规定的结合方向 结合性 进行 3 2 1赋值运算 1 赋值运算符赋值运算符 它的作用是将一个表达式的值赋给一个变量 给变量赋值的一般形式为 变量 表达式2 赋值运算符的优先级赋值运算符的优先级低于算术运算符 也低于关系运算符和逻辑运算符 3 赋值运算结合方向赋值运算结合方向 自右向左结合 4 赋值表达式由赋值运算符或复合赋值运算符 将一个变量和一个表达式连接起来的表达式 称为赋值表达式 1 赋值表达式一般格式变量赋值运算符表达式例如 a 5 b x 3 y 2 赋值表达式的值任何一个表达式都有一个值 赋值表达式也不例外 被赋值变量的值 就是赋值表达式的值 例如 a 5赋值表达式 变量a的值是 赋值表达式的值是 例如 intx floaty x 5y float 5 2如果表达式值的类型 与被赋值变量的类型不一致 但都是数值型或字符型时 系统自动地将表达式的值转换成被赋值变量的数据类型 然后再赋值给变量 表达式x 5的值 5变量x的值 5表达式y float 5 2的值 2 5变量y的值 2 5 3 赋值运算结合方向 右 左例如 x y 65等价于x y 65 操作数y是先与右边的运算符结合 即先将65赋值给变量y变量y的值是65表达式y 65的值是65 再做左边赋值运算 即将表达式y 65的值65 赋值给变量x变量x的值是65表达式x y 65的值是65 5 复合赋值运算复合赋值运算符 是由赋值运算符之前再加一个双目运算符构成的 1 复合赋值运算的一般格式为 变量双目运算符 表达式 复合赋值运算符它等价于 变量 变量双目运算符 表达式 例如 y x 6等价于y y x 6 不是y y x 6 当表达式为简单表达式时 表达式外的一对圆括号才可缺省 否则可能出错 例如 x a等价于x x ax 3等价于x x 3 2 10种复合赋值运算符C语言规定的10种复合赋值运算符如下 复合算术运算符 复合位运算符 例3 17输出复合赋值运算结果 main intx y m x 10 y 3 m 24 m x 4 printf d n m printf f n float x y x 1 y x 2 printf d d n x y x y 运行结果 43 3333330 1 m m x 4 例3 18输出多个算术表达式的结果 includemain inta b c1 a 5 b 8 printf a1 d a2 d n a b a b printf a3 d n a 程序运行结果 a1 21 a2 13a3 13 先运算a b的值是13 变量a的值是13再运算a b的值是21 3 2 2算术运算 1 五种基本算术运算符 加法 减法 取负 乘法 除法 求余数 2 运算符的优先级与结合性 1 算术运算符的优先级先取负 再乘 除 求余 最后加 减法 2 运算符的结合性为 自左至右的结合方向 3 算术表达式由算术运算符和括号将运算对象连接起来形成的运算式子 称为算术表达式例如 3 6 9 x y 2 14 算术表达式的值除C语言的特定规则外 C语言中算术运算与数学中的算术运算规则相同 经过有限次加减除等运算 最后求得表达式的值 例如 表达式3 6 9的值 57 5 C语言算术运算的特定规则 1 两个整数相除 其商为整数 小数部分被舍弃 例如 表达式 5 2的值为2 不是2 5 而表达式 12 6 3的值为4 2 不是4 2 关于求余数运算 要求求余运算符两侧的操作数均为整型数据 否则出错 例如 表达式 5 3的值为2 而5 3 2出错 不是合法表达式 3 C语言的整型 实型和字符型数据间可以混合运算 例3 14输出算术表达式的结果 includemain inta b c1 floatx y z a 85 b 18 x 42 6 y 28 3 c1 a b 9 a b z x y x y 2 1 printf c1 d n c1 printf z1 f n z 程序运行结果 c1 49z1 39 172222 a b的值是4 4乘9得36 a b的值1336 13得49 混合运算中数据类型的转换 6 数据类型转换 1 横向向左的箭头 表示必须的转换 char和short型必须转换成int型 float型必须转换成double型 2 纵向向上的箭头 表示不同类型的转换方向 1 整型 实型和字符型数据间可以混合运算 因为字符数据与整型数据可以通用 一个运算符两侧的操作数的数据类型不同 则按 先转换 后运算 的原则 首先将数据自动转换成同一类型 然后进行运算 例如 int型与double型数据进行混合运算 则先将int型数据转换成double型 然后在两个同类型的数据间进行运算 结果为double型 注意箭头方向只表示数据类型由低向高转换 例3 15整型 实型数据间混合运算 includemain inta floatx a 35 x 42 63 printf f n a x printf f n x a 程序运行结果 77 6300011 218000 自动将X的数据转换成double型 再将int型变量a数据转换成double型 进行加法运算 运算结果为double型 7 数据类型强制转换数据类型允许强制转换 一般格式为 数据类型 表达式 例如 int x y 将x y的结果转换成int型 1 当被转换的表达式是一个简单表达式时 外面的一对圆括号可以缺省 例如 double a 将变量a的值转换成double型 float 5 2 等价于 float 5 2 将5转换成实型再除以2 2 5 float 5 2 将5整除2的结果 2 转换成实型数 2 0 2 强制转换类型得到的是一个所需类型的中间量 原表达式类型并不发生变化 例如 double a只是将变量a的值转换成一个double型的中间量 其数据类型并未转换成double型 例3 16数据类型强制转换 includemain inta floatx y a 85 x 42 6 y 19 3 printf 1 f t float 5 2 printf 2 f n float 5 2 printf 3 d t int x y printf 4 f n double a 程序运行结果 1 2 5000002 2 0000003 614 85 000000 3 2 3自增自减运算 1 自增 自减 运算自增运算使单个变量的值增 自减运算使单个变量的值减 2 用法与运算规则 1 前置运算 运算符放在变量之前 变量 变量 先使变量的值增 或减 然后再以变化后的值参与其它运算 即先增 减 后运算 2 后置运算 运算符放在变量之后 变量 变量 变量先参与其它运算 然后再使变量的值增 或减 即先运算 后增 减 3 结合方向 右 左 3 自增 自减运算说明 1 自增 自减运算符 不能用于常量和表达式 例如 5 a b 等都是非法的 2 自增 自减运算 常用于循环语句中 使循环控制变量加 或减 以及指针变量中 使指针指向下 或上 一个地址 3 在表达式中 连续使同一变量进行自增或自减运算时 很容易出错 所以最好避免这种用法 例如 a a a b 例3 20求下列表达式的值设inta b a 3 b 4 1 a b 变量a 4 表达式值 8 变量b 5 2 a a a等价于 a a a表达式值 9 变量a 5 3 a a a 变量a 5 表达式值 15 例3 21自增自减运算符的用法与运算规则示例main intx 6 y printf x d n x 输出x的初值 y x 前置运算 printf y x x d y d n x y y x 后置运算 printf y x x d y d n x y 程序运行结果 x 6y x x 7 y 7y x x 6 y 7 例3 22由自增自减组成的表达式 includemain inta floatx a 16 x 12 6 printf a1 d a2 d a3 d n a a a printf a d n a printf x1 f x2 f x3 f n x x x 程序运行结果 a1 18 a2 17 a3 16a 19x1 9 600000 x2 10 600000 x3 11 600000 例3 23由自增自减组成的表达式main inta b floatx y a 16 x 12 6 a x printf 1 a d x f n a x a x printf 2 a d x f n a x b a y x printf 3 b d y f n b y printf 4 a d x f n a x 程序运行结果 1 a 17 x 13 6000002 a 18 x 14 6000003 b 18 y 14 6000004 a 19 x 15 600000 1 条件运算符 2 条件表达式一般格式 表达式1 表达式2 表达式3条件表达式中的 表达式1 表达式2 表达式3 的类型 可以各不相同 intx y a b charc x 56 y 34 a 23 b 32 x y C a b 3 2 4条件运算符 3 条件运算规则 如果 表达式1 的值为非0值 即逻辑真 运算结果等于 表达式2 的值 否则 运算结果等于 表达式3 的值 4 条件运算符优先级与结合性条件运算符的优先级 高于赋值运算符 但低于关系运算符和算术运算符 其结合性为 从右到左 例如 x y x y a b a b a b等价于 x y x y a b a b a b 设x 5y 8a 34b 12表达式的值 22 例3 24从键盘上输入一个字符 如果它是大写字母 则把它转换成小写字母输出 否则 直接输出 main charch printf Inputacharacter scanf c 1 逗号运算符 及其表达式c语言提供一种用逗号运算符 连接起来的式子 称为逗号表达式 逗号运算符又称顺序求值运算符 2 逗号表达式一般形式表达式 表达式 表达式n3 求解过程自左至右 依次计算各表达式的值 最后一个表达式的值即为整个逗号表达式的值 3 2 5逗号运算符 1 逗号表达式 a 3 5 a 4的值先求解a 3 5 得a 15 再求a 4 60 所以逗号表达式的值为 60 2 逗号表达式 a 3 5 a 4 a 5的值先求解a 3 5 得a 15 再求a 4 60 最后求解a 5 20 所以逗号表达式的值为 20 注意 并不是任何地方出现的逗号 都是逗号运算符 很多情况下 逗号仅用作分隔符 例如 inta b c printf d d n a b b 3 1 表达式的定义用运算符和括号将运算对象 常量 变量和函数等 连接起来的 符合 语言语法规则的式子 称为表达式 1 简单表达式 表达式中只有一个运算符的表达式 被称为普通表达式 或称为简单表达式 2 复合表达式 有多个运算符构成的表达式 被称为复合表达式 3 特殊表达式 在使用中 单个常量 变量和函数 返回值 都可以看作是一个表达式 称为特殊表达式 3 3表达式及赋值语句 2 表达式求值每一个C的合法表达式 经过运算一定能得到一个确定的数值 这个数值被称为表达式的值 复合表达式的求解过程如下 1 按运算符的优先级高低次序执行 例如 先乘除后加减 2 如果在一个运算对象 或称操作数 两侧的运算符的优先级相同 则按 语言规定的结合方向 结合性 进行 3赋值语句 1 赋值语句的格式 变量名 表达式 或表达式 2 注意区分赋值语句和赋值表达式的区别 例如a b 2 这是赋值表达式 a b 2 这是赋值语句 a 这是表达式 a 这是赋值语句 等价与a a 1 3 4 1输入输出的概念1 从计算机向外部输出设备 如显示屏 打印机 磁盘等 输出数据称为 输出 从外部向输入设备 如键盘 磁盘 光盘 扫描仪等 输入数据称为 输入 2 C语言本身不提供输入输出语句 输入和输出操作是由函数来实现的 在C标准函数库中提供了一些输入输出函数 例如 printf函数和scanf函数 3 4基本输入输出操作的实现 3 在使用C语言库函数时 要用预编译命令 include 将有关的 头文件 包括到用户源文件中 在调用标准输入输出库函数时 文件开头应有以下预编译命令 include或 include stdio h 4 允许在使用printf和scanf两个函数时可不加 include命令 一 单个字符的输入函数1 getchar 函数的格式 getchar 2 getchar 函数的作用 从系统隐含的输入设备 如键盘 输入一个字符 3 说明 1 getchar 函数只能用于单个字符的输入 一次输入一个字符 2 程序中要使用getchar 函数 必须在程序 或文件 的开头加上编译预处理命令 include stdio h 3 4 2字符输入输出函数 例5 2getchar 函数的使用 include stdio h 文件包含 main charch printf Pleaseinputacharacter ch getchar 输入1个字符并赋给ch printf c ch 输出一个字符 printf n 程序运行情况如下 Pleaseinputacharacters b b 二 单个字符的输出函数1 putchar 函数的格式 putchar ch 其中ch可以是一个字符变量或常量 也可以是一个转义字符 2 putchar 函数的作用 向终端输出一个字符 3 说明 1 putchar 函数只能用于单个字符的输出 且一次只能输出一个字符 2 在程序中使用putchar 函数 务必牢记 在程序 或文件 的开头加上编译预处理命令 也称文件包含命令 include stdio h 表示要使用的函数 包含在标准输入输出 stdio h 头文件中 例5 3putchar 函数的格式和使用方法 include stdio h 文件包含命令 main charch1 N ch2 E ch3 W putchar ch1 putchar ch2 putchar ch3 putchar n putchar ch1 putchar n putchar E putchar n putchar ch3 putchar n 程序运行结果如下 NEWNEW 返回本章首页 3 4 3格式输入输出函数 一 printf 函数1 printf 函数的一般格式printf 格式字符串 输出项表 2 函数的作用 输出一个或多个任意类型的数据 3 格式字符串 格式字符串 也称 转换控制字符串 可以包含三种字符 格式指示符 转义字符 普通字符 1 格式指示符一般形式如下 标志符 宽度 小数宽度 类型修饰符 2 转义字符printf 函数中的 n 就是转义字符 输出时产生一个 换行 操作 还有 t r b等 3 普通字符除格式指示符和转义字符之外的其它字符 普通字符原样输出 4 输出项表输出项表内容 常量 变量 表达式 输出项表是可选的 若输出的数据不止1个 相邻2个之间用逗号分开 下面的printf 函数都是合法的 1 printf Iamastudent n 普通字符转义字符 2 printf d 3 2 格式指示符表达式 3 printf a fb 5d n a b 3 4 printf d c n 56 56 2个输出项之间用逗号分开 此处逗号也是普通字符 5 格式指示符 d以十进制输出整数 md以十进制输出整数 数据最小宽度占m位 若数值长度m 输出原整数 md以十进制输出整数 数据最小宽度占m位 若数值长度m 输出原整数 例如 printf 5d 5d n 456 567 输出结果 456 567 ld以十进制形式输出长整型数据 o以八进制无符号形式输出整数 不输出前导符0 printf o n 128 输出结果 200 lo以八进制无符号形式输出长整型数不输出前导符0 x以十六进制无符号形式输出整数 不输出前导符0 x lx以十六进制无符号形式输出长整型数 不输出前导符0 x u以无符号十进制形式输出整数 printf u n 2 输出结果 65534 lu以无符号十进制形式输出长整型数 c用来输出1个字符 s用来输出一个字符串 ms按m宽度输出字符串 若串长 m 则照字符串原样输出 若串长 m 则左边补空格 ms类似 ms 若串长 m 则字符串向左靠 右边补空格 m ns靠右输出字符串左边的n个字符 左补空格 n m m ns靠左输出字符串左边的n个字符 右补空格 n m f以小数形式输出实数 m nf输出宽度为m 其中小数为n位 若数值长度 m 则靠右输出 左边补空格 m nf同 类似 表示靠左输出 右边补空格 e以指数形式输出实数 m ne此处m n 同f格式 m ne此处m n 同f格式 g根据数值大小自动选择f格式或e格式中占用宽度小的一种 6 使用说明 1 格式控制中的格式说明符 必须按从左到右的顺序 与输出项表中的每个数据一一对应 否则出错 例如 下面使用格式是错误的 printf str s f d i f n Internet 1 0 2 0 3 5 CHINA 2 格式字符x e g可以用小写字母 也可以用大写字母 使用大写字母时 输出数据中包含的字母也大写 除了x e g格式字符外 其它格式字符必须用小写字母 例如 f不能写成 F 3 格式字符紧跟在 后面就作为格式字符 否则将作为普通字符使用 原样输出 例如 printf c c f f n c f 中的第一个c和f 都是普通字符 4 所谓无符号形式是指 不论正数还是负数 系统一律当作无符号整数来输出 unsignedinta 65535printf a u n a 输出结果 65535 7 格式字符使用实例 1 d 以带符号的十进制整数形式输出 main intn1 123 longintn2 123456 printf d 5d 5d 2d n n1 n1 n1 n1 printf n2 d n n2 printf ld 8ld 5d n n2 n2 n2 程序运行结果 123 123 123 123n2 16908411123456 123456 123456对long型数据应当用 ld格式输出 对长整型数据也可以指定字段宽度 如将上面printf函数中的 ld 改为 8ld 则输出为 123456 8列 一个int型数据可以用 d或 ld格式输出 2 d o x u形式输出整数 main unsignedinta 65535 intb 2 printf a d o x u n a a a a printf b d o x u n b b b b 3 f 以小数形式输出单精度和双精度实数 main floatf 123 456 doubled1 d2 d1 1111111111111 111111111 d2 2222222222222 222222222 printf f 12f 12 2f n f f f printf 12 2f 2f n f f printf d1 d2 f n d1 d2 程序运行结果如下 123 456001 123 456001 123 46123 46 123 46d1 d2 3333333333333 333010数据123 456001中的001是无意义的数据3333333333333 333010中的010是无意义 4 e 以标准指数形式输出实数指数形式尾数中的整数部分大于等于1 小于10 小数点占一位 尾数中的小数部分占6位 指数部分占5位 如e 003 其中e占一位 指数符号占一位 指数占3位 标准指数形式共计13位 5 g 让系统根据数值的大小 自动选择 f或 e格式 且不输出无意义的零 例如 floata 123 468 printf f e g n a a a 输出结果 123 468000 1 234680e 002 123 468 6 c 输出一个字符 只占一列宽度 main charc A inti 65 printf c c 5c d n c c c printf i d c i i 程序运行结果如下 c A A 65i 65 AC语言中 整数以字符形式输出时 系统首先求该数与256的余数 然后将余数作为ASCII码 转换成相应的字符输出 字符数据也可以整数形式输出 7 s 输出一个字符串 main printf s 5s Internet Internet printf 10s n Internet printf 10 5s Internet printf 10 5s Internet printf 4 5s n Internet 程序运行结果如下 Internet Internet Internet Inter Inter Inter说明 系统输出字符和字符串时 不输出单引号和双引号 例5 4输出格式控制符的作用 includemain inta 3102 longintb 74228 shortintc 625 printf a1 d n a printf a2 o n a printf a3 x n a printf b ld n b printf c d n c 运行结果 a1 3102a2 6036a3 c1eb 74228c 625 例5 5输出格式控制符的作用 includemain unsignedintd 65433 floatf 2 34679865858988 doubleg 2 34679865858988 printf d u n d printf f1 e n f printf f2 f n f printf g f n g printf n 运行结果 d 65433f1 2 346799e 000f2 2 346799g 2 346799 例5 6已知圆柱体的底半径 radius 1 5 高 high 2 0 求其体积 main floatr 1 5 h 2 0 vol vol 3 14159 r r h 求体积 printf vol 7 2f n vol 在程序中给计算机提供数据 可以用赋值语句 也可以用输入函数 在C语言中 可使用scanf 函数 通过键盘输入 给计算机主机同时输入多个 任意的数据 二 格式化输入函数 1 scanf 函数的一般格式scanf 格式字符串 输入项首地址表 1 格式字符串格式字符串可以包含3种类型的字符 格式指示符 空白字符 空格 Tab键和回车键 和非空白字符 又称普通字符 格式指示符与printf 函数的相似 空白字符作为相邻2个输入数据的缺省分隔符 非空白字符 又称普通字符 在输入有效数据时 必须原样一起输入 2 输入项首地址表输入项首地址表由若干个输入项首地址组成 相邻2个输入项首地址之间 用逗号分开 变量首地址的表示方法 输入项首地址表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论