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

题目描述

输入一个正数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;
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • 使用C语言求N的阶乘的方法

    用递归法求N的阶乘 程序调用自身称为递归( recursion).它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解. 递归的能力在于用有限的语句来定义对象的无限集合. 一般来说,递归需要有边界条件.递归前进段和递归返回段.当边界条件不满足时,递归前进:当边界条件满足时,递归返回. #include <stdio.h> #include <string.h> #include <stdlib.h> long factorial(int n) {

  • C语言练习题:求1到10的阶乘之和简单实例

    C语言练习题:求1到10的阶乘之和简单实例 #include <stdio.h> int factorial(int n) { if(0==n) return 1; if(1==n) return 1; return n*factorial(n-1); } int main() { int n=10; int sum=0; int i; for(i=1;i<=n;i++){ int m=factorial(i); printf("%d->%d\n",i,m);

  • c语言求阶乘精确值示例

    复制代码 代码如下: #include <stdio.h>#include <string.h>const int maxn = 3000;int f[maxn];int main(){ int i,j,n; scanf("%d",&n); memset(f,0,sizeof(f)); f[0] = 1; for(i = 2;i <= n;i++) {  int c = 0;  for(j = 0;j < maxn;j++)  {   int

  • c语言阶乘之和问题示例详解

    题目描述 用高精度计算出S=1!+2!+3!+-+n!(n≤50) 其中"!"表示阶乘,例如:5!=5*4*3*2*1. 输入输出格式 输入格式: 一个正整数N. 输出格式: 一个正整数S,表示计算结果. 输入输出样例 输入样例 3 输出样例 9 #include<stdio.h> int fun(int n) { if(n==1||n==0) { return 1; } if(n>1) { return fun(n-1)*n; } } int main() { in

  • C语言 实现N阶乘的程序代码

    代码如下所示: 复制代码 代码如下: #include <stdio.h>#include <stdlib.h>#define N 10 //算N的阶乘int main(){       //数组   1位 1!    int ary[N] = {1, 1};    int i, j;    for (i = 2; i <= N; i++)    {        //各个下标的阶乘,第0位下标是位数,所以从第1位开始        for (j = 1; j <= a

  • C语言实现的阶乘,排列和组合实例

    本文实例讲述了C语言实现的阶乘,排列和组合.分享给大家供大家参考.具体如下: #include<stdio.h> int Factorial(int n) { int i=0; int sum=1; int array[]={0}; for(i=n;i>=1;i--) { sum=sum*i; } return sum; } int Arrangement(int n,int m) { int result=0; if(m>n) { printf("您的输入有错,上边的数

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

    题目描述 输入一个正数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: &

  • 教你利用R语言测试电脑的性能

    利用R语言测试电脑的性能如何 同事新配了一个电脑,想用R语言编写一个程序,看一下电脑性能如何,让我写个代码测试一下. 我能怎么样,我也不懂如何测试电脑啊,那就计算一下矩阵的运算吧.因为我理解的电脑运行性能就是矩阵计算了. 编写代码 rm(list=ls()) set.seed(123) # 设置矩阵的行数 n = 10000 # 生成一个矩阵 value = rnorm(n*n, 10,3) mat = matrix(value,n,n) # 测试电脑性能 system.time({ # 矩阵求

  • Go语言测试库testify使用学习

    目录 简介 准备工作 assert Contains DirExists ElementsMatch Empty EqualError EqualValues Error ErrorAs ErrorIs 逆断言 Assertions 对象 require mock suite 测试 HTTP 服务器 总结 简介 testify可以说是最流行的(从 GitHub star 数来看)Go 语言测试库了.testify提供了很多方便的函数帮助我们做assert和错误信息输出.使用标准库testing,

  • 易语言测试与指定主机是否能够正常通讯

    通信测试命令 英文命令:ping 所属类别:网络通信 测试与指定主机是否能够正常通讯.返回被测试主机的通讯响应时间.如果无法通讯或者测试失败,返回 -1. 语法:  整数型  通信测试 (被测试主机地址,[最长等待时间]) 例程: 说明: 在窗口标题中显示本机被测试的通信相应时间. 运行结果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持.如果你想了解更多相关内容请查看下面相关链接

  • C语言判断一个数是否是2的幂次方或4的幂次方

    快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方! 将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n个0就可以了. 如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1:因此将原来的数与去减去1后的数字进行与运算后会发现为零. 最快速的方法: (number & number - 1) == 0 原因:因为2的N次方换算是二进制为10--0这样的形式(0除外).与上自己-1的

  • 详解Go 语言如何通过测试保证质量

    目录 引言 单元测试 什么是单元测试 Go 语言的单元测试 单元测试覆盖率 基准测试 什么是基准测试 Go 语言的基准测试 计时方法 内存统计 并发基准测试 基准测试实战 总结 引言 本节带你学习本专栏的第四模块:工程管理.现在项目的开发都不是一个人可以完成的,需要多人进行协作,那么在多人协作中如何保证代码的质量,你写的代码如何被其他人使用,如何优化代码的性能等, 就是第四模块的内容. 这一讲首先来学习 Go 语言的单元测试和基准测试. 单元测试 在开发完一个功能后,你可能会直接把代码合并到代码

  • 易语言API热键监控实例

    在用易语言编写软件或者游戏辅助的时候,经常用到API热键监控这个功能,我们在下面分享给大家实例代码,直接复制可以测试下. AIP热键监控 .版本 2 .支持库 JY .子程序 监视热键2, 整数型, 公开, 成功返回热键ID,失败返回0. .参数 响应子程序, 子程序指针, , 热键被按下时要触发的子程序,该回调函数可有一个参数用来接收热键ID. .参数 键代码, 整数型, , 可以使用易语言中的键代码常量 .参数 功能键码, 整数型, 可空, 键码数值见常量,可多个相加成为组合键,留空或为0则

  • 易语言随机取文本内容方法

    易语言怎么随机取出文本里面的随机内容? 需要下载的模块:精易模块 代码如下: .版本 2 .子程序 随机一句话, 文本型, , 在按钮事件下直接调用这个函数就可以了,那个文本.txt中的话可以自己编辑 .局部变量 文本, 文本型 文本 = 到文本 (读入文件 (取运行目录 () + "\文本.txt")) 置随机数种子 () 返回 (文本_取指定变量文本行 (文本, 取随机数 (1, 文本_取行数 (文本)))) 复制粘贴即可. 文本保存格式:用换行分割想取出的随机内容. 代码很简单,

  • Go语言单元测试基础从入门到放弃

    目录 Go语言测试 go test工具 单元测试函数 格式 单元测试示例 go test -v go test -run 回归测试 跳过某些测试用例 子测试 表格驱动测试 介绍 示例 并行测试 使用工具生成测试代码 测试覆盖率 testify/assert 安装 使用示例 总结 Go语言测试 这是Go单测从入门到放弃系列教程的第0篇,主要讲解在Go语言中如何做单元测试以及介绍了表格驱动测试.回归测试,并且介绍了常用的断言工具. go test工具 Go语言中的测试依赖go test命令.编写测试

随机推荐