1051:分段函数
时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
编写程序,计算下列分段函数y=f(x)的值。结果保留到小数点后三位。
y=−x+2.5;0≤x<5
y=2−1.5(x−3)(x−3);5≤x<10
y=x÷2−1.5;10≤x<20
【输入】
一个浮点数N(0≤N<20)。
【输出】
输出 N 对应的分段函数值: f(N)。结果保留到小数点后三位。
【输入样例】
1.0
【输出样例】
1.500
说明:
主要考查switch多分支结构。
思路分析:
可能有部分小学生不理解分段函数y=f(x)的意思,但认真分析一下,其实就是根据x的取值求出y的值,而x的值不同时,求出y值的公式也有所不同。
其中本题x的取值范围有三种,根据输入的值(题目中输入的是N),求出f(N)的值(其实就是y的值)。而N的值(公式中x的值)有三种情况,此时判断N的值,根据N值的范围代入相应的公式中,从而求得f(N)的值。
例如N=3,即N的值在第一条公式的范围内,所以用第一条公式来求得f(N)的值。
数据类型:从公式和输入中可以得知,数据存在浮点数,所以使用浮点类型。如以后的题目没有特别指出使用何种浮点型,在题解中将默认选择double类型。
本题如果用if语句解决自然简单方便,代码中将分别展示if和switch方法。让初学switch的同学可以更深入地了解switch的使用。
关于switch的方法,可以参考上一题的题解《【题解】1050:骑车与走路》。不过本题将使用switch的另一种技巧。
求解过程:
声明一个double类型变量N。
输入一个数给变量N。
根据N的值选择相应的公式求得f(N)的值。
输出f(N)的值,并保留到小数点后三位。
参考代码 - C++:
// 方法1
// N的值有3个范围,当N/5时,刚好第1个范围所有数除以5的结果都为0
// 第2个范围所有数除以5的结果都为1
// 而第3个范围可以放在default中
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double N