- 1
- 0
- 约4.68千字
- 约 34页
- 2020-04-19 发布于浙江
- 举报
第三部分 C语言的结构语句
第4章 选择结构
;问题的提出:百分制成绩的等级划分问题;4.1 if 语句;例如:设定学生成绩60分为及格分数线,用单分支if语句描述为:
if ( grade = 60 )
printf ( “passed\n ” ) ;
又如:x大于y就输出x,用单分支if语句描述为:
if ( x y )
printf ( “%d ”, x ) ;
写出程序段的运行结果:当整型变量x=55,60,78时,
if ( x = 60 ) printf ( “%d ”, x ) ; printf ( “passed\n ” ) ; ;【例4-1】百分制成绩的等级划分问题之解法1:仅用if单分支语句实现
main()
{ int score;
scanf(%d,score);
if (score60) printf(“grade=E”);
if (score=60score70) printf(“grade=D”);
if (score=70 score80) printf(“grade=C”);
if (score=80 score90) printf(“grade=B”);
if (score=90) printf(“grade=A”);
}
//要求掌握:数学范围与if条件范围的转换;4.1.2 双分支if语句;例如:给学生成绩划分:成绩大于或等于60分时输出“passed”,成绩小于60分时输出“failed”。用双分支if语句描述为:
if ( grade = 60 )
printf ( “passed\n ” ) ;
else
printf ( “failed\n ” ) ;;说明:
1.对于单分支和双分支if后面的“表达式”,一般为逻辑表达式或关系表达式,事实上表达式的类型不限于此,可以是任意的数值类型(包括整型、实型、字符型、指针型数据)。只要表达式的值为非0,就认为它为真;只要表达式的值为0,就认为它为假。
例如: if ( 6 ) printf ( “passed\n ” ) ;
if ( ‘A’ ) printf ( “%d ”, ‘A’ ) ;
这些都是合法的if语句。
2. else子句不能作为语句单独使用,它必须是if语句的一部分,与if配对使用。 ;3.if语句后面的表达式之后不能增加分号(为何?),同时注意语句后面的分号不能遗漏(为何?) 。
4.在if和else后面可以只包括一个内嵌的操作语句,也可以包括多个操作语句,此时务必用“{}”将几个语句括起来成为一个复合语句。
例如:if ( x 100 )
{ x-- ; s=+x ; } //如果去掉括号{}呢?
else
{ x++ ; s=+x ; } //如果去掉括号{}???
此时又要注意:在“{}”后面不能再添加分号,因为“{}”内是一个完整的复合语句,不需要再添加分号。;在前面的章节还提到过与if / else结构密切相关的条件运算符 ?:,它是C语言中唯一的三目运算符(即有三个操作数)。对上面的两例用条件运算符改写为:
grade = 60 ?printf ( “passed\n ” ) :printf ( “failed\n ” ) ;
x y ?printf ( “%d ”, x ) :printf ( “%d ”, y ) ;
由此说明适当的语句修改条件运算符可以完成if / else结构相同的功能。;4.1.3 多分支if语句;说明:
1.执行顺序:开始执行该结构后,便依次去对多个条件进行判断测试,符合某一条件,则转去执行该条件下的操作,其它部分将被跳过;如果无一条件为“真(非0)”,就执行最后一个else所指定的操作,这个else可以看作“其它情形”。
2.应当特别注意if与else的匹配关系(难点):规则是从最内层开始,else总是与它上面最近的(未曾配对的)if配对(而不是if与他最下面的else匹配)。;例 根据程序写出运行结果;3.其执行过程见流程图4.3。;注意表达式之间的顺序关系
课堂作业:将表达式位置倒过来后,即低等级先判断,高等级后判断,完成框图与程序;【源程序】
main( )
{ int grade; printf ( input the grad
原创力文档

文档评论(0)