int main()
{double x,y
scanf("%lf",&春吵x)
if(x<0)y=x*x-1
竖局else if(x<1)y=x*x
else y=x*x+1
printf("%g",y)
return 0
}
输入数用scanf()函数;
分段用switch()函数;
1、绝对值用math库芦扒里面的abs()函数
2、e^x用math库里面的pow(e,x)函数
3、同理指数的都有pow()函数,
4、cos函数也是math库里面的double cos(double x)函数
补充:对于自变量x的不同的取值范围,有着不同的对应法则陪肆昌,这样的函数通常叫做分段函数。它是一个函数,而不是几个函数;分段函数的定义域是各段函数定义域的并集,值域也是各段函数值域的并集雹穗。
你这个题是ACM的题目?我看了顷雹下你的程序,正经的数字是可以的,但你说错了雀猛帆,那就该就是要考虑极限情况知滑了。譬如x=0.0000000000000000000000000000000001的时候,你的程序输出是100.0。。。。。应该就是出错在这里了。还有我的老师告诉我,使用float不要用x==0这种表达方式,,因为float类型的等于其实就是在有限的位数上比较大小。。。当数字极小或者极大的时候就会出现不相等的数字会出现相等的情况了。
换成double就行了
#include "stdio.h"
void main()
{
double a=0.0
while(scanf("%lf",&a)!=EOF)
{
if(a>0)
{
a=a*a+1
}
else if(a<0)
{
a=-a
}
else if(a==0)
{
a=100.0
}
printf("%.1lf\n",a)
a=0.0
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)