jpan1221 发表于 2020-11-14 20:29:23

求问一个pow函数实现的小问题

个人感觉所写代码没问题
但不知道是不是数据类型的原因
每次输入进去一个小数都会有问题
无法正确得到base的值
求大佬指点
代码如下:
#include<math.h>
#include<stdio.h>
double a;
int b;
float result=1;

double power(double base,int exponent)
{
    for(int i = 1;i <= exponent;i++)
      result *= base;
    //result = pow(base,exponent);
    return result;
}

int main()
{
    printf("Please input the base:\n");
    scanf("%f",&a);
    printf("Please input the exponent:\n");
    scanf("%d",&b);
    power(a,b);
    printf("The result of the pow is %f",result);
    return 0;
}

Twilight6 发表于 2020-11-14 20:31:48


代码格式化错了,double数据类型应该用 %lf ,而不是 %f

float 用 %f 哈,参考代码:

#include<math.h>
#include<stdio.h>
double a;
int b;
float result=1;

double power(double base,int exponent)
{
    for(int i = 1;i <= exponent;i++)
      result *= base;
    //result = pow(base,exponent);
    return result;
}

int main()
{
    printf("Please input the base:\n");
    scanf("%lf",&a);
    printf("Please input the exponent:\n");
    scanf("%d",&b);
    power(a,b);
    printf("The result of the pow is %.2lf",result);
    return 0;
}

jackz007 发表于 2020-11-14 20:45:25

本帖最后由 jackz007 于 2020-11-14 20:48 编辑

      随便用全局变量可不是一个好习惯,全局变量必须是山穷水尽时候的无奈之选。
#include <stdio.h>

double power(double base , int exponent)
{
      double result                                                          ;
      int i                                                                  ;
      for(i = 0 , result = 1.0 ; i < exponent ; i ++) result = result * base ;
      return result                                                          ;
}

int main()
{
      double base                                                       ;
      int exponent                                                      ;
      printf("Please input the base : ")                              ;
      scanf("%lf" , & base)                                             ;
      printf("Please input the exponent : ")                            ;
      scanf("%d" , & exponent)                                          ;
      printf("The result of the pow is %lf\n" , power(base , exponent)) ;
}

jpan1221 发表于 2020-11-14 20:53:40

jackz007 发表于 2020-11-14 20:45
随便用全局变量可不是一个好习惯,全局变量必须是山穷水尽时候的无奈之选。

为什么不能随便使用全局变量吗?窃以为相反如果只是在函数里面定义变量不是会受到scope 和living memory的影响吗?

jackz007 发表于 2020-11-14 21:03:17

jpan1221 发表于 2020-11-14 20:53
为什么不能随便使用全局变量吗?窃以为相反如果只是在函数里面定义变量不是会受到scope 和living memory ...

      在代码量和变量比较少的程序中看不出全局变量的危害,当你的项目很大的时候,全局变量会让你难以理清头绪。

jpan1221 发表于 2020-11-14 21:08:33

jackz007 发表于 2020-11-14 21:03
在代码量和变量比较少的程序中看不出全局变量的危害,当你的项目很大的时候,全局变量会让你难以理 ...

嗯嗯好的 谢谢
还想请问一下小甲鱼给的printf的format里面%f不也是支持double的吗 如图所示 为什么在这个程序里面不可以?
页: [1]
查看完整版本: 求问一个pow函数实现的小问题