阿稳自修室C++ | P37:用逻辑运算符来设置取值范围

习题6.6 用逻辑运算符判断年龄

取值范围测试

#include<iostream>
const char* qualify[4] =
{
	"你是小鲜肉!",
	"你是老腊肉!",
	"你是腊肉!",
	"你是仙风道骨的老头子!"
};
int main()
{
	using namespace std;
	int age;
	cout << "Enter your age in years: ";
	cin >> age;
	int index;
	if (age > 17 && age < 35)
		index = 0;
	else if (age >= 35 && age < 50)
		index = 1;
	else if (age >= 50 && age < 65)
		index = 2;
	else
		index = 3;
	cout << "You qualify for the " << qualify[index];

	return 0;
}

习题6.7 逻辑NOT运算符:!

将!运算符用于函数返回值,来筛选可赋给int变量的数字输入,如果用户定义的函数is_int的参数位于int类型的取值范围内,则它将返回ture,然后,程序使用while(!is-int(num))测试来拒绝不在该取值范围内的值。

  • 用!编写代码
#include<iostream>
#include<climits>
bool is_int(double x);
int main()
{
	using namespace std;
	double num;
	cout << "Enter an integer value: ";
	cin >> num;
	cout << "INT_MAX: " << INT_MAX << endl;
	cout << "INT_MIN: " << INT_MIN << endl;
	while (!is_int(num))
	{
		cout << "Out of range -- pls try again: ";
		cin >> num;
	}
	int value = int(num);
	cout << "You have entered the integer " << value << "\nbye\n";
	return 0;
}
bool is_int(double x)
{
	if (x <= INT_MAX && x >= INT_MIN)
		return true;
	else
		return false;
	//if (x> INT_MAX || x < INT_MIN)
	//	return true;
	//else
	//	return false;
}
  • 不用!编写代码
#include<iostream>
#include<climits>
bool isn_int(double x);
int main()
{
	using namespace std;
	double num;
	cout << "Enter an integer value: ";
	cin >> num;
	cout << "INT_MAX: " << INT_MAX << endl;
	cout << "INT_MIN: " << INT_MIN << endl;
	while (isn_int(num))
	{
		cout << "Out of range -- pls try again: ";
		cin >> num;
	}
	int value = int(num);
	cout << "You have entered the integer " << value << "\nbye\n";
	return 0;
}

bool isn_int(double x)
{

	if (x> INT_MAX || x < INT_MIN)
		return true;
	else
		return false;
}

笔记整理

优先级比较

逻辑非运算符高于所有的关系运算符和算术运算符;逻辑与运算符高于逻辑或运算符,但两者都小于关系运算符。

100分

当发现while循环的逻辑用!比较奇怪,想到了用修改函数的方法使while循环不需要用!,很棒!

上一篇
下一篇