#includestdio.h
創(chuàng)新互聯(lián)建站是一家專業(yè)提供永定企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計制作、做網(wǎng)站、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為永定眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進(jìn)行中。
#includemath.h
int main()
{
int mark = -1;
float x,y;
scanf("%f",x);
if(x -2.0)
{
mark = 0;
}
else if(x = 3.0)
{
mark = 2;
}
else
{
mark = 1;
}
switch(mark)
{
case 0 : y = 7.0 - 2 * x; break;
case 1 : y = 5.0 - fabs(3 * x + 2.0); break;
case 2 : y = 3 * x + 4.0; break;
default: mark = 100;
}
if(mark == 100)
{
printf("error\n");
return 0;
}
printf("%f\n",y);
return 0;
}
你這個題是ACM的題目?我看了下你的程序,正經(jīng)的數(shù)字是可以的,但你說錯了,那就該就是要考慮極限情況了。譬如x=0.0000000000000000000000000000000001的時候,你的程序輸出是100.0。。。。。應(yīng)該就是出錯在這里了。
還有我的老師告訴我,使用float不要用x==0這種表達(dá)方式,,因?yàn)閒loat類型的等于其實(shí)就是在有限的位數(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;
}
}
#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;?
}
當(dāng)前標(biāo)題:c語言實(shí)現(xiàn)分段函數(shù)求值,用c語言求分段函數(shù)
鏈接URL:http://chinadenli.net/article0/heccoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、標(biāo)簽優(yōu)化、網(wǎng)站排名、網(wǎng)站導(dǎo)航、微信公眾號、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)