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

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

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

要求用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;
}
时间: 2024-09-20 00:20:35

C++第9周项目1分段函数求值的相关文章

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

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 [项目1:分段函数求值]编程序,计算下面函数的值并输出 参考解答: //解法1 #include using namespace std; int main( ) { int x, y; cin>>x; if (x>=1) y=x-1; else y=-x+1; cout<<y<<endl; return 0; } 上面的程序,第8行-第1

2014秋C++第8周项目1参考-分段函数求值

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,实践要求见http://blog.csdn.net/sxhelijian/article/details/39493833. 课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看. [项目1:分段函数求值] 编程序,计算下面函数的值并输出(x取整型即可) 参考解答: //解法1 #include <iostream> using nam

2014秋C++第8周项目3参考-多分段函数求值

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,实践要求见http://blog.csdn.net/sxhelijian/article/details/39493833. 课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.   [项目3:多分段函数求值] 从键盘输入x的值(要求为实型),根据下面的公式计算并输出y的值.  (1)请用if~else~语句的嵌套,实现这个多分支的程序: 参考解

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

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目1:分段函数求值]从键盘输入x的值(要求为实型),根据以下公式计算并输出x和y 的值.  要求采用两种解法完成,解法1用if-else语句,解法2主体用switch语句(注意到分段的关键点处,x的值均是偶数,这是可以利用的条件). 提示:在这个公式中,x<0是非法的输入,程序中应该做出处理.测试要求:运行至少5次程序,测试程序在所有可能的执行流程中,是否存在错误的处

Raptor实践参考:分段函数求值

返回->课程主页 2-3 分段函数求值 从键盘输入x的值,根据下面的公式计算并输出y的值. [参考解答]

C++第12周项目2——分段函数

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目2-求解分段函数的值] 参考解答: #include<iostream> using namespace std; const double x1=0.3, x2=0.8; //定义为全局常变量,方便,易维护 double f(double); //此处加入对自定义函数f的声明 int main( ) { double x; cout<<"请

《C语言及程序设计》实践参考——求解分段函数的值

返回:贺老师课程教学链接  项目要求 [项目2-求解分段函数的值] #include<stdio.h> double f(double); //这一句是对自定义函数f的声明 int main( ) { double x; printf("请输入x的值:"); scanf("%lf", &x); printf("解得:f(%.2f)=%.2f\n", x, f(x)); //调用函数f求解 return 0; } //将自定义函

《C语言及程序设计》实践参考——两段函数求值

返回:贺老师课程教学链接  项目要求 [项目:两段函数求值]编程序,计算下面函数的值并输出(x取整型即可)[参考解答] 解法1: #include <stdio.h> int main ( ) { int x, y; scanf("%d", &x); if (x>=1) y=x-1; else y=-x+1; printf("%d\n",y); return 0; } 上面的程序,用一个完整的双分支求值,之后再输出.先求解,再输出,这一&q

由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值。

问题描述 如题这个问题怎么解决网上有说CheckForIllegalCrossThreadCalls=false;我加上之后还是出现这个问题 解决方案 解决方案二:什么叫做函数求值超时,函数执行时间过长?解决方案三:我设置了一个断点运行到这里就会出现这样的问题啊解决方案四:ms-help://MS.MSDNQTR.v90.chs/dv_fxmclictl/html/138f38b6-1099-4fd5-910c-390b41cbad35.htm本机中文MSDN解决方案五:CheckForIlle