雨水 发表于 2014-8-14 20:20:26

求解释

本帖最后由 风之残月 于 2014-11-9 22:44 编辑

#include <stdio.h>
void main()
{
    double power(double x,double y);
    double a=2.0;double b = 3.0;
    double result;
    result = power(a,b);



}
double power(double x ,double y)
{
    double s;
    int i;
    for(i=1;i<y;i++)
    {
      s = x*x;


    }
    return s;



}
这我要算2的三次方怎么错了

流行语 发表于 2014-8-14 20:20:27

double power(double x ,double y)
{
        double s=1.0;
        int i;
        for(i=0;i<y;i++)
        {
                s = s*x;
        }
        return s;
}
1 你的循环次数少了一次。
2 你循环体中的代码错误,应该是 s = s * x;
麻烦你以后直接贴代码,这样我可以直接复制代码了!

X_BOT 发表于 2014-8-14 20:25:29

调用前未声明函数体,解决办法:1、main函数前声明一下函数体,2、或者把你的power函数复制到main函数前面

雨水 发表于 2014-8-14 20:36:58

X_BOT 发表于 2014-8-14 20:25
调用前未声明函数体,解决办法:1、main函数前声明一下函数体,2、或者把你的power函数复制到main函数前面

double power(double x,double y);第一行这个不是声明了吗?

小靚同学Leon 发表于 2014-8-14 20:41:58

本帖最后由 小靚同学Leon 于 2014-8-14 21:13 编辑

你的循环内部是s=x*x,s的值每次循环不改变的,所以一直都是4.

雨水 发表于 2014-8-14 20:52:18

小靚同学Leon 发表于 2014-8-14 20:41
函数声明是要在main函数前,不是在main函数内部声明。将这句double power(double x,double y); 拷贝到#incl ...

这是visualC++6.0 我试了,结果一样

小靚同学Leon 发表于 2014-8-14 21:09:30

雨水 发表于 2014-8-14 20:52
这是visualC++6.0 我试了,结果一样

是的,我搞混了,是你的代码有问题,子函数应该是酱紫的    double s;
    double i;
        s=x;
    for(i=1;i<y;i++)
    {

                s=s*x;

    }
    return s;

苏格拉没有底 发表于 2014-8-15 09:49:38

s=x*x错了,
无论你循环多少次,x的值没有变,s=x*x的值也不会变,s永远=x*x=2*2=4.
改正:
先给s初始化,s=1;
再计算s, s=s*x;

循环过程:
第一次, s=s*x=1*2=2;
第二次,   s=s*x=2*2=4;
第三次,   s=s*x=4*2=8;

ok.

1697673999 发表于 2014-8-15 15:42:48

a=2.0,作为实参传入函数,付给形参x,返回s=x*x,是x的平方,不是三次方

流行语 发表于 2014-8-15 21:02:02

请结贴!

雨水 发表于 2014-8-15 22:35:20

流行语 发表于 2014-8-15 21:02
请结贴!

你刷什么东西

黑暗漩涡 发表于 2014-8-16 06:19:09

回帖是一种美德
页: [1]
查看完整版本: 求解释