C语言及程序设计 实践参考 分段函数求值switch语句版

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

返回:贺老师课程教学链接  项目要求


【项目:分段函数求值switch语句版】
从键盘输入x的值(要求为整型),根据公式1计算并输出x和y的值。要求用switch语句完成。

[参考解答]

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

#include #include int main ( ){    int x, a;    double y;    scanf("%d", &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=sqrt(x+1);        break;    default://如果走到这一分支,对应的是x>=10的所有情况        y=1.0/(x+1);    }    printf("%f\n", y);    return 0;}


解法2:构造表达式 t=(x<2) + (x<6) + (x<10)。由于关系表达式(x
#include #include int main ( ){    int x, t;    double y;    scanf("%d", &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=sqrt(x+1);        break;    case 0://只有(x<2) 、 (x<6) 、 (x<10) 全0了.也可写作default:        y=1.0/(x+1);    }    printf("%d\n", y);    return 0;}




           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

你可能感兴趣的:(C语言及程序设计 实践参考 分段函数求值switch语句版)