豪情天下 发表于 2021-6-10 21:08:38

这题 怎么走啊,我看不明白啊,

/* POW.C
*
*/

#include <stdio.h>

double power( double x, double y );

void main( void )
{
      double x = 3.0, y = 3.0, z;
      
      z = power( x, y );
      
      printf( "%.1f to the power of %.1f is %.1f\n", x, y, z );
}

double power( double x, double y )
{
      double z = x;

      while( --y )
      {
            z *= x;
      }

      return z;
}

不能懒 发表于 2021-6-10 21:14:04

哪里不明白,多看看

豪情天下 发表于 2021-6-10 21:22:32

double power( double x, double y )
{
       double z = x;

       while( --y )
       {
             z *= x;
       }

       return z;
}

豪情天下 发表于 2021-6-10 21:23:09

double power( double x, double y )
{
       double z = x;

       while( --y )
       {
             z *= x;
       }

       return z;
}
这个不明白,应该怎么走,能加我QQ指点一下吗。910992696

连帅帅 发表于 2021-6-11 15:24:01

while里面的判定式应该是boolean类型的,你这是double类型,这会报错的;
这是你想表达的意思吗?(如果是你需要把--y 改成 --y > 0 )
函数有两个参数,x和y,在函数内x的值被赋值给了z,而y作为了控制次数的控制符,--y表示的先减一在判断,而y--表示的先判断再减一,while循环中是进行运算z = z * x,最后把z的值返回。

万千只cnm 发表于 2021-6-11 15:46:43

什么怎么走

豪情天下 发表于 2021-6-11 21:46:50

我带进去走 走着走着就乱了

曾是旧时相识 发表于 2021-6-12 13:49:25

#include <stdio.h>
double power( double x, double y )
{
   double z = x;

   while( --y )
   // 先执行一次用y = y - 1
   // 传进来的值等于3.0
   // 所以while循环执行两次
   {
           // 进入循环
                z *= x;
                // z = z * x;
                // (1) z = 3.0 * 3.0
                // (2) z = 9.0 * 3.0
   }
        // 退出循环 z = 27.0
   return z;
}

int main()
{

        double x = 3.0, y = 3.0, z;

        z = power( x, y );
        // 用一个变量保存power的返回值

        printf( "%.1f to the power of %.1f is %.1f\n", x, y, z );

}
页: [1]
查看完整版本: 这题 怎么走啊,我看不明白啊,