C语言程序设计的三种基本结构.ppt

上传人:xin****828 文档编号:6287267 上传时间:2020-02-21 格式:PPT 页数:78 大小:565.81KB
返回 下载 相关 举报
C语言程序设计的三种基本结构.ppt_第1页
第1页 / 共78页
C语言程序设计的三种基本结构.ppt_第2页
第2页 / 共78页
C语言程序设计的三种基本结构.ppt_第3页
第3页 / 共78页
点击查看更多>>
资源描述
1 第2章C语言程序设计的三种基本结构 C语言程序设计 2020 2 21 2 2 1顺序结构程序设计2 2选择结构程序设计2 3循环结构程序设计 本章主要内容 2020 2 21 3 2 1 1C语句2 1 2字符数据的输入与输出2 1 3格式输入与输出2 1 4顺序结构程序设计应用举例 2 1顺序结构程序设计 返回 2020 2 21 4 2 1 1C语句 一个C程序由若干个源程序文件组成 一个源文件由若干个函数和预处理命令及全局变量声明部分组成 一个函数由数据声明部分和执行语句部分组成 执行语句部分就是由C语句组成的 C程序结构如图2 1所示 图2 1 2020 2 21 5 C语句可分为以下5类 1 表达式语句表达式语句由一个表达式加上分号 组成 执行表达式语句就是计算表达式的值 其一般形式为 在表达式语句中 最常用的是赋值语句 例如 a 7 将7赋给a x y z 将y与z之和赋给x 2 1 1C语句 表达式 2020 2 21 6 2 1 1C语言基本语句 赋值运算符 右边的表达式也可以是一个赋值表达式 一般形式为 展开为 例如 a b c 9 与赋值语句不同的是 在声明变量时 不允许连续给多个变量赋初值 以下声明变量的方式是错误的 inta b c 9 变量 变量 表达式 变量 变量 表达式 2020 2 21 7 必须改为 inta 9 b 9 c 9 又如 i 自增1语句 i值增1 相当于i i 1 而a b 因计算结果不能保留 没有实际意义 说明 1 一个C语句必须在最后添加分号 分号是C语句中不可缺少的一部分 2 任何表达式都可以加一个分号成为语句 2020 2 21 8 2 函数调用语句函数调用语句由函数名 实际参数加上分号 组成 其一般形式为 例如 printf ThisisaCProgram 调用库函数 输出字符串ThisisaCProgram max a b 调用自定义的max函数 函数名 实际参数表 2020 2 21 9 3 控制语句控制语句用于控制程序的流程 以实现程序的各种结构方式 它们由特定的语句定义符组成 语言有9种控制语句 可分成以下3类 条件判断语句 if语句 switch语句循环执行语句 do while while和for语句转向语句 break语句 goto语句 continue语句 return语句例如 if a 0 printf OK 2020 2 21 10 4 复合语句把多个C语句用花括号 括起来组成一个语句 该语句为复合语句 例如下述是一个复合语句 z x x y y z 2020 2 21 11 5 空语句只有分号 组成的语句称为空语句 空语句是什么也不执行的语句 下面是一个空语句 在程序中空语句可用来作空循环体 空循环体什么也不做 例如 while getchar n 语句的功能是 从键盘输入的字符如果不是回车则重新输入 直到输入回车为止 2020 2 21 12 2 1 2字符数据的输入与输出 输入 输出是以计算机为主体而言的 在 语言中 所有的数据输入 输出都是由库函数完成的 因此都是函数语句 在使用 语言库函数时 要用预编译命令 include将有关 头文件 包括到源文件中 include或 include stdio h 2020 2 21 13 2 1 2字符数据的输入与输出 1 putchar函数 字符输出函数 putchar函数是字符输出函数 其功能是向终端 如显示器 输出单个字符 其一般形式为 例如 putchar A 输出大写字母Aputchar c 输出字符变量c的值也可以输出转义字符 如 putchar 输出字符 putchar 字符变量 2020 2 21 14 例2 1 编写程序 输出英文单词Good includevoidmain chara G b o c o d d putchar a putchar b putchar c putchar d putchar n 程序运行结果 Good 2020 2 21 15 2 1 2字符数据的输入与输出 2 getchar函数 字符输入函数 getchar函数的功能是从终端 如键盘 输入一个字符 getchar函数没有参数 其一般形式为 getchar函数只能接收一个字符 通常把接收的字符赋给一个字符变量或整型变量 如 charch ch getchar getchar 2020 2 21 16 2 1 2字符数据的输入与输出 getchar函数也可以作为函数语句的一个参数被使用 如 printf c getchar putchar getchar 如果通过键盘输入小写字母a 则以上两个函数语句均输出小写字母a 2020 2 21 17 例2 2 将输入的单个字符原样输出 includevoidmain charch ch getchar putchar ch 程序运行情况如下 如果输入 A 运行结果 A 2020 2 21 18 2 1 3格式输入与输出 1 printf函数 格式输出函数 printf函数称为格式输出函数 其功能是按用户指定的格式 把指定的数据显示到显示器屏幕上 printf函数调用的一般形式为 printf 格式控制 输出表列 2020 2 21 19 2 1 3格式输入与输出 1 格式控制格式控制字符串用于指定输出格式 它包括两种信息 格式说明和普通字符 格式说明 由 和格式字符组成 说明输出数据的类型 形式 宽度 小数位数等 printf函数中使用的格式字符主要包括 2020 2 21 20 2 1 3格式输入与输出 d格式符 以十进制形式输出带符号整数 正数不输出符号 有以下几种用法 d 按十进制整型数据的实际长度输出 md m为指定的输出字段的宽度 即输出数据在输出设备上所占的列数 如果数据的位数小于m 则左端补以空格 如果大于m 数据则按实际位数输出 例如 inta 123 b 456 printf 5d 2d a b ld 输出长整型数据 2020 2 21 21 2 1 3格式输入与输出 o格式符 以八进制整数形式输出 不输出前缀0 输出的数据不带符号 x或X格式符 以十六进制形式输出无符号整数 不输出前缀0 x 例如 inta 1 printf d o x a a a 输出结果为 1 177777 ffffu格式符 以十进制形式输出无符号整数 输出长整型时用lu c格式符 用来输出一个字符 也可以指定输出字符的宽度 例如 printf c 3c a b 2020 2 21 22 2 1 3格式输入与输出 s格式符 用来输出指定的字符串 s格式符有几种用法 s 原样输出给定的字符串 例如 printf s GOOD ms m为输出字符串所占的列数 如果字符串的位数小于m 字符串左端补以空格 如果字符串的位数大于m 字符串将原样输出 例如 printf 2s 6s Good Night ms 如果字符串长度小于指定的宽度 字符串向左边靠 在字符串的右边补空格 例如 printf 6s free 2020 2 21 23 2 1 3格式输入与输出 m ns 输出占m列 但只取字符串中左端n个字符 这n个字符输出在m列的右侧 字符串的左侧补空格 m ns 输出占m列 但只取字符串中左端n个字符 这n个字符输出在m列的左侧 字符串的右侧补空格 如果n大于m 将保证n个字符全部正常输出 例如 printf 5 4s 5 3s 2 4s Shang Shang Shang 2020 2 21 24 2 1 3格式输入与输出 f格式符 以小数形式输出单 双精度实数 小数位数为6位 有以下几种用法 f 不指定字段宽度 由系统自动指定 使整数部分全部输出 并输出6位小数 单精度实数的有效数字位数一般为7位 双精度实数的有效数字位数一般为16位 例如 floatx 11111 111 doubley 22222222222222 2222 printf f f n x 2 y 3 输出结果 22222 220000 66666666666666 660000 2020 2 21 25 2 1 3格式输入与输出 m nf 指定输出的数据共占m列 其中有n位小数 如果数值长度小于m 将在输出的数值左端补空格 m nf 与 m nf基本相同 不同的是 如果数值长度小于m 将在输出的数值右端补空格 例如 floata 345 6789 printf 7 1f 7 2f n a a 输出结果为 345 7 345 68 2020 2 21 26 2 1 3格式输入与输出 e或E格式符 以指数形式输出实数 用e时指数以e表示 如1 2e3 用E时指数以E表示 如1 2E3 g或G格式符 用来输出实数 它根据数值的大小 自动选f格式或e格式 且不输出无意义的零 用G时 若以指数形式输出 则指数以大写表示 p格式符 输出变量的内存地址 普通字符 在显示中起提示作用 输出时原样输出 例如 printf a d b d n a b 2020 2 21 27 2 1 3格式输入与输出 使用printf函数时需要注意以下几点 1 除了X E G外 其他格式字符必须用小写字母 如 d不能写成 D 2 可以在 格式控制 字符串中包含转义字符 例如 printf d t d n 123 789 3 如果需要输出字符 则应该在 格式控制 字符串中用连续两个 表示 2020 2 21 28 2 1 3格式输入与输出 2 输出表列输出表列中给出了各个输出项 要求格式字符串和各输出项在数量和类型上应该一一对应 如 printf max d min d a b 双引号中的两个 d 是格式说明 表示指定的变量a和b按十进制整型输出 双引号中其余内容是普通字符 原样输出 a b 为输出表列 变量之间用逗号隔开 假设a和b的值分别是10和7 则输出为 max 10 min 7 2020 2 21 29 例2 3 分析下面程序的输出结果 includevoidmain inta 65 b 66 printf d d n a b printf a d b d n a b printf c c n a b 程序运行结果 65 66a 65 b 66A B 2020 2 21 30 例2 4 格式字符应用实例 includevoidmain inta 65 floatb 12 1234567 doublec 12345 1234567 chard A printf a d 4d 4d o x c n a a a a a a printf b f lf 3 4f 6 1f e n b b b b b printf c lf f 8 4lf n c c c printf d c 3c 4c d n d d d d 运行结果 a 65 65 65 101 41 Ab 12 123457 12 123457 12 1235 12 1 1 21235e 01c 12345 123457 12345 123457 12345 1235d A A A 65 2020 2 21 31 2 1 3格式输入与输出 使用printf函数时要注意输出表列中的求值顺序 不同的编译系统不一定相同 可以从左到右 也可从右到左 TurboC是按从右到左进行的 例2 5 分析输出表列中的求值顺序 includevoidmain inti 6 printf d d d d n i i i i 程序运行结果 6 7 5 6 2020 2 21 32 2 1 3格式输入与输出 2 scanf函数 格式输入函数 scanf函数的功能是按指定的格式从终端输入数据 并将输入的数据存放到指定的变量中 scanf函数的一般形式为 如 scanf d d d d 表示输入整型数据 a b分别表示变量a和变量b的地址 scanf 格式控制 地址表列 2020 2 21 33 2 1 3格式输入与输出 1 格式控制格式控制字符串用于说明数据的类型及格式 其中包括两部分内容 格式说明和输入数据分隔符 常用的格式字符如下 d i 输入有符号的十进制整数 u 输入无符号的十进制整数 o 输入无符号的八进制整数 X x 输入无符号的十六进制整数 f 输入实型数c 输入单个字符 s 输入字符串 2020 2 21 34 2 1 3格式输入与输出 可用的附加字符有 l 用于输入长整型数据 如 ld lo lx 及double型数据 如 lf或 le h 用于输入短整型数据 如 hd ho hx m 指定输入数据所占宽度 例如 scanf 3d 2d 若输入101112 将把10赋给变量a 11被跳过 12赋给变量b d 表示读入整数但不赋给任何变量 2020 2 21 35 2 1 3格式输入与输出 2 地址表列地址表列中给出各变量的地址 地址是由地址运算符 2020 2 21 36 2 1 3格式输入与输出 例2 6 格式输入与格式输出函数的应用示例 includevoidmain inta b c charch1 ch2 floatd e scanf d d d 程序运行情况如下 101612AB3 56 a 10 b 161 c 2ch1 A ch2 Bd 3 500000 e 6 000000 2020 2 21 37 2 1 4顺序结构程序设计应用举例 例2 7 输入两个小写字母 输出其ASCII码和对应的大写字母 includevoidmain charch1 ch2 printf inputcharacterch1 ch2 scanf c c 程序运行结果 inputcharacterch1 ch2 ab 97 98A B 2020 2 21 38 2 1 4顺序结构程序设计应用举例 例2 8 已知圆的半径r 10 试用C语言编程求圆的周长p 2 r和圆的面积s r2 includevoidmain floatpi r p s r 10 pi 3 14 p 2 pi r s pi r r printf p 2f n p printf s 2f n s 程序运行结果 p 62 80s 314 00 2020 2 21 39 2 1 4顺序结构程序设计应用举例 例2 9 计算任意两个整数的和 差 inclduevoidmain inta b c d scanf d d 程序运行情况如下 12 9 12 9 21 12 9 3 2020 2 21 40 2 2选择结构程序设计 2 2 1关系运算符与关系表达式2 2 2逻辑运算符与逻辑表达式2 2 3if语句的3种形式2 2 4if语句的嵌套2 2 5条件运算2 2 6switch语句2 2 7选择结构程序设计举例 返回 2020 2 21 41 2 2 1关系运算符与关系表达式 1 关系运算符关系运算符是双目运算符 用来比较两个运算量之间的关系 关系运算的结果是 真 或 假 且只能是二者之一 C语言提供6种关系运算符 它们分别是 大于 大于或等于 等于 不等于 前四种关系运算符 的优先级高于后两种 关系运算符的优先级低于算术运算符 2020 2 21 42 2 2 1关系运算符与关系表达式 2 关系表达式关系表达式就是指用关系运算符将两个表达式连接起来的式子 例如 10 20 A 12为 真 其值为1 表达式 A 1 D 的值是1 因为字符A的ASCII码值加1之后小于字符D的ASCII码值 表达式13 9的值为0 2020 2 21 43 2 2 2逻辑运算符与逻辑表达式 1 逻辑运算符 逻辑与 是双目运算符 当两个运算量都为真 非0值 时 运算结果才为真 其他情况运算结果均为假 0 逻辑或 是双目运算符 当两个运算量都为假时 运算结果才为假 其他情况运算结果均为真 逻辑非 是单目运算符 在非0值前加逻辑非 运算结果为假 在0前加逻辑非 运算结果为真 2020 2 21 44 2 2 2逻辑运算符与逻辑表达式 逻辑运算符说明如下 逻辑运算符的优先级次序为 逻辑与 逻辑或的结合性为自左至右 逻辑非的结合性为自右至左 逻辑运算符与前面介绍过的运算符的优先次序 由高到低 为 逻辑非 算术运算符 关系运算符 逻辑与 运算符 逻辑或 运算符 赋值运算符 2020 2 21 45 2 2 2逻辑运算符与逻辑表达式 2 逻辑表达式逻辑表达式是用逻辑运算符将关系表达式或逻辑量连接起来的符合C语法的式子 例如 a b 3 4 a d c 都是合法的逻辑表达式 与关系运算符和算术运算符相比较 逻辑非的优先级高于算术运算符 逻辑与和逻辑或的优先级低于关系运算符 例如 表达式 b c d a 等价于 b c d a 2020 2 21 46 2 2 2逻辑运算符与逻辑表达式 逻辑运算规则 2020 2 21 47 2 2 2逻辑运算符与逻辑表达式 例2 10 逻辑运算应用示例 inclduevoidmain inti 1 j 2 k 3 intn1 n2 n3 floatx 3 0 y 0 85 n1 x 程序运行结果 0 1 2020 2 21 48 2 2 3if语句的3种形式 1 if语句if语句的一般形式 其语义是 如果表达式的值为真 则执行其后的语句 否则不执行该语句 if语句的执行过程如图3 2所示 if 表达式 语句 图3 2 2020 2 21 49 例2 11 随机输入两个整数 输出其中的小数 includevoidmain inta b min scanf d d 程序运行情况如下 17 119 min 17 2020 2 21 50 2 2 3if语句的3种形式 2 if else语句if else语句的一般形式 其语义是 如果表达式的值为真 则执行语句1 否则执行语句2 if else语句的执行过程如图3 3所示 if 表达式 语句1else语句2 图3 3 2020 2 21 51 例2 12 将例2 11输出两个整数中的小数 改用if else语句来完成 includevoidmain inta b scanf d d 2020 2 21 52 2 2 3if语句的3种形式 3 if else if语句其一般形式为 其语义是 依次判断表达式的值 当出现某个值为真时 则执行其对应的语句 然后跳到整个if语句之外继续执行后续语句 如果所有的表达式均为假 则执行语句n 然后继续执行后续语句 if 表达式1 语句1elseif 表达式2 语句2elseif 表达式3 语句3 elseif 表达式m 语句melse语句n 2020 2 21 53 执行过程如图2 4所示 图2 4 2020 2 21 54 例2 13 随机输入一个字符 判别该字符的类别 includevoidmain charc printf inputacharacter c getchar if c 0 2020 2 21 55 2 2 4if语句的嵌套 下面列举常见的两种嵌套形式 形式一 形式二 if 表达式1 if 表达式1 if 表达式2 语句1if 表达式2 语句1 else语句2else语句2else语句3 2020 2 21 56 形式三 形式四 if 表达式1 if 表达式1 if 表达式2 语句1 if 表达式2 语句1else语句2else语句2elseif 表达式3 语句3else语句4 2020 2 21 57 例2 14 比较两个字符型数据的大小关系 includevoidmain chara b scanf c c 2020 2 21 58 2 2 5条件运算 在if语句中 当判断表达式的值为 真 或 假 时 都只执行单个的赋值语句且给同一个变量赋值 此时 可使用简单的条件运算来实现 条件运算符是一个三目运算符 它有3个参与运算的量 由条件运算符组成条件表达式的一般形式为 求值规则是 如果表达式1的值为真 则以表达式2的值作为整个条件表达式的值 如果表达式1的值为假 则以表达式3的值作为整个条件表达式的值 表达式1 表达式2 表达式3 2020 2 21 59 图2 5条件表达式的执行过程 2020 2 21 60 例如 if a b max a elsemax b 可用条件表达式写成 max a b a b 其执行语义是 若a b为真 则把a赋给max 否则把b赋给max 2020 2 21 61 例2 15 用条件表达式实现 输出a b c三个变量中的最大值 includevoidmain inta b c max scanf d d d 如果输入 29 16 79 运行结果 max 79 2020 2 21 62 2 2 6switch语句 语言提供了另一种用于直接处理多分支选择的switch语句 其一般形式为 switch 表达式 case常量表达式1 语句1 case常量表达式2 语句2 case常量表达式n 语句n default 语句n 1 2020 2 21 63 2 2 6switch语句 其语义是 计算switch后面表达式的值 将该值与逐个case后的常量表达式的值相比较 当表达式的值与某个常量表达式的值相等时 就执行其后的语句 然后不再进行判断 继续执行后面所有case后的语句和default后的语句 如果表达式的值与所有case后的常量表达式均不相同时 则执行default后的语句 2020 2 21 64 例2 16 在每一个case语句之后增加一个break语句 使每一次执行之后均可跳出switch语句 从而避免输出不应有的结果 程序如下 incdluevoidmain inta printf pleaseinput1 7number scanf d 2020 2 21 65 2 2 7选择结构程序设计举例 例2 11 输入3个整数 将它们按由小到大的顺序输出 请见教材中的实例 例2 12 请见教材中的实例 例2 13 请见教材中的实例 例2 14 请见教材中的实例 2020 2 21 66 2 3循环结构程序设计 2 3 1while语句2 3 2do while语句2 3 3for语句2 3 4循环的嵌套2 3 5break语句和continue语句2 3 6循环结构程序设计举例 返回 2020 2 21 67 2 3 1while语句 while语句用来实现 当型 循环结构 其特点是 先判断循环条件 后执行循环体语句 其一般形式为 其语义是 先判断循环条件 如果循环条件成立 值为非0 执行循环体语句 当循环条件不成立 值为0 时 退出循环体 执行后继语句 while 循环条件 循环体语句 2020 2 21 68 2 3 1while语句 while语句的流程图如图2 6所示 图2 6 2020 2 21 69 例2 20 编写程序 输出1 100之间所有能被6整除的数 includevoidmain inti 1 while i 100 if i 6 0 printf d i i 程序运行结果 6 12 18 24 30 36 42 48 54 60 66 72 78 84 90 96 2020 2 21 70 2 3 2do while语句 do while语句用来实现 直到型 循环结构 其特点是 先执行一次循环体语句 然后判断循环条件是否成立 do while语句的一般形式 其语义 先执行一次循环体语句 再判断循环条件 如果循环条件成立 值为非0 将返回继续执行循环体语句 如此反复 直到循环条件不再成立 值为0 此时退出循环体 执行循环后面的语句 do循环体语句while 循环条件 2020 2 21 71 do while语句的执行流程图如图2 7所示 图2 7 2020 2 21 72 例2 21 用do while语句改写 例2 20 includevoidmain inti 1 do if i 6 0 printf 4d i i while i 100 2020 2 21 73 2 3 3for语句 for语句是循环控制结构中使用最广泛的一种循环控制语句 for语句的一般形式 下面用便于理解的方式表示for语句 for 表达式1 表达式2 表达式3 循环体语句 for 初始表达式 循环条件 增值表达式 循环体语句 2020 2 21 74 2 3 3for语句 其语义是 求解初始表达式 判断循环条件 如果循环条件成立 值为非0 执行循环体语句 然后求解增值表达式 再判断循环条件 如此反复 直到循环条件不再成立 值为0 此时退出循环结构 执行循环语句后面的语句 for语句流程图如图2 8所示 图2 8 2020 2 21 75 例2 22 用for循环语句改写例2 19 includevoidmain inti for i 1 i 100 i if i 6 0 printf 4d i 2020 2 21 76 2 3 4循环的嵌套 下面列举其中的三种嵌套样式 样式1 样式2 样式3 while while for while dofor while 2020 2 21 77 2 3 5break语句和continue语句 1 break语句break语句可以使程序流程从循环体内跳到循环体外 接着执行循环结构后面的语句 break语句的一般形式 2 continue语句continue语句的作用是结束本次循环 即跳过循环体中尚未执行的语句 提前进入下一次循环条件的的判定 continue语句的一般形式 break continue 2020 2 21 78 2 3 6循环结构程序设计举例 例 编写程序 请见教材
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!