鱼C论坛

 找回密码
 立即注册
查看: 1026|回复: 5

[已解决]求问一个pow函数实现的小问题

[复制链接]
发表于 2020-11-14 20:29:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
个人感觉所写代码没问题
但不知道是不是数据类型的原因
每次输入进去一个小数都会有问题
无法正确得到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;
}
最佳答案
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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 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)) ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

为什么不能随便使用全局变量吗?窃以为相反如果只是在函数里面定义变量不是会受到scope 和living memory的影响吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

      在代码量和变量比较少的程序中看不出全局变量的危害,当你的项目很大的时候,全局变量会让你难以理清头绪。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

嗯嗯好的 谢谢
还想请问一下小甲鱼给的printf的format里面%f不也是支持double的吗 如图所示 为什么在这个程序里面不可以?
NJ6CQ6GA6A1FEDP@BU[@%{X.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 18:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表