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));
}
以上是我写的,求给改错。谢啦 展开
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));
}
以上是我写的,求给改错。谢啦 展开
3个回答
展开全部
两个问题:
一个是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));
}
一个是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
展开全部
//你看看我写的,你的递归的用法并不正确
#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));
}
#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));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一定要用嵌套吗?
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):
}
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):
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询