鱼C论坛

 找回密码
 立即注册
查看: 1533|回复: 17

[已解决]函数调用的问题

[复制链接]
发表于 2022-4-3 20:44:46 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
int main()
{  
double x,y,z;
double power(double a , double b);
scanf("%lf,%lf",&x,&y);
z=power(x,y);

printf("%lf",z);












}
double power(double a , double b)
{
  double z1,c,i,n,z,m,n1,r,re,re1,v,p,w,h,temp;
if(b==0)
{

z = 1;
return  z;
}
else if(b==1)
{

z = a;
return z ;

}
else if(b>0&&((int)(b*10))%10==0)
{
temp = a;
for(i=1;i<b;i++)
{
a = a *temp;


}
z = a;
return z ;

}       
else if(b>0&&((int)(b*10))%10!=0)
{       
n=0;
c= b -(int)b;
m = c;
for(i=1;i<1000;i++)
{
m= m *10;
n++;
if(((int)(m*10))%10==0)
{
break;

}
}
n1 = 10;
for(i=1;i<n;i++)
{
       
n1=n1 *10 ;

}
temp = a ;
r = a;
for(h=1;h<c*n1;h++)
{


r = r*temp;



}


for(v=1;v<1000;)
{
       
        p = v ;
        temp = v;

  for(w=1;w<n1;w++)
  { p = p*temp ;
  }
    if(p >r)
        {
        re = v;
        v=100000.0;
        break;
        }            
       
v = v +0.00001;



}
re1 =a;
temp = a;
for(i=1;i<(int)b;i=i+1)
{
re1 = re1  *  temp;
}
if(b<1&&b>0)
{
z = re ;
return z ;

}
else if(b>1)
{
z= re * re1;

return z ;
}
}
}



为什么我输入0和1之间的数值都正确,只要输入大於1的小数,有些数就发生问题,我研究很久,有大老可以解释吗
最佳答案
2022-4-3 21:22:34
#include <stdio.h>

double pow(double, int);

int main() {
        printf("%.2lf\n", pow(5, 3));
        printf("%.2lf\n", pow(1.25, 3));
        printf("%.2lf\n", pow(0.67, -7));
        return 0;
}

double pow(double base, int exponent) {
        if (!exponent) {
                return 1;
        }
        else if (exponent > 0) {
                return base * pow(base, exponent - 1);
        }
        return 1. / pow(base, -exponent);
}
125.00
1.95
16.50
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-3 21:07:45 | 显示全部楼层

回帖奖励 +1 鱼币

你这代码的排版,可读性太差了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-3 21:10:35 | 显示全部楼层

回帖奖励 +1 鱼币

本帖最后由 傻眼貓咪 于 2022-4-3 21:11 编辑

兄弟你蛮厉害的。目前为止我是没有看过有人自己写 pow() 函数底数 base 和指数 exponent 都是 double 类型(因为太复杂也太困难了,比如 2.5 ^ 1.36),除了 C 语言本来的头文件 <math.h> 里的 pow() 之外,一般自己写的普通 pow() 函数都只是用 pow(int, int),再深入一点 pow(double, int)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-4-3 21:22:34 | 显示全部楼层    本楼为最佳答案   
#include <stdio.h>

double pow(double, int);

int main() {
        printf("%.2lf\n", pow(5, 3));
        printf("%.2lf\n", pow(1.25, 3));
        printf("%.2lf\n", pow(0.67, -7));
        return 0;
}

double pow(double base, int exponent) {
        if (!exponent) {
                return 1;
        }
        else if (exponent > 0) {
                return base * pow(base, exponent - 1);
        }
        return 1. / pow(base, -exponent);
}
125.00
1.95
16.50

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
人造人 + 5 + 5 + 3 无条件支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-3 21:39:56 | 显示全部楼层

回帖奖励 +1 鱼币

贴到代码里面好吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-3 22:04:59 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-4 00:09:56 | 显示全部楼层

回帖奖励 +1 鱼币

6666666666666666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-4 00:50:54 | 显示全部楼层
本帖最后由 kazuya8375 于 2022-4-4 00:53 编辑
傻眼貓咪 发表于 2022-4-3 21:10
兄弟你蛮厉害的。目前为止我是没有看过有人自己写 pow() 函数底数 base 和指数 exponent 都是 double 类型 ...


你過獎了,我只是自學1個月而已,所以code很亂 ,我自己研究半天就是沒辦法輸出>1的小數,但是我覺得我的邏輯思維應該沒錯,你能教導我嗎
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-4 08:10:18 From FishC Mobile | 显示全部楼层
kazuya8375 发表于 2022-4-4 00:50
你過獎了,我只是自學1個月而已,所以code很亂 ,我自己研究半天就是沒辦法輸出>1的小數,但是我覺得我的邏 ...

教导不敢当,如果你有疑问,可以发帖,这里很多人会回复你的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-4 09:58:39 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-4 10:02:04 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-4 10:36:29 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-4 11:20:00 | 显示全部楼层

回帖奖励 +1 鱼币

傻眼貓咪 发表于 2022-4-4 08:10
教导不敢当,如果你有疑问,可以发帖,这里很多人会回复你的。

这代码格式,我觉得不会有很多人的
^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-4 12:04:18 From FishC Mobile | 显示全部楼层
人造人 发表于 2022-4-4 11:20
这代码格式,我觉得不会有很多人的
^_^

不会不会,我还有很多要学习的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-4 12:39:21 | 显示全部楼层
傻眼貓咪 发表于 2022-4-4 12:04
不会不会,我还有很多要学习的

你误会了,不是说你的代码格式,是说楼主的代码格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-4 12:41:11 | 显示全部楼层
傻眼貓咪 发表于 2022-4-4 12:04
不会不会,我还有很多要学习的

我的意思是,楼主把代码写成这样,不会有很多人帮忙的
^_^

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
傻眼貓咪 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-4 13:02:16 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-4 13:17:31 From FishC Mobile | 显示全部楼层
人造人 发表于 2022-4-4 12:39
你误会了,不是说你的代码格式,是说楼主的代码格式

哈哈哈哈,也是
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 00:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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