你只給出了X的取值范圍,函數(shù)表達(dá)式呢,怎么沒有給出?
成都創(chuàng)新互聯(lián)公司2013年成立,先為龍陵等服務(wù)建站,龍陵等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為龍陵企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
我假設(shè)這樣:
Y=X (X〈-1)
Y=1(-1〈=X〈=1)
Y=X*X(X〉1)
用C語言實現(xiàn),輸入X的值,求Y的值,那么可以表示為:
int function(int x)
{
int y;
if(x-1)
{
y=x;
}
else if((x=-1)(x=1))
{
y=1;
}
else
{
y=x*x;
}
return y;
}
#include?stdio.h?
int?main()?
{double?x,y;
scanf("%lf",x);
if(x0)y=x*x-1;
else?if(x1)y=x*x;
else?y=x*x+1;
printf("%g",y);
return?0;?
}
你這個題是ACM的題目?我看了下你的
程序
,正經(jīng)的
數(shù)字
是可以的,但你說錯了,那就該就是要考慮極限情況了。譬如x=0.0000000000000000000000000000000001的時候,你的程序輸出是100.0。。。。。應(yīng)該就是出錯在這里了。
還有
我的老師
告訴我,使用float不要用x==0這種
表達(dá)方式
,,因為float
類型
的等于其實就是在有限的位數(shù)上比較
大小
。。。當(dāng)數(shù)字極小或者極大的時候就會出現(xiàn)不相等的數(shù)字會出現(xiàn)相等的情況了。
換成double就行了
#include
"stdio.h"
void
main()
{
double
a=0.0;
while(scanf("%lf",a)!=EOF)
{
if(a0)
{
a=a*a+1;
}
else
if(a0)
{
a=-a;
}
else
if(a==0)
{
a=100.0;
}
printf("%.1lf\n",a);
a=0.0;
}
}