C++第9周项目1分段函数求值

简介: 课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759【项目1分段函数求值】从键盘输入x的值(整型),根据公式1计算并输出x和y的值。 要求用switch语句构造多分支结构完成求解,利用BB平台上“第9周练习源代码及博文模板.txt”中给出了博文模板发布报告。解法1:类似例3.9的思路,各分段的标准都为2的倍

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759


【项目1分段函数求值】从键盘输入x的值(整型),根据公式1计算并输出xy的值。 


要求用switch语句构造多分支结构完成求解,利用BB平台上“第9周练习源代码及博文模板.txt”中给出了博文模板发布报告。


解法1:类似例3.9的思路,各分段的标准都为2的倍数,所以,构造表达式 t= x/2,根据t的取值决定switch分支;

#include<iostream>
#include<cmath>
using namespace std;
int main( )
{
    int x, y, a;
    cin>>x;
    a = x/2;   //注意是整数相除
    if (a<0)
        a=0;    //这样,x<0时,a值也是0
    switch(a)
    {
    case 0: //即x<2时
        y=x;
        break;
    case 1:
    case 2://a为1、2,对应x>=2 && x<6时
        y=x*x+1;
        break;
    case 3:
    case 4://a为3、4,对应x>=6 && x<10时
        y=-x;
        break;
    default://如果走到这一分支,对应的是x>=10的所有情况
        y=-x*x-1;
    }
    cout<<y<<endl;
    return 0;
}

解法 2 :构造表达式  t=(x<2) + (x<6) + (x<10) 。由于关系表达式 (x<a) 的值为 0 1 (真为 1 ,假为 0 ),所以 t 能表示 x 究竟满足了几个条件。 t 值为 3 时,相加的三个关系表达式全为真,对应 x<2 ;而 t 值为 0 时,相加的三个关系表达式全为假,对应 x 10 ,其他类似。根据 t 的取值,可以决定 switch 分支。

#include<iostream>
#include<cmath>
using namespace std;
int main( )
{
    int x, y, t;
    cin>>x;
    t = (x<2) + (x<6) + (x<10);   //括号中的关系表达式有几个为真(1),确定了t的值,实则反映的是x的范围
    switch(t)
    {
    case 3: //(x<2) 、 (x<6) 、 (x<10) 全部为真,自然x<2
        y=x;
        break;
    case 2: //(x<2) 、 (x<6) 、 (x<10) 为真有2,自然x>=2,且x<6
        y=x*x+1;
        break;
    case 1: //(x<2) 、 (x<6) 、 (x<10) 为真有1,自然……
        y=-x;
        break;
    case 0://只有(x<2) 、 (x<6) 、 (x<10) 全0了.也可写作default:
        y=-x*x-1;
    }
    cout<<y<<endl;
    return 0;
}


目录
相关文章
|
3天前
|
C++ 编译器 程序员
C++ 从零基础到入门(3)—— 函数基础知识
C++ 从零基础到入门(3)—— 函数基础知识
|
3天前
|
存储 C++ UED
【C++】飞机大战项目记录
通过上面的设计,我们实现来看飞机大战的主要功能
25 4
|
3天前
|
存储 安全 测试技术
【C++】string学习 — 手搓string类项目
C++ 的 string 类是 C++ 标准库中提供的一个用于处理字符串的类。它在 C++ 的历史中扮演了重要的角色,为字符串处理提供了更加方便、高效的方法。
18 0
【C++】string学习 — 手搓string类项目
|
3天前
|
自然语言处理 编译器 C语言
【C++】C++ 入门 — 命名空间,输入输出,函数新特性
本文章是我对C++学习的开始,很荣幸与大家一同进步。 首先我先介绍一下C++,C++是上个世纪为了解决软件危机所创立 的一项面向对象的编程语言(OOP思想)。
36 1
【C++】C++ 入门 — 命名空间,输入输出,函数新特性
|
3天前
|
存储 算法 对象存储
【C++入门到精通】function包装器 | bind() 函数 C++11 [ C++入门 ]
【C++入门到精通】function包装器 | bind() 函数 C++11 [ C++入门 ]
15 1
|
3天前
|
存储 算法 数据安全/隐私保护
【C++入门到精通】 哈希结构 | 哈希冲突 | 哈希函数 | 闭散列 | 开散列 [ C++入门 ]
【C++入门到精通】 哈希结构 | 哈希冲突 | 哈希函数 | 闭散列 | 开散列 [ C++入门 ]
7 0
|
3天前
|
存储 自然语言处理 C++
刷题用到的非常有用的函数c++(持续更新)
刷题用到的非常有用的函数c++(持续更新)
18 1
|
3天前
|
存储 编译器 C++
【C++】内存管理和模板基础(new、delete、类及函数模板)
【C++】内存管理和模板基础(new、delete、类及函数模板)
25 1
|
3天前
|
存储 C++
c/c++宏定义(函数)
c/c++宏定义(函数)
|
3天前
|
编译器 C++
【C++进阶】引用 & 函数提高
【C++进阶】引用 & 函数提高