Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 分段函数计算_C - Fatal编程技术网

C 分段函数计算

C 分段函数计算,c,C,输入n,计算fn,精确到小数点后2位。 示例:输入5输出:15.00 下面代码的改进/建议Welcome以下是我到目前为止的想法 #include <stdio.h> #include <math.h> int main() { float m; scanf("%f", &m); if (m < 0) m = abs(m); else if (m < 2) m = sqrt(m +

输入n,计算fn,精确到小数点后2位。

示例:输入5输出:15.00

下面代码的改进/建议Welcome以下是我到目前为止的想法

#include <stdio.h>
#include <math.h>

int main() {
    float m;

    scanf("%f", &m);
    if (m < 0)
        m = abs(m);

    else if (m < 2)
        m = sqrt(m + 1);

    else if (m < 4)
        m = pow(m + 2, 5);

    else if (m >= 4)
        m = (m * 2);
    m = m + 5;

    printf("%1.2f", m);
}
如果你最后的陈述是错误的,那一定是错误的

else if (m >= 4)
{
    m = (m * 2);
    m = m + 5;
}
否则,m=m+5;在if的主体之外,并将在所有条件下的每种情况下执行

或者,你可以直接写

else if (m >= 4)
    m = m * 2 + 5;

你需要在你的最后一根牙套上

 else if (m >= 4) {
    m = (m * 2);
    m = m + 5;
 }
而不是

 else if (m >= 4)
    m = (m * 2);
m = m + 5;

所有if块都应使用大括号。这样可以避免上一个案例中的错误,应该是:

} else if (m >= 4) {
    m = (m * 2);
    m = m + 5;
}
或者更好:

} else if (m >= 4) {
    m = (m * 2) + 5;
}
此外,第一种情况可以写成:

if (m < 0) {
    m = -m;
} else if ...

尽管这实际上是对原始公式的优化,根据编译器及其选项的不同,性能可能会更高,也可能不会更高。

问题是什么?这段代码可能会通过使用单独的结果浮点来改进,然后在每个if语句中,只需适当地设置result=absm或result=2*m+5,使用printf%1.2f,结果;最后,您还应该定义一个函数float ffloat x{…}来进行计算,然后主要使用scanf和printf%1.2f,fm。非常感谢dbaupp,这很有意义