收藏 分享(赏)

顺序和选择结构程序设计.ppt

上传人:myk79025 文档编号:7425770 上传时间:2019-05-17 格式:PPT 页数:55 大小:653KB
下载 相关 举报
顺序和选择结构程序设计.ppt_第1页
第1页 / 共55页
顺序和选择结构程序设计.ppt_第2页
第2页 / 共55页
顺序和选择结构程序设计.ppt_第3页
第3页 / 共55页
顺序和选择结构程序设计.ppt_第4页
第4页 / 共55页
顺序和选择结构程序设计.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

1、第4章 顺序和选择结构程序设计,4.1 结构化程序设计 4.2 语句与分程序 4.3 顺序结构程序设计 4.4 选择结构程序设计 4.5 switch语句 4.6 条件运算符 4.7 程序举例,4.1 结构化程序设计,(1) 顺序结构顺序结构就是一组逐条执行的可执行语句。按照书写顺序,自上而下的执行。(2) 选择结构(分支结构)选择结构是一种先对给定条件进行判 断,并根据判断的结果执行相应命令的结 构。,(3) 循环结构循环结构是指多次重复执行同一组 命令的结构。具有循环结构的程序一般必须指定循 环的终止条件,以便对程序的循环进行有 效的控制,以免进入无限循环(或称死循 环)的状态。,C程序的

2、执行部分由执行语句构成。 执行语句的种类表达式语句函数调用语句控制语句复合语句(或称分程序)空语句,4.2 语句与分程序,最简单的可执行语句。只要在表达 式后面加上分号就可以了。 例如: +i; x=y;有效的表达式语句一般都要有赋值 运算, 否则,不做任何赋值运算的表达 式大多数是无意义的。,表达式语句,函数调用语句,由函数名、实际参数以及分号构成。 例如: printf(“welcome“); printf是函数名,“welcome”是实际参数。函 数名既可以是C语言提供的库函数名,也 可以是我们自己定义的函数名。,控制语句,控制语句是用于控制程序流程的语句,控 制语句一般指那些改变了顺序

3、结构的语句。C语言的控制语句分支语句(if 和 switch)循环语句(while、do-while、for)转向语句(break、goto、continue、return)。熟练掌握控制语句是学会程序设计的基础。,复合语句和分程序结构,复合语句是用 和 把数据说明语句和若干个有序的执行语句组合在一起而构成。 其一般格式为 数据说明;语句; 复合语句在语法上相当于一个简单语句,在程序中可以作为一个独立语句来看待,因此又称为分程序。,空语句,C语言中有一个很特殊的语句,即空语句。空语句,顾名思义,就是什么也不存在的语句,只有一个分号: ;尽管空语句不会有任何命令执行,但仍然是一个有用的语句。常用

4、于循环语句中,使循环体为空。例如:for (sum=0,i=0;i=9;i+;sum=sum+i);,4.3 顺序结构程序设计,顺序程序设计的步骤可以归纳为: (1) 用预处理命令包含文件或进行宏定义(不是必须的,根据具体情况); (2) 定义变量(分配内存空间); (3) 为变量赋初值(可以用赋值语句或输入函数); (4) 计算; (5) 输出结果(用输出函数)。,例4.1 编写程序,输入x和y,交换它们的值,并 输出交换前后的数。 #include “ stdio.h“ /*方法一 */ void main() int x,y,temp;printf(“Please input to in

