编程论坛
注册
登录
编程论坛
→
C语言论坛
我是大一新生,有一个编程问题想请教各位大佬
菜鸟sdc
发布于 2019-06-27 10:03, 2260 次点击
编写一个韩束,输入n为偶数时,调用函数1/2+1/4+...+1/n,当输入奇数时,调用函数1/1+1/3+1/5...+1/n(利用指针函数)
8 回复
#2
zbjzbj
2019-06-27 10:16
你是请教还是卖作业?
#3
rjsp
2019-06-27 10:28
不知道“指针函数”是个什么玩意儿?
这是个不需要思考算法的题目,按要求写出来就行了
#include <stdio.h>
int main( void )
{
int n;
scanf( "%d", &n );
double y = 0;
for( ; n>0; n-=2 )
y += 1.0/n;
printf( "%f\n", y );
}
#4
菜鸟sdc
2019-06-27 20:57
回复 2楼 zbjzbj
请教啊,我指针没学懂。
#5
菜鸟sdc
2019-06-27 20:58
回复 3楼 rjsp
我也弄出来这个,不懂什么叫指针函数,
#6
菜鸟sdc
2019-06-27 21:34
回复 3楼 rjsp
#include<stdio.h>
double *Sum(double*p,int n);
int main()
{
int n;
double *p;
printf("输入n: ");
scanf("%d",&n);
printf("结果=%0.2lf",p);
return 0;
}
double *Sum(double*p,int n)
{
double s=0.0;
double i;
if(n%2==0)
{
for(i=2.0;i<=n;i=i+2.0)
s=s+(1.0/i);
*p=s;
}
else
{
for(i=1;i<=n;i=i+2)
s=s+(1.0/i);
*p=s;
}
return (p);
}
我的这个运行结果是0;
#7
MJTT
2019-06-29 20:53
#include<stdio.h>
double Sum(int n);
int main()
{
int n;
double (*p)(int)=∑ //p是函数指针 指向Sum函数的入口地址
printf("输入n: ");
scanf("%d",&n);
printf("结果=%0.2lf",p(n));
return 0;
}
double Sum(int n)
{
double s=0.0;
double i;
if(n%2==0)
{
for(i=2.0;i<=n;i=i+2.0)
{
s=s+(1.0/i);
}
}
else
{
for(i=1;i<=n;i=i+2)
{
s=s+(1.0/i);
}
}
return (s);
}
是不是你要的结果呢 哈哈
#8
MJTT
2019-06-29 20:55
回复 6楼 菜鸟sdc
你这个之所以为0 是因为你输入的n和你的指针p都没有用用到正确的位置,输入n了有啥用?都没有用到哟 哈哈 还有你定义的指针p,用来干嘛了?
#9
非牛顿流体
2019-06-29 21:31
我觉得可以不用指针吧,因为题目要求简单,直接这么用if分类就好了吧
double sum(int n)
{
int i,
double sum=0;
if(n%2==0)
for(i=2;i<n;i=i+2)
sum=sum+1.0/(1.0*i);
else
for(i=1;i<=n;i=i+2)
sum=sum+1.0/(1.0*i);
return sum;
}
1