用C语言编写计算阶层的程序 求任意数的阶层怎么写

用C语言编写计算阶层的程序 求任意数的阶层怎么写,第1张

给,已经编译运行确认:

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>// for malloc()

#include<string.h>// for memset()

#define QUOTIETY 4 // 内存分配系数,计算10000以内阶乘设置为4就足够,如果需要

// 计算更大的数的阶乘,则将该系数适当增大

void process(const int index, int *result)

int cnt = 1

int main(void)

{

int index = 0

int input = 0

int *result = NULL

int count=0

// 获得输入数据

printf("请输入你要计算的阶乘数n:\n")

scanf("%d", &input)

while (input <= 0)

{

printf("请输入合理的数据,谢谢:\n")

scanf("%d", &input)

}

// 申请空间储存计算结果

result = (int *)malloc(sizeof(int) * input * QUOTIETY)

if (result == NULL)

{

printf("内存申请失败!\n")

exit(-1)

}

memset(result, 0, sizeof(int) * input * QUOTIETY)// 初始化存储空间

result[0] = 1

// 进行阶乘计算

for ( index = 1index <= input++index)

{

process(index, result)

}

// 打印结果

for (index = cnt - 1index >= 0L--index)

{

printf("%d", result[index])

count++

if(count%40==0) printf("\n")

}

putchar('\n')

printf("结果一共有%d位数!\n", cnt)

free(result)

getch()

return 0

}

/*

* 计算阶乘核心代码

*/

void process(const int index, int *result)

{

int product = 0// 乘积

int carry = 0// 进位

int remainder = 0// 余数

int i = 0

for (i = 0i <cnt++i)

{

product = result[i] * index + carry

carry = product / 10

remainder = product % 10

result[i] = remainder

}

if (carry != 0)

{

while (carry / 10 != 0)

{

result[cnt] = carry % 10

carry /= 10

++cnt

}

result[cnt++] = carry

}

}

运行示例:

请输入你要计算的阶乘数n:

200

7886578673647905035523632139321850622951

3597768717326329474253324435944996340334

2920304284011984623904177212138919638830

2576427902426371050619266249528299311134

6285727076331723739698894392244562145166

4240254033291864131227428294853277524242

4075739032403212574055795686602260319041

7032406235170085879617892222278962370389

7374720000000000000000000000000000000000

000000000000000

结果一共有375位数!

n!=n*(n-1)*...*2*1

特别的,数学家定义0!=1,

这样0!=1!=1,

通常,阶乘都是定义在自然数范围内的,小数没有阶乘。

我们在排列组合,和概率统计中时常会使用阶乘运算。

不知道你学的什么语言

自己也很久没有碰过这玩意儿了,但是大多数的语言还是有共同点的

一般来说要用循环语句

x=1

i=1

do while i≤n

x=x*i

i=i+1

enddo

(仅供参考)

等于0的时候另加说明,

这个你肯定比我懂了,

阶乘公式在编程中都是用循环语句,没有直接的数学公式

你好 阶乘(factorial)是基斯顿·卡曼(Christian Kramp, 1760 – 1826)于1808年发明的运算符号。阶乘,也是数学里的一种术语。[编辑本段]【阶乘的计算方法】阶乘指从1乘以2乘以3乘以4一直乘到所要求的数。例如所要求的数是4,则阶乘式是1×2×3×4,得到的积是24,24就是4的阶乘。 例如所要求的数是6,则阶乘式是1×2×3×……×6,得到的积是720,720就是6的阶乘。例如所要求的数是n,则阶乘式是1×2×3×……×n,设得到的积是x,x就是n的阶乘。[编辑本段]【阶乘的表示方法】在表达阶乘时,就使用“!”来表示。如x的阶乘,就表示为x! 如:n!=n×(n-1)×(n-2)×(n-3)×...×1阶乘的另一种表示方法:(2n-1)!!当n=2时,3!!=3×1=3当n=3时,5!!=5×3×1=15当n=4时,7!!=7×5×3×1=105...(以此类推)[编辑本段]【20以内的数的阶乘】以下列出0至20的阶乘:0!=1,1!=1,2!=2, 3!=6, 4!=24, 5!=120, 6!=720, 7!=5040, 8!=40320 9!=362880 10!=362880011!=3991680012!=47900160013!=622702080014!=8717829120015!=130767436800016!=2092278988800017!=35568742809600018!=640237370572800019!=12164510040883200020!=2432902008176640000另外,数学家定义,0!=1,所以0!=1![编辑本段]【阶乘的定义范围】通常我们所说的阶乘是定义在自然数范围里的,小数没有阶乘,像0.5!,0.65!,0.777!都是错误的。但是,有时候我们会将Gamma函数定义为非整数的阶乘,因为当x是正整数n的时候


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/9030284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-24
下一篇 2023-04-24

发表评论

登录后才能评论

评论列表(0条)

保存