
正文
c语言编程求分段函数的值 c语言如何求分段函数
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
用C语言求分段函数值
#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;
}
相关问答
Q1: c语言 分段函数求值
你这个题是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(a0)
{
a=a*a+1;
}
else if(a0)
{
a=-a;
}
else if(a==0)
{
a=100.0;
}
printf("%.1lf\n",a);
a=0.0;
}
}
Q2: C语言计算分段函数的值为什么不对呢?
问题一,x和y都是双精度型(double)数变量,用格式输入和输出时,要使用格式符%lf,否则会出错,得不到正确的结果。
你用的%d是整型(int)数的输出输入格式符。
所以你必须把他们统一起来,方法一是:把scanf和printf两个语句中的%d都换成%lf;方法二是:把前面定义语句double x,y;中的double换成int,语句变成:
int x,y;
采用上面两个方法都可以让程序正常运行。
问题二,scanf语句中双引号当中有“x=”,全部是:
scanf("x=%d",x);
或scanf("x=%lf",x);
这样的写法,要求在程序运行时,输入的内容要包含双引号内除格式符以外的所有字符,即你一定要输入:
x=2[回车]
系统才能读到x的值2。值得注意的是,x的大小写都必须跟程序中的大小写相同!
所以,你在程序运行时,直接输入:
2[回车]
系统并不会取得2,更不会把2赋值给x,所以,导致程序运行到后面,也不会得出正确的y的值(11)。
有鉴于此,也有两个办法让程序正确运行:
方法一,输入时按“x=2[回车]”;
方法二,由于按“x=”非常不方便,容易出错,建议把输入语句的x=去掉,改成:
scanf("%d",x);
或scanf("%lf",x);
就能按照你图片发来的输入方法操作,得到正确的结果了。
有什么问题请留言。
关于c语言编程求分段函数的值和c语言如何求分段函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。








