kazuya8375 发表于 2022-4-3 20:44:46

函数调用的问题

#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;
returnz;
}
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:07:45

你这代码的排版,可读性太差了{:10_269:}

傻眼貓咪 发表于 2022-4-3 21:10:35

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

兄弟你蛮厉害的。目前为止我是没有看过有人自己写 pow() 函数底数 base 和指数 exponent 都是 double 类型(因为太复杂也太困难了,比如 2.5 ^ 1.36),除了 C 语言本来的头文件 <math.h> 里的 pow() 之外,一般自己写的普通 pow() 函数都只是用 pow(int, int),再深入一点 pow(double, int)。

傻眼貓咪 发表于 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

andy大宝 发表于 2022-4-3 21:39:56

贴到代码里面好吗

1050293757 发表于 2022-4-3 22:04:59

{:5_109:}

amazed 发表于 2022-4-4 00:09:56

6666666666666666

kazuya8375 发表于 2022-4-4 00:50:54

本帖最后由 kazuya8375 于 2022-4-4 00:53 编辑

傻眼貓咪 发表于 2022-4-3 21:10
兄弟你蛮厉害的。目前为止我是没有看过有人自己写 pow() 函数底数 base 和指数 exponent 都是 double 类型 ...

你過獎了,我只是自學1個月而已,所以code很亂 ,我自己研究半天就是沒辦法輸出>1的小數,但是我覺得我的邏輯思維應該沒錯,你能教導我嗎

傻眼貓咪 发表于 2022-4-4 08:10:18

kazuya8375 发表于 2022-4-4 00:50
你過獎了,我只是自學1個月而已,所以code很亂 ,我自己研究半天就是沒辦法輸出>1的小數,但是我覺得我的邏 ...

教导不敢当,如果你有疑问,可以发帖,这里很多人会回复你的。{:10_281:}

1molHF 发表于 2022-4-4 09:58:39

{:10_256:}

gandixiwang 发表于 2022-4-4 10:02:04

{:10_257:}

hornwong 发表于 2022-4-4 10:36:29

{:5_95:}

人造人 发表于 2022-4-4 11:20:00

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

这代码格式,我觉得不会有很多人的
^_^

傻眼貓咪 发表于 2022-4-4 12:04:18

人造人 发表于 2022-4-4 11:20
这代码格式,我觉得不会有很多人的
^_^

不会不会,我还有很多要学习的 {:10_254:}{:10_254:}

人造人 发表于 2022-4-4 12:39:21

傻眼貓咪 发表于 2022-4-4 12:04
不会不会,我还有很多要学习的

你误会了,不是说你的代码格式,是说楼主的代码格式

人造人 发表于 2022-4-4 12:41:11

傻眼貓咪 发表于 2022-4-4 12:04
不会不会,我还有很多要学习的

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

pybaolilong 发表于 2022-4-4 13:02:16

{:10_269:}

傻眼貓咪 发表于 2022-4-4 13:17:31

人造人 发表于 2022-4-4 12:39
你误会了,不是说你的代码格式,是说楼主的代码格式

哈哈哈哈,也是 {:10_250:}
页: [1]
查看完整版本: 函数调用的问题