任务描述
本关任务:判定学生成绩。
相关知识
if-else 分支语句基本用法
C 语言提供了 if-else 分支语句用于实现程序的选择结构。 基本格式如下:
-
if ( 表达式 ) 语句A else 语句B
基本流程图如下:
图1 if-else 分支语句流程图
从上面的流程图不难看出, if-else 分支语句的执行顺序为: 1.计算圆括号中表达式的值; 2.若表达式的值不为0 ( 测试条件成立 ),执行语句 A,该 if-else 语句执行结束; 3.若表达式的值为0 ( 测试条件不成立 ),执行语句 B,该 if 语句执行结束。
注意:无论表达式是否成立,语句 A 和语句 B 会且只会被执行其中一个,不可能同时执行。 假设我们要判断一个非零数是正数还是负数,可以采用以下代码:
/* 本段代码用来判断非零数的正负 */
if( a > 0 )
printf("这个数是正数");
else
printf("这个数是负数");
当a
等于 1 时,执行结果如下:
这个数是正数
当a
等于 −1 时,执行结果如下:
这个数是负数
if-else 分支语句综合用法
根据 C 语言的语法规定, if-else 语句中的语句 A 和语句 B 可以是任意多条合法的语句,因此上述 if-else 语句可以写成下面这个样子:
if (表达式1)
语句A
else
if (表达式2) // 这里语句 B 再使用一个 if 语句
语句B
流程图如下:
图2 if-else 语句嵌套 if 语句流程图
我们可以对上面判断正负数的代码进行修改完善。
/* 本段代码用来判断一个数是正数还是负数 */
if( a > 0 )
printf("这个数是正数");
else if( a < 0 ) //习惯上一般将if与else写在一行
printf("这个数是负数");
当a
等于 1 时,执行结果如下:
这个数是正数
当a
等于 −1 时,执行结果如下:
这个数是负数
由上面两个示例代码可以看出,当a
等于 0 时,第一个程序代码会打印“这个数是负数”,这个结论是对a
的错误判断;第二个程序代码什么都不打印,相较于第一个代码,至少不会得出错误结论。如果想得到a
的正确判断结果,可以进一步修改程序代码。
/* 本段代码用来判断一个数是正数,负数或零 */
if( a > 0 )
printf("这个数是正数");
else if( a < 0 ) //习惯上一般将if与else写在一行
printf("这个数是负数");
else
printf("这个数是零");
通过上面的程序代码,可以看出可以在 if-else 语句中添加 if-else 语句实现多个条件的复杂判断,关于这方面的内容将在第三章进行详细介绍。
编程要求
根据提示,在右侧编辑器的 Begin-End 处补充代码。某课程考试成绩由A、B、C、D、E共5级构成,请在输入的多个成绩中判断是否有得 A 的和得 E 的学生。
测试说明
平台会对你编写的代码进行测试。
测试输入:
ABCE
预期输出:
有学生成绩为A。
有学生成绩不及格。
测试输入:
ABCBD
预期输出:
有学生成绩为A。
没有学生成绩不及格。
代码展示:
/* 本程序有来判断多个成绩中是否有得A的和得E的学生 */
#include <stdio.h>
#define YES 1
#define NO 0
main(){
char ch;
int stateA; /* 判断成绩得A */
int stateE; /* 判断成绩得E */
/* 请在此处添加代码,在多个成绩中判断是否有得A的和得E的学生 */
/********** Begin **********/
/********** End **********/
if( stateA == YES )
printf("有学生成绩为A。\n");
else
printf("没有学生成绩为A。\n");
if( stateE == YES )
printf("有学生成绩不及格。\n");
else
printf("没有学生成绩不及格。\n");
return 0;
}