欢迎来到代码驿站!

C代码

当前位置:首页 > 软件编程 > C代码

C语言测试n的阶乘和x的n次方

时间:2021-01-14 11:14:21|栏目:C代码|点击:

题目描述

输入一个正数x和一个正整数n,求下列算式的值。要求定义两个调用函数:fact(n)计算n的阶乘;mypow(x,n)计算x的n次幂(即xn),两个函数的返回值类型是double。

×输出保留4位小数。

输入

x n

输出

数列和

样例输入

2.0 3

样例输出

1.3333

答案

/*************************************************************************
    > File Name: 2.c
    > Author: 
    > Mail: 
    > Created Time: Wed 12 Dec 2018 09:03:22 AM CST
 ************************************************************************/
#include<stdio.h>
double fact(int n)
{
    double s = 1.0;
  for(int i=1; i<= n; i++)
    {
        s=s*i;
    } 
    return s;
}
double mypow(double x,int n)
{         
  double s = 1.0;
  //printf("%lf %d\n",x,n);
  if(n == 0)  
  {       
   return 1.0; 
  }            
  if(n == 1)  
  {       
   return x;                                        
  }
  s = x;
  for(int i =0;i<n-1;i++)
  {       
   s = x*s;  
  }
  //printf("%lf \n",s);
  return s;   
}
void main(void)
{
  double x = 0.0;
  int n = 0;
  double s;
  scanf("%lf %d",&x,&n);
  //printf("%lf\n",mypow(-1.0,2));
  if(n == 1)
  {
    s = x;
  }
  else
  {
    s = x;
    for(int i=2;i<=n;i++)
    {
      s = s+ mypow(-1.0,i-1)*mypow(x,i)/fact(i);
    }
  }
  printf("%.4lf\n",s);
}

同事提供的答案,不用函数实现

#include <stdio.h>
int main ()
{
double x, ret, tmp1, tmp2;
int n, i, j;
while (~scanf("%lf %d", &x, &n))
{
ret = 0;
for (i = 1; i <= n; i++)
{
tmp1 = 1;
for (j = 1; j <= i; j++)
{
tmp1 *= x;
}
tmp2 = 1;
for (j = 1; j <= i; j++)
{
tmp2 *= j;
}
if (i % 2 == 1)
{
ret += tmp1 / tmp2;
}
else
{
ret -= tmp1 / tmp2;
}
}
printf("%.04f\n", ret);
}
return 0;
}

总结

上一篇:C语言 条件判断详细介绍

栏    目:C代码

下一篇:C++设计模式之装饰模式(Decorator)

本文标题:C语言测试n的阶乘和x的n次方

本文地址:http://www.codeinn.net/misctech/45055.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有