5、t number:“);scanf(“%d%d“, ,#include “ stdio.h“ void main() /*方法二 (注意适用条件)*/ int x,y;printf(“Please input to int number:“);scanf(“%d%d“, ,4.4 选择结构程序设计,4.4.1 问题的提出 4.4.2 if形式 4.4.3 if else 形式 4.4.4 else if 形式 4.4.5 嵌套的if语句,4.4.1 问题的提出,用数学公式可以这样描述:x x=0 y = -x x0y是x的绝对值,如果x大于等于0,绝对值就 是x自己;否则,绝对值就是取x的负值

6、。这个数 学问题用顺序结构是不能解决的,因为要根据x 的值的不同,做不同的动作。只有用选择结构才 能解决问题。,4.4.2 if形式,if 形式是最简单的条件语句。 语法: if (表达式)语句1; 下一条语句;功能:检测表达式,如果表达式的值为非0 (真),则执行语句1,然后执行下一条语句; 如果表达式的值为0(假),直接执行下一条语 句。,条件表达式,注意: (1) 表达式必须用圆括号括起来,不能省略。 (2) 表达式可以使用关系表达式,例如if (x10)表 示如果x大于10;也可以使用逻辑运算符连接关 系表达式,例如,if (ab) &(b=c);还可以是 一般的表达式,甚至是一个常量

7、或一个变量,例 如,if (x)和if (checkstate() 只要x 或checkstate() 的值为非0,表达式即为真。,例4.2使用if形式编写程序:输入x,求出并输出x的绝对值。 #include “ stdio.h“ /*-abs(x)-*/ void main() int x;scanf(“%d“, ,例4.3使用if形式编写程序:若ab将两个数的位置调换;否则,保持不变。 #include “ stdio.h“ /*-swap a and b-*/ void main() int a,b;scanf(“%d%d“, ,例4.4请判断下面程序的执行结果,并解释该程 序的功能。

8、 #include “ stdio.h“ void main() int a=10,b=20,x;x=a;if (ab)x=b;printf(“%dn“,x); ,4.4.3 if else 形式,if else 形式的语法是: if (表达式)语句1; else 语句2; 下一条语句; 功能:检测表达式,如果值为非0(真),则执行语 句1,然后执行下一条语句;如果值为0(假), 执行语句2,再执行下一条语句。,例4.5解决求商的问题。 #include “ stdio.h“ /*-a divided by b-*/ void main() int a,b;scanf(“%d%d“, ,例4.

9、6:将输入字符的大写字符转换成小写字符输出,小写字符原样输出。 #include “stdio.h“ /*-lowercase-*/ void main() int c;c=getchar();if (c=A ,例4.7 请判断下面程序的执行结果。 #include “stdio.h“ void main() int a=30,b=20,x;if (ab) x=a;printf(“%dn“,a);elsex=b;printf(“%dn“,b); ,4.4.4 else if 形式,例如我们要解决这样一个问题:输入一个整 数,根据输入值,输出数的范围属于大于0、小 于0还是等于0。x的范围实际上

10、是三种情况,我们先用if else 解决这个问题:,if (x=0)printf (“ x=0“); else if (x0“);,else if的语法: if (表达式1) 语句1;else if (表达式2) 语句2;else if (表达式3) 语句3; else if (表达式n) 语句n;else 语句n+1;一条语句;,功能:按表达式的顺序进行判断,最早值为 真的表达式将引起执行相应语句i,并且不再继续 判断其它条件,跳转到下一条语句执行。若全部 表达式为假,则执行语句n+1。 if (x0)printf (“ x=0“); else if (x0“);,例4.8根据输入的百分制按

11、五分制的成绩输出。百 分制与五分制之间的关系见下表。百分制 五分制90 100 580 89 460 79 30 59 2,#include “stdio.h“ void main() int score;char grade;printf(“please input score:”);/*请输入分数*/scanf(“%d“, ,4.4.5 嵌套的if语句,修改例4.8,排除不可能的分数。 #include “stdio.h“ void main() int score;char grade;printf(“please input score:“);scanf(“%d“, ,if (表达式1

12、) if (表达式2)语句1; else 语句2;,if (表达式1) & (表达式2) 语句1; if (!表达式1) 语句2 ;,if (表达式1) if (表达式2)语句1;else 语句2; ,if (表达式1) & (表达式2) 语句1; if (表达式1) & (!表达式2) 语句2 ;,if (表达式1) if (表达式2) 语句1; else 语句2else到底与哪个if结合呢?因为这时有两种可能, 这就产生了所谓的二义性。C语言规定:else与离 它最近的if 结合。,例4.9 输入一个数,若该数为正整数并且是偶数,打印“是正的偶数”,否则打印“非正整数”。 #include

13、 “stdio.h” void main() int x;printf(“Please input one integer:“);scanf(“%d“, ,输入一个数,若该数为正整数并且是偶数,打印“是正的偶数”,否则打印“正整数并且是奇数”。 #include “stdio.h” void main() int x;printf(“Please input one integer:“);scanf(“%d“, ,4.5 switch语句,switch语句属于多路分支结构。 switch的常用形式: switch (条件表达式) case 常量表达式1:语句1;break;case 常量表达式

14、2:语句2;break;case 常量表达式3:语句3;break; case 常量表达式n:语句n;break;default 语句n+1; break; ,功能:首先计算条件表达式的值,然 后找到与其相等的常量表达式的case分支 去执行语句,然后退出switch语句,若没 有与条件表达式相等的常量表达式,则执 行default语句后面的语句n+1。default 语 句可省略。若语句i后不含break,继续执 行下一条语句i+1,不用判断常量表达式。,功能:首先计算条件表达式的值,然 后找到与其相等的常量表达式的case分支 去执行语句,然后退出switch语句,若没 有与条件表达式相等

15、的常量表达式,则执 行default语句后面的语句n+1。default 语 句可省略。若语句i后不含break,继续执 行下一条语句i+1,不用判断常量表达式。,注意: (1) case分支中的语句i后面的break语句一般 情况下不要省略,因为没有break语句,程序 不能跳出switch语句,而是执行下一条case语 句后面的语句,直到遇到break才能终止 switch的执行。 switch (s) case +:a=a+b;case - :a=a*b;break;case *:a=a-b;break;case /:a=a/b;break ,(2) 条件表达式和常量表达式的数据类型必须

16、 一致,常量表达式中不能包含变量。实际上, switch语句的重点就在于如何构造条件表达式, 并让它的值正好能够匹配n个常量表达式的值。 (3) 多个case 可以共同使用相同的语句i。 switch (s) case 1:case 2:case 4:case 5: printf(“%d“,x);break; ,(4) 每个常量表达式应不相等,因为它类似于语 句标号的作用,case部分与default的顺序可自由 书写。若每个case后包含break,则顺序不影响 最后的执行结果。反之,则有可能影响执行结果 s=2; switch (s) case 1: printf(“1“);break;c

17、ase 2: printf(“2“);break;case 3: printf(“3“);break; 结果?,switch (s) case 1: printf(“1“);case 2: printf(“2“);case 3: printf(“3“); 结果?,(5) 语句i可以用复合语句,而且允许省略花括号。 (6) switch语句可以嵌套,即在一个switch语句 中嵌套另一个switch语句,但是要注意break只 能跳出最内层的switch语句。例4.11 用switch完成:根据输入的百分制按五 分制的成绩输出。,#include “stdio.h“ void main() in

18、t score,s,sum; char grade;printf(“please input score:“);scanf(“%d“, ,例4.11根据输入字符(0到F,用%c接收)显示与该字符所表示的十六进制数相对应的十进制数。(例如输入A,输出10;输入0,输出0。),#include “stdio.h“ void main() char i;printf(“nplease input 0F :“);scanf(“%c“, ,C语言中提供的唯一的一个三目运算符就是 条件运算符“?:”,它的运算对象有三个。 条件运算符的语法格式是:表达式1 ?表达式2 :表达式3由条件运算符与操作数构成的表

19、达式也可以 称为条件表达式。包括了条件运算符的条件表达式的计算方法 是:首先计算表达式1的值,若表达式1为真,条 件表达式的解取表达式2的值,表达式1为假,条 件表达式的解取表达式3的值。,4.6 条件运算符,例4.12 将输入的字母小写变大写。 #include “stdio.h“ #include “string.h“ void main() char c;puts(“please input one char:“);c=getchar();c=(c=a?(c+A-a):c);putchar(c);putchar(n); ,例4.13 用条件表达式求三个整数中的最大数。 #include

20、“stdio.h“ /* max */ void main() int a,b,c;printf(“Pleae input three int:“);scanf(“%d%d%d“, ,我国的个人所得税税率表:,4.7 程序举例,例4.14 全月应纳税所得额=月收入800。 例如某人月收入1320,减去800元,全月应纳税 所得额为520元,由税率表知,其中500元税率为 5%,另20元的税率为10%,所以此人应纳个人 所得税27元。 void main() double salary,s,tax;printf(“please input your salary one month:“);sca

21、nf(“%lf“,else if (s=20000)tax=(s-5000)*0.20+3000*0.15+1500*0.1+500*0.05;else if (s=40000)tax=(s- 20000)*0.25+15000*0.20+3000*0.15+1500*0.1+500*0.05;else if (s=60000)tax=(s- 40000)*0.3+20000*.25+15000*.20+3000*.15+1500*.1+500*.05;else if (s=80000)tax=(s-60000)*0.35+20000*.3+20000*.25+15000*.20+3000*.15+1500*.1+500*.05;else if (s=100000)tax=(s-80000)*0.40+20000*.35+20000*.3+20000*.25+15000*.20+3000*.15+1500*.1+500*.05;elsetax=(s-100000)*0.45+20000*.40+20000*.35+20000*.3+20000*.25+15000*.20+3000*.15+1500*.1+500*.05;printf(“tax is %10.2fn“,tax); ,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报