标题:一道关于函数的题目。。大神帮忙看看哪里出错了。。
只看楼主
LOVE燕
Rank: 2
等 级:论坛游民
帖 子:37
专家分:12
注 册:2012-11-14
结帖率:90.91%
已结贴  问题点数:20 回复次数:9 
一道关于函数的题目。。大神帮忙看看哪里出错了。。
题目 :用函数调用的方法求f(k,n)=1^k+2^k+……n^k,由于不懂怎么输入平方。。。所以以上1^k代表的是1的K次方。。2^k表示2的K次方。。
我的代码编写如下:#include "stdio.h"
#include "conio.h"
long fnsum(long n,long k);
long fnsum(long n,long k)
{long i,h;
 for(h=1;h<=n;h++)
    {
    auto long H=1;
    for(i=1;i<=k;i++)
        {H=H*h;

        }
        return H;
        }

}

long fnnum(long n,long k)            
   
{  long i,sum=0;        ………………          for(i=1;i<=n;i++)   
      {sum=sum+fnsum(i,0); ………………  个人感觉好像是这些地方出错第二个函数调用错误,但我是新手,,也不怎么懂。。
       printf("%ld\n",sum);}………………这个是我用来检查的。。发现在这里的函数的值为1 2 3 4 5 6 …………;
       return  sum;
     }
void main()                                                 忘有懂的大神指点下。。尽量不用自己写的给我。。我只想知道自己这里哪里错了。。好可以改正。。谢谢。。
{ long n,k,Hum;
    printf("please input n and k:");
    scanf("%ld%ld",&n,&k);
    Hum=fnnum(n,k);
    printf("%ld",Hum);

    getch();

}
搜索更多相关主题的帖子: long include return 
2012-11-19 22:06
LOVE燕
Rank: 2
等 级:论坛游民
帖 子:37
专家分:12
注 册:2012-11-14
得分:0 
更正一下。。好像是前面的那个被调用函数错的。long fnsum(long n,long k);
long fnsum(long n,long k)
{long i,h;
for(h=1;h<=n;h++)
    {
    auto long H=1;
    for(i=1;i<=k;i++)
        {H=H*h;

        }
     printf("%ld\n",H);   ……………………加上这句以后。。发现不怎么输入。。。H都是等于1的。。  
 return H;
        }

2012-11-19 22:22
LOVE燕
Rank: 2
等 级:论坛游民
帖 子:37
专家分:12
注 册:2012-11-14
得分:0 
再加一句。。。为什么我这样就可以。
#include "stdio.h"
#include "conio.h"
void main()
{int i,h,n,k;
  printf("please input n and k:");
  scanf("%d%d",&n,&k);

    for(h=1;h<=n;h++)
    {auto int H=1;
    for(i=1;i<=k;i++)
        {H=H*h;

        }
         printf("%d\n",H);
         }

        getch();
}
2012-11-19 22:38
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
得分:10 
亲,你函数写错了
long fnsum(long n,long k)
{long i,h,sum=0;
for(h=1;h<=n;h++)
    {
    auto long H=1;
    for(i=1;i<=k;i++)
        {H=H*h;

        }
        sum+=H;
     printf("%ld\n",H);   ……………………加上这句以后。。发现不怎么输入。。。H都是等于1的。。  
return sum;
        }
试试

WE GO
2012-11-19 22:45
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
得分:0 
long fnsum(long n,long k)
{    long i,h,sum=0;
     for(h=1;h<=n;h++)
     {
        auto long H=1;
        for(i=1;i<=k;i++)
        {
            H=H*h;
        }
        sum+=H;
    }
     printf("%ld\n",H);   ……………………加上这句以后。。发现不怎么输入。。。H都是等于1的。。  
return sum;
}

WE GO
2012-11-19 22:47
youngdavid
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:698
注 册:2012-9-24
得分:10 
楼主我明白你的意思,你是想用函数fnsum求一个数n的k次方,用函数fnnum把各个项相加,你用红色注释的那句话
sum=sum+fnsum(i,0); 应该改为sum=sum+fnsum(i,k); 这样就好了,表示从1到n每个数求k次方 再求和。
另外,你的函数fnsum有点问题,只需要一个for循环就可以了,以下是我改好的代码,你看看:
程序代码:
#include "stdio.h"
#include "conio.h"
long fnsum(long n,long k);
long fnnum(long n,long k);

long fnsum(long n,long k)
{long i;

    auto long H=1;
    for(i=1;i<=k;i++)
        H=H*n;
        return H;

}

long fnnum(long n,long k)           

   {  long i,sum=0;     

    for(i=1;i<=n;i++)  

      sum=sum+fnsum(i,k);

       return  sum;
     }
void main()                 

{ long n,k,Hum;
    printf("please input n and k:");
    scanf("%ld%ld",&n,&k);
    Hum=fnnum(n,k);
    printf("%ld",Hum);

   getch();
return;
} 

2012-11-19 23:19
JimQ
Rank: 2
来 自:甘肃定西
等 级:论坛游民
帖 子:14
专家分:21
注 册:2012-11-13
得分:0 
对你这个函数f(k,n)=1^k+2^k+……n^k来说,如果我输入n=2,k=2,则输出应该是5吧!而你连续几次改动的结果都不是这个,难道是我理解错了?
2012-11-19 23:19
LOVE燕
Rank: 2
等 级:论坛游民
帖 子:37
专家分:12
注 册:2012-11-14
得分:0 
回复 6楼 youngdavid
为何只用一个for就可以啦。。我怎么算是要两个for才可以了。。
2012-11-20 23:15
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
得分:0 
你逻辑有问题了

WE GO
2012-11-20 23:16
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
得分:0 
6楼说你用一个for是因为他把k次方和求和放在俩个函数中了
一个函数一个for
其实也是两个

WE GO
2012-11-20 23:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-387612-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.264232 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved