小弟初学,,,请各位一定要帮忙修改一下,,,感激不禁,,在线等。。

xiaofeng3385 2003-09-04 07:37:00
问题是利用指针函数:编写一个函数,输入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;
}
...全文
22 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaofeng3385 2003-09-05
  • 打赏
  • 举报
回复
我在TC下运行有点问题哦???
leechildren 2003-09-05
  • 打赏
  • 举报
回复
我没有这个环境, 有心而无力了。
leechildren 2003-09-04
  • 打赏
  • 举报
回复
#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下运行没问题。
xiaofeng3385 2003-09-04
  • 打赏
  • 举报
回复
谁帮帮我呀
xiaofeng3385 2003-09-04
  • 打赏
  • 举报
回复
例如1/1+1/3=4/3这样的显示结果//请帮忙

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