已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章顺序结构程序设计 顺序结构程序设计的思想 顺序结构是结构化程序设计中最简单 最常见的一种程序结构 顺序结构中 程序是按照各语句出现的次序顺序执行的 顺序结构程序通常由三部分组成 输入数据 让计算机为用户进行运算 首先必须把已知的数据 即让计算机进行运算的对象 输入到计算机中 进行处理 已知数据输入到计算机的基础上 根据问题的需要对其进行相应的运算处理 输出结果 让计算机程序进行运算处理的目的是为了得到相应的结果 因此 必须将运算处理的结果输出出来 但课本中的大多数例子 程序都比较简单 一般都只用到了一个源程序文件 而且有些程序的功能很简单 只要用一个主函数就可以实现 一个C程序可以由若干个源程序文件构成 一个源程序文件可以由若干个函数 一些可选的 预编译命令 及一些可选的全局变量声明等构成 图3 1C程序的结构 3 1C语句概述 C语句可以分为以下五种类型 1 表达式语句 在表达式的后面加上一个分号构成 例 x 100 C表达式 x 100 表达式语句 x 5 合法 但没意义 2 控制语句 由特定的语句定义符组成 用于控制程序的流程 以实现程序的各种结构方式 语言有九种控制语句 可分成以下三类 1 条件判断语句 if语句 switch语句 2 循环执行语句 dowhile语句 while语句和for语句 3 转向语句 break语句 goto语句 continue语句和return语句 3 函数调用语句 由函数名 函数的实际参数加上分号 组成 例 printf ThisisaCstatement n 4 空语句 仅包含一个分号的语句 5 复合语句 把多个语句用一对花括号 括起来组成的一个语句称为复合语句 例如 main intx y z t x 8 y 6 if x y z x y t z 2 else z x y t z 2 printf z d t d n z t 3 2赋值语句 在赋值表达式的尾部加上一个分号 就构成了赋值语句 赋值语句形式多样 用法灵活 使用赋值语句时需要注意以下几点 1 在赋值运算符 的左边只能是变量 例如 a 1 6 3 2赋值语句 2 在赋值运算符 右边的表达式也可以又是一个赋值表达式 如 变量 变量 表达式 从而形成嵌套的情形 其展开之后的一般形式为 变量 变量 表达式 例如 a b c d e 5 按照赋值运算符的右接合性 上述语句实际上等效于 e 5 d e c d b c a b 考题 inta floatx y x a y 35 8 x a y 3 注意在变量说明中给变量赋初值的操作和赋值语句的区别 给变量赋初值是变量说明的一部分 只能出现在函数的说明部分 赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔 而赋值语句则必须出现在函数的执行部分 并且一定要用分号结尾 例如 main intx 3 y 4 m n m x y n x y 给变量赋初值 赋值语句 4 注意赋值表达式和赋值语句的区别 赋值表达式是一种表达式 它可以出现在任何允许表达式出现的地方 而赋值语句则不能 例如 if x y 5 0 z x 语句的功能是 先把y 5的结果赋值给变量x 然后再判断x的值是否大于0 若该值大于0则执行语句z x 否则不执行语句z x 而语句if x y 5 0 z x 是非法的语句 其中x y 5 本身就是一条语句 不能出现在表达式中 因为C语言的语法规定if后面的 中只能是一个表示条件的表达式 3 2printf函数 printf函数的函数原型在头文件 stdio h 中 printf函数称为格式输出函数 其关键字最末一个字母f即为 格式 format 之意 其功能是按用户指定的格式 把指定的数据显示到显示器屏幕上 VC6 0系统要求在使用printf函数之前必须包含stdio h文件 include1 printf函数的一般调用形式printf 格式控制字符串 输出项1 输出项2 格式控制字符串可以包含以下三种形式的字符 1 格式指示符 格式指示符是以 开头的字符串 在 后面跟有各种格式字符 以说明输出数据的类型 形式 长度 小数位数等 格式指示符的一般形式如下 标志 宽度 精度 h l 2 转义字符 如 n 101 等 P68按转义功能输出 3 普通字符 如 printf max d n a 包括标点符号 使用说明P231 2 1 printf 可以输出常量 变量和表达式的值 但格式控制中的格式说明符 必须按从左到右的顺序 与输出项表中的每个数据一一对应 否则出错 例如 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 都是普通字符 P23例 1 格式指示符 格式指示符的一般形式如下 标志 宽度 精度 长度 h l 其中方括号 中的项为可选项 各项的意义介绍如下 类型字符用以表示输出数据的类型 其格式符和意义如下表所示 P24表3 1 printf函数中常用的格式控制说明 1 数据类型控制字符 标志 宽度 精度 h l includemain inta 13 b 18 floatx 107 5 doubley 53 032 printf a d b d n a b 1 printf a o a o b o n a a b 2 printf a x a X a x b x n a a a b 3 printf a u b u n a b 4 printf x e y E n x y 5 printf x g y G n x y 6 printf x f y f y f n x y y 7 printf x p n x 8 2 数据类型修饰符 长整型数一定要用 ld long 来输出 短整型可用于数值的输出 hd double类型的实数可以用 lf 也可以用 f 来输出 若longx 3 54 shorty 3 072 printf x ld y hd x y 若doublex 3 54 printf x lf x f x x 输出结果一样 3 输出数据所占的宽度与精度 整数值 在输出数据时 数据所占的宽度 域宽 即输出的数据在屏幕上所占的格数 通常是由系统自动决定的 按实际宽度输出 并采用右对齐的形式输出 指定整型 实型的宽度 如果指定的输出宽度不够 以数据实际值的宽度作为输出宽度 如果指定的输出宽度多于数据实际所需宽度 数据右对齐 左边补以空格 标志 宽度 精度 h l 标志 宽度 精度 h l main printf d n 42 输出结果 42 printf 1d n 42 输出结果 42 printf 5d n 42 输出结果 42 printf f 123 54 输出结果 123 540000 printf 12f n 123 54 输出结果 123 540000 printf e n 123 54 输出结果 1 235400e 002 printf 14e n 123 54 输出结果 1 235400e 002 printf g n 123 5 输出结果 123 5 printf 8g n 123 5 输出结果 123 5 例3 2在printf函数中指定输出数据的宽度 Text1 c main floatx1 x2 x1 288 4 有效位数不多 但会产生转换误差 x2 89 536747 有效位数太多 会产生存储误差 printf x1 f n x1 printf x2 5f n x2 对于floatdouble两种类型有效数字位 不包括小数位 不四舍五入 指定宽度 包括小数位 要四舍五入 强制类型转换时 不四舍五入 精度不足时 要四舍五入 对于float或double类型的实型数 宽度 用以指定输出数据的总宽度 小数点也要计算在内 精度 在这里就是小数位的位数 1 当n2实际小数位时 右边补0 3 当n1n2 小数点位 整数位时 右对齐 左补空格 main floatx 3 3372 printf x 2f x 5f x x printf x 4 2f x 8 5f x x printf 10 7g n 123 56789 输出实型数据所占的宽度和精度 n1 n2f 标志 宽度 精度 h l Text7 1 n2 只指定精度 2 n1 0或 0 不输出小数点和小数位 3 输出前导0 0n1d n2d 0n1 n2fP26表10 11 等效 4 对于字符串 P26表12n1字符串实际长度 右对齐 左边补空格 n2 字符串实际长度 只输出字符串前n2个字符 注意 输出数据的实际精度不完全取决于格式控制中的宽度和精度 还取决于计算机内的存储精度 float有7位有效数字 double有15位有效数字 指定的格式超出此范围时 输出的多余的数字是无意义的 精度对于不同的格式字符具有不同的含义 它们分别是 对于e E或f 用来指定输出数据的小数位的位数 printf 8 3f n 123 55 输出结果 123 550printf 8 1f n 123 55 输出结果 123 6printf 8 0f n 123 55 输出结果 124对于g或G 用来指定输出数据的有效数字 缺省值为6 printf g n 123 56789 输出结果 123 568printf 7g n 123 56789 输出结果 123 5679对于整数 用来指定必须输出的数字个数 若输出的数字少于指定的个数 则在数字前面加0补足 若输出的数字多于指定的个数 按数字的实际宽度输出 printf 8 5d n 42 输出结果 00042对于字符串 用来指定最多输出的字符个数 printf 10 5s n abcdefg 输出结果 abcde 标志 宽度 精度 h l 4 标志控制字符 输出数据左对齐的标志字符 可以在指定输出宽度的同时指定数据左对齐 这可在 与宽度间加一个 号来实现 在 和格式字符间 或宽度前 加一个 号 例如 printf d d n 100 200 输出结果为 100 200 使输出的数字总是带有正 负号 在输出数据前加前导0在指定宽度的同时 在数据前面的多余空格处填以数字0 例如 printf 05d n 59 输出结果为 00059printf 012 5f n 3 1415 输出结果为 000003 14150 通常 在用格式字符o x 按八进制数 十六进制数 的形式输出整数时 在数据的前面并不出现0 0 x 如果需要在输出的八进制数 十六进制数 前添加0 0 x 可在 号与格式字符o或x之间插入一个 号 注意 号对其它格式字符通常不起作用 例如 printf o o x x n 31 31 31 31 输出结果如下 37 037 1f 0 x1f 表示输出一个 字符 例如 printf d n 60 输出结果为 60 输出八 十六 进制数时添加前导0 0 x P27使用printf时的注意事项 3 3 3scanf函数 格式输入函数scanf的函数原型在头文件 stdio h 中 1 scanf函数的一般调用形式scanf 格式字符串 地址列表 1 格式字符串由 格式控制字符串 普通字符格式控制字符串的一般形式为 输入数据宽度 h l 2 地址表列中给出的是各变量的地址 地址是由取地址运算符 其中 a b分别表示变量a和变量b的地址 scanf函数的返回值等于成功输入的数据的个数 标志 宽度 精度 h l 2 scanf函数中常用的格式控制说明 全部小字 无 g e le f lf功能相同 例 inta b c e charc doublez y scanf a d b i c o d x e u a 37 b 073 0 xaf c 073 73 d 0 xaf af e 52y 37 5 3 75e 001 z 37 5 3 75e 001 1 格式控制中的数据类型与地址表列中的数据的类型 应该一一对应匹配 如果类型不匹配 系统并不给出错误信息 但不可能得到正确的数据 例如下列程序在编译时没有任何错误 但在执行时输出的结果总是 y 0 000000 main floaty scanf d scanf函数中格式控制的几点说明 类型不对应 编译不报错 但不能实现正确输入 2 在程序运行时 当用户输入的数据少于输入项时 程序等待输入 直到满足要求为止 并且当用户从键盘输入完各项数据之后一定要按下回车键 Enter键 scanf函数才能接受到从键盘输入的数据 当输入的数据多于输入项时 多余的数据并不消失 留入内存影响下一个输入操作的正确进行 可以在下一个输入函数之前用清除函数fflush stdin 清除输入缓冲区中残余数据 includemain intx y floatz p scanf d 格式说明项 当只输入1个数时 系统会一直等待第二个数的输入 才结束scanf 格式说明项 地址列表项 includemain intx y floatz p scanf d d d 当只输入两个数时 系统会一直等待第三个数的输入 才结束scanf 例 scanf d d 当输入 32 43 53时 结果x 32 y 43 53作废 不会作为下一个输入语句的数据 如果输入的格式为字符 则要保留作为下一输入语句的数据 3 在VC6 0下 shortint输入格式控制符为 hd double型输入格式控制符为 lf 4 Scanf格式字符将可指定宽度 但不能指定精度scanf 4f 4 3f 判断错与对 1 scanf 3d a 3 3 3通过scanf函数从键盘输入数据 输入的数据 以回车键作为确认键 回车前可修改 一旦回车确认后 就不能修改了 1 输入数值数据 整数 实数 间隔符 空白符 回车符 制表符 个数不限 例P29A2 指定输入数据所占的宽度P29B这种情况下 数值间可不用间隔符 一旦插入间隔符 系统也将按指定宽度读取数据 不提倡 3 跳过某个输入数据 作用跳过对应的输入数据 不传入变量 例P29C4 在格式控制字符串中插入普通字符 原样输入 大小写 间格等完全一致 若想在屏幕上 显示某些提示语句 P30DE比较两种方式的不同点 通配符 3 4 1复合语句3 4 2空语句 例3 8交换x和y的值并输出 include stdio h main intx y t printf Enterxy n scanf d d 程序运行结果如下 Enterxy 由第4行的printf输出 123456 代表按Enter键 x 123y 456 由第6行的printf输出 x 456y 123 由第8行的printf输出 交换x和y两个变量中的值 不能简单地用x y y x 两条语句来实现 t x y 例3 2 include stdio h main doublex printf Enterx n scanf lf 习题 一 选择题3 1若a b c d都是int类型变量且初值为0 以下选项中不正确的赋值语句是 A a b c 100 B d C c b D d c 22 b 3 2以下选项中不是C语句的是 A inti i printf d n i B C a 5 c 10D 3 3以下合法的C语言赋值的是 A a b 58 B k int a b C a 58 b 58 D i 3 4以下程序的输出结果是 A 0B 1C 3D 不确定的值main intx 10 y 3 printf d n y x y 3 5若变量已正确定义为int类型 要给a b c输入数据 以下正确的输入语句是 A read a b c B scanf d d d a b c C scanf D D D 3 6若变量已正确定义为float类型 要通过赋值语句scanf f f f a b c 给a赋予10 b赋予22 c赋予33 以下不正确的输入形式是 A 10B 10 0 22 0 33 0C 10 0D 10222222 033 033333 7若变量已正确定义 要将a和b中的数进行交换 下面选项中不正确的是 A a a b b a b a a b B t a a b b t C a t t b b a D t b b a a t 3 8若变量已正确定义 以下程序段的输出结果是 A 输出格式说明与输出项不匹配 输出无定值B 5 170000C 5 16800D 5 169000 x 5 16894 printf f n int x 1000 0 5 float 1000 3 9若有以下程序段 c3中的值是 A 0B 1 2C 0 5D 1intcl 1 c2 2 c3 c3 c1 c2 3 10若有以下程序段 其输出结果是 A 0 0 10B 0 0 5C 10 3 10D 3 3 10inta 0 b 0 c 0 c a a 5 a b b 3 printf d d d n a b c 3 11当运行以下程序时 在键盘上从第一列开始输入9876543210 此处代表Enter 则程序的输出结果是 A a 98 b 765 c 4321B a 10 b 432 c 8765C a 98 b 765 000000 c 4321 000000D a 98 b 765 0 c 4321 0main inta floatb c scanf 2d 3f 4f 3 12以下程序的输出结果是 A a 2 b 5B a 2 b 5C a d b dD a d b dmain inta 2 b 5 printf a d b d n a b 3 13若int类型占两个字节 则以下程序段的输出是 A 1 1B 1 32767C 1 32768D 1 65535inta 1 printf d u n a a 3 14以下程序段的输出是 A 496 B 496 C 000496 D 输出格式符不合法intx 496 printf 06d n x 3 15以下程序段的输出是 A 3 1415 B 3 0 C 3 D 3 floata 3 1415 printf 6 0f n a 3 16printf 10 5f n 12345 678 语句的输出是 A 2345 67800 B 12345 6780 C 12345 67800 D 12345 678 3 17以下程序段的输出是 A 0000057 66 B 57 66 C 0000057 67 D 57 67 floata 57 666 printf 010 2f n a 3 18若变量c定义为float类型 当从终端输入 283 1900 表示Enter键 能给变量C赋以283 19的输出语句是 A scanf f c B scanf 8 4f 给a赋3 12 给b赋9 0 则正确的输入形式是 代表空格 表示Enter键 A 3 129 0B a 3 12b 9C a 3 12 b 9D a 3 12 b 9 3 20以下输入程序的输出结果是 A 98B 89C 66D 以上三个都不对 include math h main doublea 3 0 b 2 printf 3 0f 3 0f n pow b fabs a pow fabs a b 二 填空题3 21若有以下定义 请写出以下程序段中输出语句执行后的结果 inti 200 j 2500 printf 1 d d i j printf 2 i d j d n i j printf 3 i d nj d n i j 3 22变量i j k已定义为int类型并有初值0 用以下语句进行输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省邢台市卓越联盟2025-2026学年高三上学期12月期中生物试题(无答案)
- 2025福建莆田市忠湄轮渡有限责任公司招聘高级船员总及笔试历年参考题库附带答案详解
- 2025湖南韶山旅游发展集团有限公司招聘9人笔试历年参考题库附带答案详解
- 2025江西省金融控股集团下属子企业社会招聘1人笔试历年参考题库附带答案详解
- 2025江苏连云港市赣榆区区属国企秋季第二次赴高校招聘高层次人才总笔试历年参考题库附带答案详解
- 2025年海南中经网科技公司公开招聘笔试历年参考题库附带答案详解
- 2025山东莒南县财金投资有限公司招聘总笔试历年参考题库附带答案详解
- 2025四川宜宾市南溪区属国有企业招聘融资人员6人笔试历年参考题库附带答案详解
- 2025中化集团招聘博士后研发浙化院校招3人笔试历年参考题库附带答案详解
- 2025四川华丰科技股份有限公司招聘综合管理岗位测试笔试历年参考题库附带答案详解
- 2025北京水务投资集团有限公司所属项目单位招聘9人笔试历年参考题库附带答案详解
- 内分泌性高血压筛查专家共识(2025)课件
- 岩板开加工合同范本
- 2025年西藏公务员行测(A类)真题及答案
- 七年纪学生安全教育课件
- (2025)共青团入团考试题库及完整答案
- 种质资源的重要性
- 《计算机系统的组成》课件
- 2025年安全生产起重机操作试题及答案
- 2025至2030中国锂电池行业项目调研及市场前景预测评估报告
- 备品备件仓库管理改善
评论
0/150
提交评论