C 分段函数计算
输入n,计算fn,精确到小数点后2位。 示例:输入5输出:15.00 下面代码的改进/建议Welcome以下是我到目前为止的想法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 +
#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,这很有意义