学编程的盆子 发表于 2021-2-22 16:21:03

求助一个函数嵌套的程序!

#include<stdio.h>
#define N 5
#define K 4
long power(int n,int k);
long total(int n,int k);

long power(int n,int k) //第几个数,乘多少次
{
    int i;
    long power = n;//赋予初始值n,由total中的i决定
    for(i = 1; i < k; i++)
    {
      power = n*n;
    }
    return power;
}

long total(int n,int k)//第几个数,加起来。k代表乘方多少次
{
    int i;
    long sum = 0;
    for(i = 1; i <= n; i++)
    {
      sum += power(i,k);
    }
    return sum;
}

int main()
{
    printf("N = %d,K = %d\n",N,K);
    printf("sum = %ld\n",total(N,K));
    return 0;
}

算出来的答案sum = 55; 但是书上算出来是979;这个是用来就1的四次方加到5的四次方的,求大佬看看哪里出问题!感谢!

心驰神往 发表于 2021-2-22 16:36:36


#include<stdio.h>
#define N 5
#define K 4
long power(int n,int k);
long total(int n,int k);

long power(int n,int k) //第几个数,乘多少次
{
    int i;
    long power = n;//赋予初始值n,由total中的i决定
    for(i = 1; i < k; i++)
    {
      power = power*n;//把n*n改成power*n
    }
    return power;
}

long total(int n,int k)//第几个数,加起来。k代表乘方多少次
{
    int i;
    long sum = 0;
    for(i = 1; i <= n; i++)
    {
      sum += power(i,k);
    }
    return sum;
}

int main()
{
    printf("N = %d,K = %d\n",N,K);
    printf("sum = %ld\n",total(N,K));
    return 0;
}

公子缠乡 发表于 2021-2-22 19:04:43

把题目发出来

quark 发表于 2021-2-22 19:38:36

power=n*n ;改为
power *=n; 即可。

学编程的盆子 发表于 2021-2-22 20:45:47

quark 发表于 2021-2-22 19:38
power=n*n ;改为
power *=n; 即可。

可以了 为啥呀 这两个不应该是等价的吗

学编程的盆子 发表于 2021-2-22 20:46:46

心驰神往 发表于 2021-2-22 16:36


为啥为啥

学编程的盆子 发表于 2021-2-22 21:47:57

学编程的盆子 发表于 2021-2-22 20:46
为啥为啥

懂了

学编程的盆子 发表于 2021-2-22 21:49:37

学编程的盆子 发表于 2021-2-22 20:45
可以了 为啥呀 这两个不应该是等价的吗

懂了

心驰神往 发表于 2021-2-23 07:46:31

学编程的盆子 发表于 2021-2-22 20:46
为啥为啥

真的可以啊

quark 发表于 2021-2-24 21:26:52

找郝斌的C语言视频好好学学赋值语句吧。你会用+=、-=,就应该会用*=、/=;对于递归运算,不用前述的赋值号,等号右边是要有自身的。
页: [1]
查看完整版本: 求助一个函数嵌套的程序!