




已阅读5页,还剩68页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C程序设计 第三版 学好程序设计语言的唯一途径是上机练习 你的编程能力与你在计算机上投入的时间成正比 课程要求 课前请做好预习 保持课堂安静 头脑清醒 思维活跃 做好课堂笔记 认真 独立 按时完成并提交作业 重视上机实践 有效利用宝贵的上机时间 4 1C语句概述4 2程序的三种基本结构4 3赋值语句4 4数据输入输出的概念及在 语言中的实现4 5字符数据的输入输出4 6格式输入与输出4 7顺序结构程序设计举例 第4章最简单的C程序设计 顺序程序设计 c语言的语句用来向计算机系统发出操作指令 一个语句经编译后产生若干条机器指令 一个实际的程序应当包含若干语句 应当指出 C语句都是用来完成一定操作任务的 声明部分的内容不应称为语句 如 inta 不是一个C语句 它不产生机器操作 而只是对变量的定义 4 1C语句概述 5类 控制语句函数调用语句表达式语句空语句复合语句 一个C程序可以由若干个源程序文件组成 一个源文件可以由若干个函数和预处理命令以及全局变量声明部分组成 一个函数由函数首部和函数体组成 函数体由数据声明和执行语句组成 C语句分为 c程序结构 程序应该包括数据描述 由声明部分来实现 和数据操作 由语句来实现 数据描述主要定义数据结构 用数据类型表示 和数据初值 数据操作的任务是对已提供的数据进行加工 C语句可以分为以下5类 1 控制语句 完成一定的控制功能 c只有9种控制语句 它们是 if else 条件语句 for 循环语句 hile 循环语句 do hile 循环语句 continue 结束本次循环语句 break 中止执行switch或循环语句 s itch 多分支选择语句 goto 转向语句 return 从函数返回语句 上面9种语句中的括号 表示其中是一个条件 表示内嵌的语句 例如 if else 的具体语句可以写成if x y z x elsez y 2 函数调用语句 由一个函数调用加一个分号构成一个语句 例如 printf thisisacstate ent 3 表达式语句 由一个表达式加一个分号构成一个语句 最典型的是 由赋值表达式构成一个赋值语句 例如 a 3是一个赋值表达式 a 3 是一个赋值语句 一个语句必须在最后出现分号 分号是语句中不可缺少的一部分 例如 i i 1 是表达式 不是语句 i i 1 是语句 任何表达式都可以加上分号而成为语句 例如 i 是一语句 作用是使i值加1 又如 x y 也是一个语句 作用是完成x y的操作 它是合法的 但是并不把x y的和赋给另一变量 所以它并无实际意义 4 空语句 下面是一个空语句 即只有一个分号的语句 它什么也不做 有时用来做被转向点 或循环语句中的循环体 循环体是空语句 表示循环体什么也不做 5 复合语句 可以用 把一些语句括起来成为复合语句 又称分程序 如下面是一个复合语句 z x y t z 100 printf f t 注意 复合语句中最后一个语句中最后的分号不能忽略不写 C语言允许一行写几个语句 也允许一个语句拆开写在几行上 书写格式无固定要求 赋值语句是由赋值表达式加上一个分号构成 格式 1 C语言中的赋值号 是一个运算符 在其他大多数语言中赋值号不是运算符 4 2赋值语句 变量 表达式 2 赋值表达式与赋值语句作为赋值表达式可以包括在其他表达式之中例如 按语法规定if后面的 内是一个条件 例如可以是 if x 0 其作用是 先进行赋值运算 将b的值赋给a 然后判断a是否大于0 如大于0 执行t a 在if语句中的 a b 不是赋值语句而是赋值表达式 if a b 0 t a if a b 0 t a 在if的条件中不能包含赋值语句 if a b 0 t a 例如 错 从计算机向外部输出设备 如显示屏 打印机 磁盘等 输出数据称为 输出 从外部向输入设备 如键盘 磁盘 光盘 扫描仪等 输入数据称为 输入 C语言本身不提供输入输出语句 输入和输出操作是由函数来实现的 在c标准函数库中提供了一些输入输出函数 例如 printf函数和scanf函数 printf和scanf不是C语言的关键字 而只是函数的名字 4 3数据输入输出的概念及在C语言中的实现 如果在源程序中有printf函数 在编译时并不把它翻译成目标指令 而是在执行阶段中调用已被连接的函数库中的printf函数 由于c编译系统与c函数库是分别进行设计的 因此不同的计算机系统所提供函数的数量 名字和功能是不完全相同的 不过 有些通用的函数 如printf和scanf等 各种计算机系统都提供 成为各种计算机系统的标准函数 在使用c语言库函数时 要用预编译命令 include 将有关的 头文件 包括到用户源文件中 在头文件中包含了与用到的函数有关的信息 例如 使用标准输入输出库函数时 要用到 stdio h 文件 文件后缀 h 是head的缩写 include命令都是放在程序的开头 因此这类文件被称为 头文件 在调用标准输入输出库函数时 文件开头应有以下预编译命令 include或 include stdio h 4 4字符数据的输入输出 我们先介绍c标准I O函数库中最简单的 也是最容易理解的字符输入输出函数putchar 和getchar 再介绍格式输入输出函数printf 和scanf 函数 putchar函数的作用 向终端输出一个字符 例如 putchar c 它输出字符变量c的值 c可以是字符型变量或整型变量 例4 1输出单个字符 4 4 1putchar函数 字符输出函数 putchar c includemain chara b c a b b o c y putchar a putchar b putchar c 也可以输出控制字符 如putchar n 输出一个换行符 使输出的当前位置移到下一行的开头 如果将例4 1程序最后一行改为 运行结果 boy putchar a putchar n putchar b putchar n putchar c putchar n 也可以输出其他转义字符 如 putchar 101 输出字符 a putchar 输出单引号字符 putchar 015 输出回车 不换行 使输出的当前位置移到本行开头 则输出结果为 boy 4 4 2getchar函数 字符输入函数 作用 是从终端 或系统隐含指定的输入设备 输入一个字符 getchar函数没有参数 其一般形式为 函数的值 从输入设备得到的字符 getchar 例4 2输入单个字符 includemain charc c getchar putchar c 运行程序 aa 请注意 getchar 只能接收一个字符 getchar函数得到的字符可以赋给一个字符变量或整型变量 也可以不赋给任何变量 作为表达式的一部分 例如 例4 2第4 5行可以用下面一行代替putchar getchar 因为getchar 的值为 a 因此putchar函数输出 a 也可以用printf函数输出 printf c getchar 4 5 1printf函数 格式输出函数 它的作用 向终端 输出设备 输出若干个任意类型的数据 putchar只能输出一个字符 而printf可以输出多个数据 且为任意类型 程序中用到printf函数时要在程序的开头部分用以下的命令 include或 include stdio h 4 5格式输入与输出 printf函数的一般格式为 如 printf d c n i c 1 格式控制 用双引号括起来的字符串 包括两种信息 格式说明 由 和格式字符组成 如 d f等 作用 将输出的数据转换为指定的格式输出格式说明总是由 字符开始的 普通字符 即需要原样输出的字符 例如上面printf函数中双引号内的逗号 空格和换行符 printf 格式控制 输出列表 变量的值以及处理的结果代入相应 d位置 并按要求的格式输出 例如 输出 5 2 7 5 2 5 2 格式说明 除了 d外的普通字符串按原样输出 输出列表 变量的值代入相应 d位置 并按要求的格式输出 2 格式控制 d s c f e u对不同类型的数据用不同的格式字符 常用的有以下几种格式字符 printf 格式控制 输出列表 d格式符 用来输出十进制整数 常用的格式有 例如 inta 567 b 12345 printf a 4d b 4d a b 注 本教案 表示空格 格式控制符 d 的应用举例 上述程序的输出结果是 a 567 b 12345 md m为指定的输出宽度 如果整数的位数小于m 则左补空格 如果整数的位数大于m 则按实际的位数输出 m nf 指定输出的实数的宽度为m 其中n位为小数位 如果实际长度小于m 则左补空格 m nf 指定输出的实数的宽度为m 其中n位为小数 如果实际长度小于m 则右补空格 f 不指定字段宽度 由系统自动指定 整数部分全部输出 小数部分输出6位 f格式符 用来输出实数 以小数点形式输出 例4 6输出实数时的有效位数 includevoid 运行结果 显然 前7位数字是有效数字 千万不要以为凡是打出来的数字都是准确的 双精度数也可用 f格式输出 它的有效位数一般为16位 给出小数6位 f 不指定字段宽度 由系统自动指定 使整数部分全部如数输出 并输出6位小数 应当注意 并非全部数字都是有效数字 单精度实数的有效位数一般为7位 程序的输出结果为 a 100 dch 99 c includemain inta 100 charch c printf na d c n a a printf ch d c n ch ch c格式符 用来输出单个字符 格式说明 除了 d c外的普通字符串按原样输出 输出列表 变量的值代入相应 d位置 并按要求的格式输出 一个整数 只要它的值在0 255范围内 也可以用字符形式输出 在输出前 系统会将该整数作为ascii码转换成相应的字符 反之 一个字符数据也可以用整数形式输出 c格式符 用来输出单个字符 格式说明 按 d c格式输出 输出列表 变量c的值代入相应 c d位置 并按要求的格式输出 例4 4字符数据的输出 includevoidmain charc a inti 97 printf c d n c c printf c d n i i 运行结果 a 97a 97 输出 a 即c变量输出占3列 前2列补空格 也可以指定输出字数的宽度 如果有printf 3c c 则输出 a s格式符 用来输出一个字符串 例4 5字符串的输出 includevoidmain printf 3s 7 2s 4s 5 3s n CHINA CHINA CHINA CHINA 其中第3个输出项 格式说明为 4s 即只指定了n 没指定 自动使 n 4 故占4列 m ns 如果n小于m 则只取字符串左端的n个字符 这些字符输出在右侧 左侧补空格 m ne 指定输出位共占m列 n为小数的位数 如果实际长度小于m 则左侧补空格 m ne 指定输出位共占m列 n为小数的位数 如果实际长度小于m 则右侧补空格 e 不指定输出数据所占的宽度和数字部分小数位数 由系统指定给出的6位小数 指数部分占5位 其中 e 占1位 指数符号 或 占1位 指数占3位 e的应用举例 includemain floata 123 789 printf e a 程序的输出结果为 1 237890e 002 e 不指定输出数据所占的宽度和数字部分小数位数 由系统指定给出的6位小数 指数部分占5位 其中 e 占1位 指数符号 或 占1位 指数占3位 6列5列 例 输出字符和字符串 mc ms 或 ms m ns 或 m ns includemain charch a printf c n ch 输出变量ch 单个字符 printf 3c n ch 输出变量ch 占3列 靠左对齐 printf 3c n ch 输出变量ch 占3列 靠右对齐 printf s n programing 按实际长度输出字符串programing printf 15s n programing 输出字符串programing 占15列 靠右对齐 printf 15s n programing 输出字符串programing 占15列 靠左对齐 输出字符串programing中的前5个字符 占10列 靠右对齐 printf 10 5s n programing 输出字符串programing中的前5个字符 占10列 靠左对齐 printf 10 5s n programing aa aprograming programingprograming progrprogr 运行结果如下 其中的 表示空格 includevoidmain floatf 123 45 doubled 3 1415926 printf f e n f f printf f e n d d printf 5 3f 5 2f 2f n d d d 指数部分一共5位 如e 002 其中e占1位 指数符号占1位 指数占3位 运行结果为 123 450000 1 234500e 0023 141593 3 141593e 0003 142 3 14 3 14 例 f 以小数形式输出浮点数 保留6位小数 e 以指数形式输出 位整数 5位小数 其中 位指数 x格式符 以十六进制数形式输出整数 同样不会出现负的十六进制数 例如 inta 1 printf x o d a a a 输出结果为 ffff 177777 1同样可以用 lx 输出长整型数 也可以指定输出字段的宽度 如 12x includemain inta 1 printf 5d 10o 8x n a a a 程序运行后 输出如下结果 1 177777 ffff 例 u格式符 用来输出unsigned型数据 即无符号数 以十进制形式输出 一个有符号整数 int型 也可以用 u格式输出 反之 一个unsigned型数据也可以用 d格式输出 按相互赋值的规则处理 见第2章2 9节 unsigned型数据也可用 o或 x格式输出 例4 3无符号数据的输出 includevoidmain 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 运行结果为 a 1 177777 ffff 65535b 2 177776 fffe 65534 g格式符 用来输出实数 它根据数值的大小 自动选f格式或e格式 选择输出时占宽度较小的一种 且不输出无意义的零 如 f 123 468 则printf f e g f f f 输出如下 123 4680001 234680e 002123 468用 f格式输出占10列 用 e格式输出占13列 用 g格式时 自动从上面两种格式中选择短者 今以 f格式为短 故占10列 且按 f格式用小数形式输出 最后3个小数位 0 为无意义的0 不输出 因此输出123 468 然后右补3个空格 g格式用得较少 10列 13列 10列 在使用printf函数时 还有几点要说明 1 除了X E G外 其他格式字符必须用小写字母 如 d不能写成 D 2 可以在printf函数中的 格式控制 字符串内包含 转义字符 如 n t b r f 377 等 3 上面介绍的d o x u c s f e g等字符 如用在 后面就作为格式符号 一个格式说明以 开头 以上述9个格式字符之一为结束 中间可以插入附加格式字符 也称修饰符 例如 第一个格式说明为 c 而不包括其后的f 第二个格式说明为 f 不包括其后的s 第三个格式说明为 s 其他的字符为原样输出的普通字符 4 如果想输出字符 则应该在 格式控制 字符串中用连续两个 表示 如 printf f 1 0 3 输出 0 333333 作用 按照变量在内存的地址将变量值存进去 1 一般形式 4 6 2scanf函数 格式输入函数 scanf 格式控制 地址表列 同printf函数 是由若干个地址组成的表列 可以是变量的地址 或字符串的首地址 scanf 格式控制 地址表列 scanf C语言程序中的基本输入函数 当程序运行时 要求用户从键盘输入数据给程序 scanf d d a b 输入变量a和b的值 整型数 用空格间隔 scanf d f a b 输入a和b的值 a为整数 b为实数 用 间隔 scanf c d a b 输入a和b的值 a为字符型 b为整型 用 间隔 是地址运算符 a b c中的 是 地址运算符 a指a在内存中的地址 a b中的 是 地址运算符 a指a在内存中的地址 scanf函数的作用是 按照a b c在内存的地址将a b c的值存进去 见图4 8 变量a b c的地址是在编译连接阶段分配的 例4 9用scanf函数输入数据 includevoidmain inta b c scanf d d d 是地址运算符 b是指变量b在内存中的地址 运行情况 3 4 5 输入a b c的值 3 4 5 输出a b c的值 scanf函数的格式控制部分种 d d d 表示按十进制整数形式输入数据 输入数据时 在两个数据之间以一个或多个空格间隔 也可以用回车键 跳格键tab 下面输入均为合法 例 用scanf函数输入数据 includemain inta b clrscr printf pleaseinputtwonumbers scanf d d 运行结果如下 pleaseinputtwonumbers 3 4 回车 a 3 b 4 2 格式说明和printf函数中的格式说明相似 以 开始 以一个格式字符结束 中间可以插入附加的字符 scanf用到的格式字符 说明 1 对unsigned型变量所需的数据 可以用 u d或 o x格式输入 2 可以指定输入数据所占列数 系统自动按它截取所需数据 如 scanf 3d 3d a b 输入 123456 系统自动将123赋给a 456赋给b 此方法也可用于字符型 scanf 3c ch 如果从键盘连续输入3个字符abc 由于ch只能容纳一个字符 系统就把第一个字符 a 赋给ch 3 如果在 后有一个 附加说明符 表示跳过它指定的列数 例如 scanf 2d 3d 2d a b 如果输入如下信息 1234567 将12赋给a 3d表示读入3位整数但不赋给任何变量 然后再读入2位整数67赋给b 也就是说第2个数据 345 被跳过 在利用现成的一批数据时 有时不需要其中某些数据 可用此法 跳过 它们 4 输入数据时不能规定精度 例如 scanf 7 2f a 是不合法的 不能企图用这样的scanf函数并输入以下数据而使a的值为12345 67 1234567 3 使用scanf函数时应注意的问题 1 scanf函数中的 格式控制 后面应当是变量地址 而不应是变量名 例如 scanf d d a b 错 scanf d d a b 2 如果在 格式控制 字符串中除了格式说明以外还有其他字符 则在输入数据时应输入与这些字符相同的字符 例如scanf d d a b 输入时应用如下形式 3 4 注意 3后面是逗号 它与scanf函数中的 格式控制 中的逗号对应 如果输入时不用逗号而用空格或其他字符是不对的 34 不对 3 4 不对 如果是scanf d d a b 输入时两个数据间应空2个或更多的空格字符 如 1034 或1034 如果是scanf d d d h s 输入应该用以下形式 12 23 36 如果是scanf a d b d c d a b c 输入应为以下形式 a 12 b 24 c 36 3 在用 c 格式输入字符时 空格字符和 转义字符 都作为有效字符输入 scanf c c c c1 c2 c3 如输入abc 则 字符 a 送给c1 空格字符 送给c2 字符 b 送给c3 因为 c只要求读入一个字符 后面不需要用空格作为两个字符的间隔 因此 作为下一个字符送给c2 正确的输入方法是 abc 字符间没有空格 4 在输入数据时 遇以下情况时该数据认为结束 遇空格 或按 回车 或 跳格 tab 键 按指定的宽度结束 如 3d 只取3列 遇非法输入 例如 scanf d c f a b c 若输入 1234a123o 26 abc 第一个数据对应 d格式在输入1234之后遇字母a 因此认为数值1234后已没有数字了 第一个数据到此结束 把1234送给变量a 字符 a 送给变量b 由于 c只要求输入一个字符 因此输入字符a之后不需要加空格 后面的数值应送给变量c 如果由于疏
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽修雇主担保协议书模板
- 私人变压供电合同协议书
- 铺路板工程建设合同范本
- 高速打印机租用合同协议
- 自带车驾驶员合作协议书
- 私人美甲店学徒合同范本
- 村组保洁合同协议书模板
- 矿泉水厂承包合同协议书
- 洗车店合作合同协议范本
- 终止解除房屋合同协议书
- 支付宝商户经营模式说明模版
- 2024年4月自考04184线性代数(经管类)答案及评分参考
- 第五章-消费者行为理论:无差异曲线分析
- 医疗保障基金使用监督管理条例
- 车辆运输保障方案
- 普通高中学业水平考试标准英语词汇表带音标中文
- CAAC四类无人机执照综合问答备考试题库及答案
- 高三物理备考的得与失以及新高三一轮备考建议
- 肠梗阻导管在临床中的使用及护理课件
- 能源托管服务投标方案(技术方案)
- 乳头混淆疾病演示课件
评论
0/150
提交评论