重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你这个题是ACM的题目?我看了下你的程序,正经的数字是可以的,但你说错了,那就该就是要考虑极限情况了。譬如x=0.0000000000000000000000000000000001的时候,你的程序输出是100.0。。。。。应该就是出错在这里了。
创新互联-专业网站定制、快速模板网站建设、高性价比萝北网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式萝北网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖萝北地区。费用合理售后完善,十多年实体公司更值得信赖。
还有我的老师告诉我,使用float不要用x==0这种表达方式,,因为float类型的等于其实就是在有限的位数上比较大小。。。当数字极小或者极大的时候就会出现不相等的数字会出现相等的情况了。
换成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;
}
}
试试改成这样吧:
#includestdio.h
int main()
{
float x,y;
scanf("%f",x);
if(x20)
{
y=x+100;
}
else
if(x=20x=100)
{
y=x;
}
else
y=x-100;
printf("x=%f,y=%f\n",x,y);
return 0;
}
问题似乎在于变量x,y的类型,应该是浮点型小数float,而不是整型int
希望能帮到你
我去,谁告诉你else是那么写的啊。。。这么简单的if ... else if ... else好像很多同学都不明白
else
{
flag = -1;
}
这个问题我在7.1讲里专门强调一下吧
另外,scanf估计你也不会用,
你写成这样:
scanf("%lf", x);
具体请参考优酷上的" C语言指南 "的第2.2讲,里面说的够清楚了。。。正在上传此段教程。