西绿柿556 2021-11-27 15:42 采纳率: 40%
浏览 143

C语言的分段函数求值问题

【问题描述】

已知有如下分段离散函数f (x),其中自变量x为[-1000,1000】
请编写一个程序计算函数f(f(x)) 的值。注意,当函数值有小数时四舍五入保留2位小数。

img

【输入格式】
输入一个实数x。
【输出格式】
输出f(f(x))函数值,当函数值有小数时四舍五入保留2位小数。
【输入样例1】0.5
【输入样例2】-3
【输出样例1】0.31
【输出样例2】-1.10
【注意】

浮点数计算过程中请使用double类型。


#include<stdio.h>
#include<math.h>
double f(double x){
    double a;
    if(fabs(x)<=1){
        a=fabs(x-1)-2;
        return f(a);
    }
    else{
        a=1/(1+x*x);
        return f(a);
    }
}
int main(){
    double x,y;
    scanf("%lf",&x);
    y=f(x);
    printf("%.2lf\n",y);
    return 0;
}

我的运算结果是超时了
占用您一两分钟帮我解决一下

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-11-27 15:59
    关注

    修改见注释处,供参考:

    #include<stdio.h>
    #include<math.h>
    double f(double x)
    {
        double a;
        if(fabs(x)<=1){
            a=fabs(x-1)-2;
            return a;   //修改
        }
        else{
            a=1.0/(1+x*x);//修改
            return a;   //修改
        }
    }
    int main(){
        double x,y;
        scanf("%lf",&x);
        y=f(f(x));      //修改
        printf("%.2lf\n",y);
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 11月27日