本文目录一览:
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(a>0)
{
a=a*a+1;
}
else if(a<0)
{
a=-a;
}
else if(a==0)
{
a=100.0;
}
printf("%.1lf\n",a);
a=0.0;
}
}
C语言函数求值
#include <stdio.h>
int main()
{
int n,m;
int i;
double s=0;
printf("Please input two numbers. For example,3,7\n");
scanf("%d %d",&n,&m);
for(i=n;i<=m;i++)
{
s=s+i;
}
printf("%lf",s);
return 0;
}
追问:在主函数中调用一个函数求这个值怎么搞? 谢谢 评论 加载更多
C语言 分段函数求值。
#include<stdio.h>
#include<math.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;
}
如何用C语言用伽马函数求值
简单的说就是整数阶乘的推广,它有一个积分的表达式: Γ(x)=∫e^(-t)*t^(x-1)dt (积分的下限式0,上限式+∞) 算法源自《常用算法程序集》徐士良
#include "stdio.h"
double gam1(x)
double x;
{
int i;
double y,t,s,u;
static double a[11]={ 0.0000677106,-0.0003442342,
0.0015397681,-0.0024467480,0.0109736958,
-0.0002109075,0.0742379071,0.0815782188,
0.4118402518,0.4227843370,1.0};
if (x<=0.0)
{
printf("err**x=0!\n");
return(-1.0);
}
y=x;
if (y<=1.0)
{
t=1.0/(y*(y+1.0));
y=y+2.0;
}
else if (y<=2.0)
{
t=1.0/y;
y=y+1.0;
}
else if (y<=3.0)
t=1.0;
else
{
t=1.0;
while (y>3.0)
{
y=y-1.0;
t=t*y;
}
}
s=a[0];
u=y-2.0;
for (i=1; i<=10; i++)
s=s*u+a[i];
s=s*t;
return(s);
}
用C语言求分段函数值
#include<stdio.h>
int main()
{
double x,y;
scanf("%lf",&x);
if(x<0)
y=x*x-1;
else if(x<1)
y=x*x;
else
y=x*x+1;
printf("%g",y);
return 0;
}