C语言实现阶乘的示例详解

目录
  • 前言
  • 1.阶乘实现
    • 1.1理论步骤
    • 1.2实践结果
  • 2.连续乘层相加实现
    • 2.1理论步骤
    • 2.2实践结果

前言

在现实中,我们做数学题总会遇到阶乘问题,这在计算机中也不例外。 那我们应该怎么实现呢?

我记得很多老师在电脑上书写阶乘都是用!这个符号表示。 比如5的阶乘,写为5!。 这在C语言中是行不通的,下面我讲解C语言中阶乘的实现。

1.阶乘实现

1.1理论步骤

我们可以利用while、do……while、以及for等循环实现,实现功能如下:

我们先设置好3个变量,i、n(想要的阶层数)、jieceng(阶层结果)

利用循环得到相应阶乘

1.2实践结果

这里用3种循环都展示一下

while实现

#include <stdio.h>
int main()
{
    int i = 1;
    int n = 0;
    int jieceng = 1;
    scanf("%d", &n);                      //输入想得到的阶层数
    while (i <= n)
    {
        jieceng *= i;
        i++;
    }
    printf("%d的阶层是%d\n", n, jieceng);
    return 0;
}

do……while实现

#include <stdio.h>
int main()
{
    int i = 1;
    int n = 0;
    int jieceng = 1;
    scanf("%d", &n);
    do
    {
        jieceng *= i;
        i++;

    } while (i <= n);
    printf("%d的阶层是%d\n", n, jieceng);
    return 0;
}

for实现

#include <stdio.h>
int main()
{
    int i = 1;
    int n = 0;
    int jieceng = 1;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        jieceng *= i;
    }
    printf("%d的阶层是%d\n", n, jieceng);
    return 0;
}

2.连续乘层相加实现

2.1理论步骤

首先明确要连续相加,必然需要2层循环嵌套

2.2实践结果

我这里用2层for循环实现

#include<stdio.h>
int main()                                         //算1~n阶层相加
{
    int sum = 0;
    int jiecen = 0;
    int i = 0;
    int j = 0;
    int n = 0;
    scanf("%d", &n);                               //设置想要到达的n值
    for (j = 1; j <= n; j++)
    {
        for (i = 1, jiecen =1; i <= j; i++)         //重置jieceng,使每次从1开始
        {
            jiecen = jiecen * i;                   //里循环得每一相应阶层数
        }
        sum += jiecen;                             //阶层之和
    }
    printf("%d\n", sum);
    return 0;
}

一层for循环实现(简洁版)

#include <stdio.h>
int main()                                         //算1~10阶层相加(j简短版)好**
{
    int sum = 0;
    int jiecen = 1;
    int i = 0;
    int n = 0;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        jiecen = jiecen * i;
        sum += jiecen;
    }
    printf("%d\n", sum);
    return 0;
}

以上就是C语言实现阶乘的示例详解的详细内容,更多关于C语言 阶乘的资料请关注我们其它相关文章!

(0)

