C语言题 急 请牛人解

来源:百度知道 编辑:UC知道 时间:2024/07/04 18:09:11
第三套试题
一、程序修改考试题(8分)
给定程序中的函数fun的功能是:计算
S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…+f(n)的值。例如,当n为5时,函数值应为:10.407143。
(x+1)/(x-2) x>0
f(x)= 0 x=0 或 x=2
(x-1)/(x-2) x<0
请改正函数f和fun中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include
#include
#include

f( double x)
{
if (x == 0.0 || x == 2.0)
return 0.0;
else if (x < 0.0)
return (x -1)/(x-2);
else
return (x +1)/(x-2);
}

double fun( int n )
{ int i; double s=0.0, y;
for (i= -n; i<=n; i++)
{y=f(1.0*i); s += y;}
return s
}

main ( )
{ clrscr( );
printf("%f\n", fun(5) );
}

二、程序设计考试题(12分)
编写函数fun,它的功能是计算: s = [ln(1)+ln(2)+ln(3)+…+ln(m)]0.5
在C语言中可调用log(n)函数求ln(n)。Log函数的引用说明是:double log(double x);
例如,若m = 20,fu

一、程序修改考试题(8分)

#include
#include
#include

double f(double x)
{
if (x == 0.0 || x == 2.0)
return 0.0;
else if (x < 0.0)
return (x -1)/(x-2);
else
return (x +1)/(x-2);
}

double fun( int n )
{ int i; double s=0.0, y;
for (i=(-1)*n; i<=n; i++)
{y=f(1.0*i); s += y;}
return s
}

main()
{
clrscr();
printf("%f\n",fun(5));
}

二、程序设计考试题(12分)

#include
#include
#include
double fun( int m )
{
double r=1.0;
while(m) r*=m;
return log(r);
}
main()
{
printf("%f\n", fun(20));
}

1.两个错误:

f( double x)
{
if (x == 0.0 || x == 2.0)
首先f()函数没有返回值,其次,double类型不能用“==”进行比较,而只能判断一个类型,所以建议,f()函数改写为:
double f( int x)
{
if (x == 0 || x == 2)
return 0.0;
else if (x < 0)
retur