(C语言)谁给我解释一下,书本上的这段小代码!关于函数调用嵌套的!

#include "stdio.h"
double power(int m,int n)/*求M的N次方的值*/
{
int i;
double PW=1;
for(i=1;i<=n;++i)
PW*=m;
return(PW);
}
double sum_power(int k,int n)/*求1的K次方+2的K次方+3的K次方+。。。。的值并返回*/
{
int i;
double sum=0;
for(i=1;i<=n;++i)
sum+=power(i,k);
return(sum);
}
main()
{
int k,n;
printf("\ninput k:");
scanf("%d",&k);
printf("\ninput n:");
scanf("%d",&n);
printf("\nsum of%dth powers of integers from 1 to %d=%.01f\n",k,n,sum_power(k,n));
}(PS:这是求1的K次方加2的K次方一致加到N的K次方的代码,另外,PW*的*号在右上方)问题一:到底两个子函数是谁在谁的里面?问题二:假如的知道了是power嵌套在sum_power里面,那么是怎么嵌进去的?我怎么看不出来!因为在SUM_POWER里面看见POWER(i,k)的两个形参是怎么回事,解释一下啊!问题三:请问实参必须和子函数的形参一致吗?不要的话,举个列子吧,因为我老是在有参函数调用的时候,不知道()里面写什么?问题四:我怎么知道有必要定义函数的时候,要不要定义有参函数,因为书上写的是最好定义空的!

首先,我觉得你理解上有点问题,子函数与子函数之间,干嘛要强调谁在谁的里面?函数与函数之间的关系应该是调用,sum+=power(i,k)[sum_power(int k,int n)里面],就是函数运行到了这里就调用power()函数,就是走到这里,就带着i,k,两个变量,滚到sum_power(int k,int n)里面去运行,把return的值弄回来就可以了。

二:SUM_POWER里面看见POWER(i,k)的两个形参,就是sum_power(int k,int n)里面的i和k的值啊;

三:实参不一定要和形参一致,形参只是个形式,随便写什么名字,比如:
int abc(int a,int b)
{
return a+b;
}
调用的时候完全可以是:
void main()
{
int x=2,y=3;
p=abc(x,y);
}
本质是把x,y的值传到 abc()中的a,b里面,a,b是abc()里面的变量,得到了主函数的x,y的值而已;可以理解为有一条语句:a=x;b=y;
四,定义函数的时候,参数是根据需要写的,当你要一个函数实现一个功能的时候,自然的会发现自己需要什么数据什么变量才能实现这个功能,所以你开始设置的变量不够用后面再添加也是很正常的;

不知道这样说,能看懂不?如果哪儿没说清楚的话,欢迎追问,可能表示不太清晰追问

那我想知道,,MAIN()函数里面的K和N都给到什么地方去了?或者是先给到什么地方?再给到什么地方?这样问对吗?我的C语言太烂了!

追答

printf("\nsum of%dth powers of integers from 1 to %d=%.01f\n",k,n,sum_power(k,n));

看到这里了么?前面一串就不看了,最后面,,sum_power(k,n),把k,n这两个东西传到了sum_power()里面的k和n里面了;然后这个函数里面的k和n就值了;然后开始执行sum_power(k,n)函数,一步步按着电脑执行的步骤走就行了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-08
for one:main()是主函数,其他都是子函数,在主函数中调用,不管身程序主函数只有一个
for two:power(i,k)<math.h>这个头文件里的函数,只要程序开头加了这个头文件直接可以调用,计算i的k次方,你看程序只要盯着主函数顺序往下走,遇到子函数就跳到子函数看,执行完跳回主函数继续执行主函数后续部分
for three:所谓形参初学的时候不要被实参,形参这些个晦涩的名词搞得没有头绪,其实就想数学里你定义的一个代数一样,给了一个量一个名称而已
for four:变量的定义一般是在你设计程序的时候需要用到几个或者用到什么类型的变量在去定义
第2个回答  2013-06-08

    主函数调用了 sum_power , sum_power 调用了 power

    sum+=power(i,k); 这里调用的

    没明白你想问什么,调用函数的时候只要数据类型对就可以了

    是否定义参数要看你想实现什么功能了,或者说要看你怎么设计你的程序

追问

请问,一,MAIN函数在最后“ to %d=%.01f\n",k,n,sum_power(k,n));”调用的SUM_POWER的吗?
二,我说的是不搞不懂在调有参函数的时候,在函数名后面的括号里,写什么参数!
不要意思C语言太烂了,望指教!

追答

    是的

    比如 sum+=power(i,k); 这句,power 函数的参量表是 int m,int n ,那么调用的时候就把 i 的值给了 m , k 的值给了 n ,然后把 m 和 n 带到 power 的函数体里运算。

追问

追答

n 在 sum_power 中也是不变的,赋给 power 的是 i ,而 i 循环了 1 到 n。剩下的理解都对

追问

追答

i++ 和 ++i 在这里没关系,都是在每次循环最后进行的。但是都写 i++ ,是习惯吧

本回答被提问者采纳
第3个回答  2013-06-08
 double sum_power(int k,int n)/*求1的K次方+2的K次方+3的K次方+。。。。的值并返回*/
{
int i;
double sum=0;
for(i=1;i<=n;++i)
sum+=power(i,k);
return(sum);
}

sum+=power(i,k)  这句就调用了power函数,因为他也是在自定义函数中调用的,属于嵌套。

相似回答