小弟初学,,,请各位一定要帮忙修改一下,,,感激不禁,,在线等。。
问题是利用指针函数:编写一个函数,输入N为偶数是调用函数求1/2+|1/4+...+12/N
输入N为奇数时,调用函数求1/1+1/3+....+1/n.
###现在想增加个分数的显示结果,,,,,请帮忙修改···
#include<stdio.h>
float n,x,y,z,a;
float func1(float z);
float one(float x);
float two(float y);
int main()
{
printf("please enter a number:\n");
scanf("%f",&n);
a=func1(n);
printf("the answer is %f\n",a);
return 0;
}
float func1(float z)
{
float (*func0)(float); //有返回值,有参数
if ((int)z%2==0)
func0=one;
else
func0=two;
return (*func0)(z);
}
float one(float x)
{float b=0,i;
for(i=1;i<=(x/2);i++)
b+=(float)1/(2*i);
return b;
}
float two(float y)
{float c=0,j;
for(j=1;j<=(y+1)/2;j++)
c+=(float)1/(2*j-1);
return c;
}
问题点数:0、回复次数:5Top
1 楼xiaofeng3385(爱情老是缺货,轮也不会轮到我)回复于 2003-09-04 19:38:35 得分 0
例如1/1+1/3=4/3这样的显示结果//请帮忙Top
2 楼xiaofeng3385(爱情老是缺货,轮也不会轮到我)回复于 2003-09-04 21:48:02 得分 0
谁帮帮我呀Top
3 楼leechildren(里奥)回复于 2003-09-04 22:04:21 得分 0
#include<stdio.h>
#include <math.h>
float n,x,y,z,a;
float func1(float z);
float one(float x);
float two(float y);
void print(float a);
int main()
{
printf("please enter a number:\n");
scanf("%f",&n);
a=func1(n);
print(a);
return 0;
}
float func1(float z)
{
float (*func0)(float); //有返回值,有参数
if ((int)z%2==0)
func0=one;
else
func0=two;
return (*func0)(z);
}
float one(float x)
{float b=0,i;
for(i=1;i<=(x/2);i++)
b+=(float)1/(2*i);
return b;
}
float two(float y)
{float c=0,j;
for(j=1;j<=(y+1)/2;j++)
c+=(float)1/(2*j-1);
return c;
}
void print(float a) //把a换成分数
{
float e=1.0e-8, m=0.0;
int n=0 , k;
while(1)
{
m = a*(++n);
if((fabs(m-(int)m))<e )
{
k = int(m);
break;
}
if((fabs(m-(int)(m+1)))<e)
{
k = int(m+1);
break;
}
}
printf("the answer is %d/%d\n",k, n);
}
我在.net下运行没问题。Top
4 楼xiaofeng3385(爱情老是缺货,轮也不会轮到我)回复于 2003-09-05 12:44:19 得分 0
我在TC下运行有点问题哦???Top
5 楼leechildren(里奥)回复于 2003-09-05 13:33:35 得分 0
我没有这个环境, 有心而无力了。Top



