1048:有一门课不及格的学生
时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
给出一名学生的语文和数学成绩,判断他是否恰好有一门课不及格(成绩小于60分)。若该生恰好有一门课不及格,输出1;否则输出0。
【输入】
一行,包含两个在0到100之间的整数,分别是该生的语文成绩和数学成绩。
【输出】
若该生恰好有一门课不及格,输出1;否则输出0。
【输入样例】
50 80
【输出样例】
1
说明:
主要考查对if条件语句的理解,以及逻辑运算符的应用。
思路分析:
重点理解“恰好有有一门不及格”。我们知道,n<60不及格,n>=60及格。
所以:
如果语文及格,并且数学不及格,则输出1。
如果语文不及格,并且数学及格,则输出1。
如果语文及格,并且数学及格,则输出0。
如果语文不及格,并且数学不及格,则输出0。
根据这一逻辑,那么有:
if ((a>=60 && b<60) || (a<60 && b>=60))
cout << 1;
else
cout << 0;
其中,a代表语文成绩,b代表数学成绩。
&&运算符的优先级比||运算符的优先级高,所以也可以写成:
if (a>=60 && b<60 || a<60 && b>=60)
数据类型:题目已指明成绩是整数和成绩的范围是0~100,所以数据类型可以取unsigned类型或int类型。而且也无需判断输入的成绩的范围是否在0~100之内的问题。
**求解过程:**
声明两个整型类型变量a和b。
输入两个数给变量a和b。
如果恰好有一门不及格,则输出1。
否则输出0。
其他解法:
也可以采用上一题《【题解】1047:判断能否被3,5,7整除》的思路,见方法2。
参考代码 - C++:
// 方法1
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
if (a >= 60 && b < 60 || a < 60 && b >= 60)
cout << 1;
else
cout << 0;
return 0;
}
// 方法2
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
bool b1 = a < 60, b2 = b < 60;
if (b1 + b2 == 1) cout << 1;
else cout << 0;
return 0;
}
参考代码 - C语言:
#include <stdio.h>
int main()
{
int a, b;
scanf("%d %d", &a, &b);
if (a >= 60 && b < 60 || a < 60 && b >= 60)
printf("1");
else
printf("0");
return 0;
}