C语言编程写一个函数power(double x,int n),其返回值是X的n次幂,并用此函数计算1.5的3次幂

#include<stdio.h>doublepower(doublex,intn){inta;for(a=1;a<=n;a++)if(x==1)return1;else... #include <stdio.h>
double power(double x,int n)
{ int a;
for(a=1;a<=n;a++)
if(x==1) return 1;
else return x*power(x,n);
printf("%f",power(x,n));
}

main()
{
double m;
int b;
scanf("%f,%d",&m,&b);
printf("%f", power(m,b));
}
以上是我写的,求给改错。谢啦
展开
 我来答
Arthurzss
推荐于2017-09-21 · TA获得超过1662个赞
知道小有建树答主
回答量:496
采纳率:100%
帮助的人:244万
展开全部
两个问题:
一个是power内的,既然用了嵌套就不需要用循环,用了循环就不用嵌套。
二是输入的格式,m是double,那么格式要用%lf,而不是%f,否则不能正确获得输入值。
另外,按照原程序中scanf的写法,输入时一定要以“,”分隔两数(不能以空格分隔),比如:5,2。

程序修改如下(都没考虑0的0次方这种情况):
#include <stdio.h>

double power(double x,int n)
{ //int a;
//for(a=1;a<=n;a++) 用递归就不需要循环
if(n==0) return 1;//0次方
else return x*power(x,n-1);//递归为x*x的n-1次方
// printf("%f",power(x,n));不用输出了,否则又调用一次power
}
/* 如果要用循环,可以用下面这段程序
double power(double x,int n)
{
double x_n = 1;
while(n--) x_n *= x;
return x_n;
}*/

int main()
{
double m;
int b;
scanf("%lf,%d",&m,&b);//m是double,所以要用%lf,而不是%f;输入时以“,”分隔两数
printf("%f", power(m,b));
}
追问
#include 
double power(double x,int n)
{
if(x==1) return 1;
else return x*power(x,n-1);
}

int main()
{
double m;
int b;
scanf("%lf,%d",&m,&b);
printf("%f", power(m,b));
}您好,这是我改完的,但是怎么还是不会出结果呢,
追答
n==0
简智峣
2014-09-25 · TA获得超过101个赞
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:90.5万
展开全部
//你看看我写的,你的递归的用法并不正确
#include <stdio.h>
double power(double x,int n)
{
if(n==0)
return 1;
else
return x*power(x,n-1):
}

main()
{
double m;
int b;
scanf("%f,%d",&m,&b);
printf("%f", power(m,b));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Brooklebu
2014-09-25 · TA获得超过281个赞
知道小有建树答主
回答量:281
采纳率:0%
帮助的人:302万
展开全部
一定要用嵌套吗?
double power(double x,int n)
{
int a,sum=1;
for(a=0;a<=n;a++)
sum *= x;
printf("%f",x);
}
或者
double power(double x,int n)
{
if(n==0)
return 1;
else
return x*power(x,n-1):
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式