判断与决策_选择程序设计教材.pptx
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("Pass! you belong in group D\n");
dNum = dNum + 1;
}
else {
printf("Sorry, you are failed, belong in group F\n");
fNum = fNum + 1;
}
}
printf("aNum = %d\n", aNum);
if ( 逻辑判断表达式 )
表达式为真时执行的语句;
整个称为单分支选择结构,也可以看成是一个 语句
问?
if (逻辑判断表达式 )
?
;
单分支的嵌套
if (表达式1) if (表达式2) 表达式2为真时执行的语句
例如
if (grade>=60)
if ( grade < 70 )
printf(“you are
回到(2); 5 否则如果成绩还大于或等于80,输出分到B组信息,bNum
加1,返回到(2); 6 否则如果成绩还大于或等于70,输出分到C组信息,cNum
加1,返回到(2); 7 否则如果成绩还大于或等于60,输出分到D组信息,dNum
加1,返回到(2); 8 否则输出分到F组信息,fNum加1,返回到(2); 9 输出统计结果
分析
输入: 学生成绩grade 输出:根据成绩的范围,输出不同的结果
B,C,D,或者F,和统计结果
如何判断grade所在的范围?
90以上,80到89,70到79,60到69,小 60
if (grade>=90) √
但是 if( 89<=grade<90 ) ×
复合判断条件
再分析一下选择结构
passed\n”);
if ( grade >= 60)
if ( grade < 70 )
printf(“you are passed\n”);
if (grade>=60) {
if ( grade < 70 )
{
printf(“you are passed\n”);\
}
}
if (grade>=60)
依据整型常量10,9,8,7,6,5,4,3,2,1,0 可断定该同学应该分到哪一组
选择结构的两种形式:
if ( condition )
…
if (condition ) … else …
注意大括号的使用{ }
复合语句块用{ }括起来 if ( ) { ….多条语句复合到一起 …. } 一条语句的时候省略{ }
问题3: 按成绩把学生分成多组
问题描述:教师要把参加某次测验的学 生按成绩的分数段(90以上,80到89, 70到79,60到69,小于60)分成多组, 并统计出各组的人数。
算法实现 见ifelsenest.c
int grade;
while( scanf("%d",&grade) != EOF)
{
if( grade >= 90 ){
printf("Good! you belong in group A\n");
aNum = aNum + 1;
}
else if ( grade >= 80 ){
Y
grade<70
N
Y
grade<90
N
Y
N
grade<60
C组
B组
A组
F组
D组
图 3.16 嵌套的选择结构举例
算法实现 见ifelsebetter.c
重新分析一下问题
如果把成绩除以10取整,可以发现, 100分对应10,90到99分对应9,80到 89分对应8,依此类推,0到9分的对应 0
注意:
多个if-else嵌套,if else的匹配原则是: else与前面最近的没有被使用的if匹配
F
表达式1
T
语句1
Hale Waihona Puke Baidu
F
表达式2
T
语句2
F
表达式3
T
语句3
语句n
其它语句
算法设计(1)
1 求和变量aNum,bNum,cNum,dNum,fNum初始化 为0;
2 输入学生成绩; 3 如果输入没有结束则执行(4)否则执行(9); 4 如果成绩大于或等于90,输出分到A组信息,aNum加1,返
{
if ( grade < 70 )
printf(“you are passed\n”);
}
双分支嵌套
if (表达式1)
if (表达式2) 表达式2为真时执行的语句
else 表达式2为假时执行的语句
else
表达式1为假时执行的语句
if (表达式1) 表达式1为真时执行的语句
else
if (表达式2) 表达式2为真时执行的语句
printf("Better! you belong in group B\n");
bNum = bNum + 1;
}
else if ( grade >= 70 ) {
printf("Middle! you belong in group C\n");
cNum = cNum + 1;
}
else if ( grade >= 60 ) {
else 表达式2为假时执行的语句
图 3.12 嵌套的选择结构
if ( grade >= 90 )
printf(“good!in group A\n”);
else
if ( grade >=80 )
printf ( “ better!in group\n”);
else
printf( “ ok, in C or D or F\n”);
更好的写法
if ( grade >= 90 ) printf(“good!in group A\n”); else if ( grade >=80 ) printf ( “ better!in group\n”); else printf( “ ok, in C or D or F\n”);
高级语言程序设计
选择程序设计(2)
复习
1 判断条件的形式:通常是用关系表达式
2 判断条件的结果:逻辑真 1、逻辑假 0
3 实际上除了关系表达式之外,任何有计算结果 的表达式都可以作为判断条件,计算结果不为零 的数均转化为逻辑真,计算结果为0即为逻辑假
算术表达式 函数调用表达式
4甚至是简单的变量或常量都可以
分析一下该算法的执行情况
你可以运行算法1的代码,看看每个学生 成绩要判断几次才能找到它适合的位置。
如果成绩都是90以上会怎样? 如果成绩都是60、70分甚至更低会怎么
样?
正常情况下学生的成绩处于中游的比较 多,即大多数都在70和80之间,符合客 观实际的、更好的结构应该是什么?
开始
Y
N
grade<80