C语言题 急 请牛人解

第三套试题
一、程序修改考试题(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,fun函数值为6.506583。
注意:请刎改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
#include
double fun( int m )
{

}
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)
return (x*1.0 -1)/(x*1.0-2);
else
return (x*1.0 +1)/(x*1.0-2);
}

2.
double fun( int m )
{
double s = 0;
int i;
for (i=1; i<=m; i++)
s += ln(i*1.0);
return s/0.5;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-04-13
一、程序修改考试题(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));
}本回答被提问者采纳
第2个回答  2008-12-10
C 语言二级题目

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; // 少分号
}

double f( double x) // 返回值为 double 型

printf("%lf\n", fun(5) ); //输出格式 %lf

------------------------------------------
double fun( int m )
{
int i;
double sum=0;

for(i=1;i<=m;i++)
{
sum=sum+log(i);
}

return sum/2;

} // 答案有问题..
相似回答