注册 登录
编程论坛 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
zbjzbj2019-06-27 10:16
你是请教还是卖作业?
#3
rjsp2019-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
菜鸟sdc2019-06-27 20:57
回复 2楼 zbjzbj
请教啊,我指针没学懂。
#5
菜鸟sdc2019-06-27 20:58
回复 3楼 rjsp
我也弄出来这个,不懂什么叫指针函数,
#6
菜鸟sdc2019-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
MJTT2019-06-29 20:53
#include<stdio.h>
double Sum(int n);
int main()
{
    int n;
    double (*p)(int)=&Sum;  //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
MJTT2019-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