本文目錄一覽:
- 1、c語言 分段函數求值
- 2、C語言函數求值
- 3、C語言 分段函數求值。
- 4、如何用C語言用伽馬函數求值
- 5、用C語言求分段函數值
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;
}
}
C語言函數求值
#include
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
追問:
在主函數中調用一個函數求這個值怎麼搞?
謝謝
評論
載入更多
C語言 分段函數求值。
#includestdio.h
#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;
}
如何用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 (y3.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(x0)y=x*x-1;
else if(x1)y=x*x;
else y=x*x+1;
printf(“%g”,y);
return 0;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/185700.html