关于C语言中n次幂函数的用法

我想要输出一个有8位的数组里面分别为2的前8个整数n次幂下面是我写的程序#include<stdio.h>doublepower(doublen,intp);voidma... 我想要输出一个 有8位的数组 里面分别为2的前8个整数n次幂 下面是我写的程序
#include<stdio.h>
double power(double n,int p);
void main()
{ int S[8];
int i;
double n=2;
printf("The results is:\n");
do
{
S[i]=power(n,i);//调用函数
printf("%d\n",S[i]);
}
while(i<8);
printf("That's all\n");
}
double power(double n,int p)
{
double pow=1;
int i;
p=8;
n=2;
for(i=0;i<p;i++)
pow*=n;
return pow;
} 在VC里调试显示没有错误但 运行时 编译器却自动停止运行..是不是我函数用错了 求指教 非常感谢
展开
 我来答
大野瘦子
高粉答主

2019-10-11 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:37.5万
展开全部

#include<stdio.h>

int power(int n,int p);

void main()

{ int S[8];

int i=0;

int n=2;

printf("The results is:\n");

for(i=0;i<8;i++)

{

S[i]=power(n,i+1);//调用函数

printf("%d\n",S[i]);

}

printf("That's all\n");

}

int power(int n,int p)

{

int pow=1;

int i;

for(i=0;i<=p;i++)

pow*=n;

return pow;

}

在调用:S[i]=power(n,i); 之前,i未初始化,可以手动输出来看一下,值结果是随机的,并不一定是0。

编译会提示:Warning: Possible use of 'i' before definition in function main在do{}while;中,开关i值并未改变,若i<8成立,那么程序就会变成死循环。

一开始的那个i没有初始化,s[i]不知道用哪里的内存了。还有每次循环后记得i++。

扩展资料:

注意事项

pow() 函数用来求 x 的 y 次幂(次方),其原型为:double pow(double x, double y);

pow()用来计算以x 为底的 y 次方值,然后将结果返回。设返回值为 ret,则 ret = xy。

可能导致错误的情况:

如果底数 x 为负数并且指数 y 不是整数,将会导致 domain error 错误。

如果底数 x 和指数 y 都是 0,可能会导致 domain error 错误,也可能没有;这跟库的实现有关。

如果底数 x 是 0,指数 y 是负数,可能会导致 domain error 或 pole error 错误,也可能没有;这跟库的实现有关。

如果返回值 ret 太大或者太小,将会导致 range error 错误。

错误代码:

如果发生 domain error 错误,那么全局变量 errno 将被设置为  EDOM;

如果发生 pole error 或 range error 错误,那么全局变量 errno 将被设置为 ERANGE。

Math.pow(底数,几次方)

如:double a=2.0;

    double b=3.0;

double c=Math.pow(a,b);

就是2的三次方是多少;

c最终为8.0;

吉祥二进制
高粉答主

推荐于2017-09-30 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84593

向TA提问 私信TA
展开全部

  C语言中计算某个数x的n次幂用pow函数。

      功能:返回指定数字的指定次幂.
      用法:pow   (double x, double n);(将返回x的n次幂)

  示例:

  #include<math.h>
  #include<stdio.h>
  int main()
  {
  double x=2.0,y=3.0;
  printf("%lf的%l次幂是:%lf\n",x,y,pow(x,y));
  return 0;
  }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2017-09-12
展开全部
1,在调用:S[i]=power(n,i); 之前,i未初始化,你可以手动输出来看一下,值结果是随机的,并不一定是0.
编译会提示:Warning: Possible use of 'i' before definition in function main
2,在do{}while;中,开关i值并未改变,若i<8成立,那么程序就会变成死循环。
追问
void main()
{ int S[8];
int i=0;
double n=2;
printf("The results is:\n");
do
{//int a=0;
S[i]=power(n,i);//调用函数
printf("%d\n",S[i]);
i++;
}当我把前面部分定义 i 后为什么输出 八个值都是256 我的n次幂函数 没起到原先设计的作用
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhidao_one518
2012-02-05 · TA获得超过146个赞
知道答主
回答量:33
采纳率:0%
帮助的人:23万
展开全部
#include<stdio.h>
int power(int n,int p);
void main()
{ int S[8];
int i=0;
int n=2;
printf("The results is:\n");
for(i=0;i<8;i++)
{
S[i]=power(n,i+1);//调用函数
printf("%d\n",S[i]);
}
printf("That's all\n");
}
int power(int n,int p)
{
int pow=1;
int i;
for(i=0;i<=p;i++)
pow*=n;
return pow;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友82ca684d1
2012-02-02 · TA获得超过375个赞
知道小有建树答主
回答量:931
采纳率:0%
帮助的人:574万
展开全部
你一开始的那个i没有初始化,s[i]不知道用哪里的内存了。还有每次循环后记得i++
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式