第9周任务1-分段函数求值 两种方法

来源:互联网 发布:精雕机编程 编辑:程序博客网 时间:2024/05/22 06:35
上机内容:用 if-else语句和 switch 语句求解分段函数上机目的:学会分支结构程序设计/* *Copyright (c) 2012, 烟台大学计算机学院 *All rightsreserved. * 作        者:徐凯旋 * 完成日期:2012 年 10 月 25 日 * 版 本 号:v1.0 * 输入描述: x,x为非负数 * 问题描述:求以 x 为自变量的分段函数的值,y=x(0<=x<2), y=x^2+2(2<=x<6), y=(x+1)^(1/2) (6<=x<10) y=1/(x+1)(x>=10) * 程序输出:y的值 * 问题分析:本解用 switch 多分支语句完成求解。可以用 x除以 2后取整——用表达式 int(x/2),合法的值为 0、1、2、 3、4及大于 5的整数,据此得出 case对应的各分     支。 * 算法设计:输入 x后,判断是否为非负数。当是非负数时,按照上述分段的方法分别处理。 */
方法一:if-else型#include <iostream>#include <Cmath>using namespace std;int main(){   double x,y;   cin>>x;   if (x<0)    cout<<"Input error!"<<endl;   else   {   if (x<=2)          y=x;   else if (x<6)          y=x*x+1;   else if (x<10)          y=sqrt(x+1);   else           y=1/(x+1);   }   cout<<"x="<<x<<",y="<<y<<endl;   return 0;}
方法二:switch型#include<iostream>  #include <cmath>using namespace std;int main(){  float x,y;  int c;  cin>>x;//应注意 此处c应为整型。  if (x<0)     cout<<"Input error!"<<endl;  else  { c=int(x)/2;//以整型c的值作为switch语句的临界点。例如,当c=0时,此时x应有0≤x<2;当c=1,c=2时,此时对应的有2≤x<6,以此类推。 switch(c) { case 0:  y=x;  break; case 1: case 2:  y=x*x+1;  break; case 3: case 4: y=sqrt(x+1);  break; default: y=1/(x+1);  }     cout<<"x="<<x<<",y="<<y<<endl;  }  return 0;     }

 

运行结果:

心得体会:

       if-else语句还需深入体会。应争取运用最简洁便利的方法。