相关推荐

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

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

  • 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的阶乘和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: &

  • 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语言计算大数阶乘的具体代码,供大家参考,具体内容如下 问题描述 输入一个正整数n,输出n!的值. 其中n!=1*2*3*-*n. 算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法.使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推. 将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位. 输入格式 输入包含一个正整数n,n<=1000. 输出格式 输出n!的准确值. 样例输入 10 样例输

  • 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语言实现的阶乘,排列和组合实例

    本文实例讲述了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语言实现阶乘的示例详解

    目录 前言 1.阶乘实现 1.1理论步骤 1.2实践结果 2.连续乘层相加实现 2.1理论步骤 2.2实践结果 前言 在现实中,我们做数学题总会遇到阶乘问题,这在计算机中也不例外. 那我们应该怎么实现呢? 我记得很多老师在电脑上书写阶乘都是用!这个符号表示. 比如5的阶乘,写为5!. 这在C语言中是行不通的,下面我讲解C语言中阶乘的实现. 1.阶乘实现 1.1理论步骤 我们可以利用while.do……while.以及for等循环实现,实现功能如下: 我们先设置好3个变量,i.n(想要的阶层数).

  • Go语言基础模板设计模式示例详解

    目录 概述 模板模式生活案例 策略模式涉及到两个角色 UML 总结 示例 概述 模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式.让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤 确定了步骤的执行顺序,单某些步骤因环境或人等因素具体实现是未知的 模板模式生活案例 请客吃饭[点菜->吃东西->结账],每个人点菜不一样,吃东西不一样,结账也不一样从某地到某地[起点->出行方式->终点]起点和终点不一一样,但是每个人出行方式是不一样的 Go没有封装.

  • C语言进阶栈帧示例详解教程

    目录 正片开始 栈有什么用? 寄存器 main函数创建 局部变量创建 函数部分 形参与实参 正片开始 今天来讲讲我对栈帧创建与销毁的拙见.理解什么是栈帧首先知道什么是栈: 在数据结构中, 栈是限定仅在表尾进行插入或删除操作的线性表.栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据. 栈有什么用? 在计算机系统中,栈也可以称之为栈内存是一个具有动态内存区域,存储函数内部(包括main函数)的局部变量和方法调用和函数参数值,

  • C语言实现队列的示例详解

    目录 前言 一. 什么是队列 二. 使用什么来实现栈 三. 队列的实现 3.1头文件 3.2 函数的实现 四.完整代码 前言 前一段时间,我们试着用C语言实现了数据结构中的顺序表,单链表,双向循环链表,栈.今天我们再用C语言来实现另一种特殊的线性结构:队列 一. 什么是队列 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(head)进行删除操作,而在表的后端(tail)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾,进行删除操作的端称为队头. 这个队列就可

  • C语言实现栈的示例详解

    目录 前言 一. 什么是栈 二. 使用什么来实现栈 三. 栈的实现 3.1 头文件 3.2 函数实现 3.3 完整代码 四. 栈的用处 前言 前一段时间,我们试着用C语言实现了数据结构中的顺序表,单链表,双向循环链表.今天我们再用C语言来实现另一种特殊的线性结构:栈 一. 什么是栈 栈(stack)又名堆栈,它是一种运算受限的线性表.限定仅在表尾进行插入和删除操作的线性表.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元素放到栈顶元素的上面,使之成

  • Go语言数据结构之插入排序示例详解

    目录 插入排序 动画演示 Go 代码实现 总结 插入排序 插入排序,英文名(insertion sort)是一种简单且有效的比较排序算法. 思想: 在每次迭代过程中算法随机地从输入序列中移除一个元素,并将改元素插入待排序序列的正确位置.重复该过程,直到所有输入元素都被选择一次,排序结束. 插入排序有点像小时候我们抓扑克牌的方式,如果抓起一张牌,我们放在手里:抓起第二张的时候,会跟手里的第一张牌进行比较,比手里的第一张牌小放在左边,否则,放在右边. 因此,对所有的牌重复这样的操作,所以每一次都是插

  • Go语言实现彩色输出示例详解

    目录 简介 说明 支持Linux彩色输出 支持Windows彩色输出 Golang IDE输出是不支持的 使用 CODE DEMO 小结 简介 在逛github时发现一个好玩的Go项目,彩色输出文本 说明 支持Linux彩色输出 支持Windows彩色输出 Golang IDE输出是不支持的 使用 效果图 CODE DEMO package main import ( "fmt" "github.com/fatih/color" ) func main() { co

  • go语言编程实现递归函数示例详解

    目录 前言 函数中的 return 递归的问题 总结 前言 本篇文章主要是记录一下在 GScript 中实现递归调用时所遇到的坑,类似的问题在中文互联网上我几乎没有找到相关的内容,所以还是很有必要记录一下. 在开始之前还是简单介绍下本次更新的 GScript v0.0.9 所包含的内容: 支持可变参数 优化 append 函数语义 优化编译错误信息 最后一个就是支持递归调用 先看第一个可变参数: //formats according to a format specifier and writ

  • go语言的变量定义示例详解

    目录 前言 定义单个变量 定义多个变量 定义相同类型的多个变量 变量的初始化 变量类型的省略 var关键字的省略(简短声明) 全局变量与局部变量 特别的变量名 未使用变量的限制 常量 前言 特别说明: 本文只适合新手学习 这篇文章带我们入门go语言的定义变量的方式,其实和javascript很相似,所以特意总结在此. 在go语言中,也有变量和常量两种,首先我们来看变量的定义,定义变量我们分为定义单个变量和多个变量. 本文知识点总结如下图所示: 定义单个变量 在定义单个变量中,我们通过var关键字

  • Verilog语言的循环语句示例详解

    目录 关键词:while, for, repeat, forever while 循环 for 循环 repeat 循环 forever 循环 关键词:while, for, repeat, forever Verilog 循环语句有 4 种类型,分别是 while,for,repeat,和 forever 循环.循环语句只能在 always 或 initial 块中使用,但可以包含延迟表达式. while 循环 while 循环语法格式如下: while (condition) begin -

随机推荐