#include?stdio.h?
我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、豐都ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的豐都網(wǎng)站制作公司
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;?
}
你這個(gè)題是ACM的題目?我看了下你的程序,正經(jīng)的數(shù)字是可以的,但你說錯(cuò)了,那就該就是要考慮極限情況了。譬如x=0.0000000000000000000000000000000001的時(shí)候,你的程序輸出是100.0。。。。。應(yīng)該就是出錯(cuò)在這里了。
還有我的老師告訴我,使用float不要用x==0這種表達(dá)方式,,因?yàn)閒loat類型的等于其實(shí)就是在有限的位數(shù)上比較大小。。。當(dāng)數(shù)字極小或者極大的時(shí)候就會(huì)出現(xiàn)不相等的數(shù)字會(huì)出現(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;
}
}
x改成float類型,第一句printf結(jié)尾的分號(hào)是中文的,沒必要esle if,要清空緩沖區(qū),否則程序會(huì)一閃而過
#includestdio.h
#includemath.h
void main()
{
float x;
printf("輸入一個(gè)數(shù)X\n");
scanf("%f",x);
if (x0)
x=0;
else
x=2*x+1;
printf("%f\n",x);
fflush(stdin);
getchar();
}