1. 用C语言编写计算阶层的程序 求任意数的阶层 怎么写
给,已经编译运行确认:
#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 = 1; index <= input; ++index)
{
process(index, result);
}
// 打印结果
for (index = cnt - 1; index >= 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 proct = 0; // 乘积
int carry = 0; // 进位
int remainder = 0; // 余数
int i = 0;
for (i = 0; i < cnt; ++i)
{
proct = result[i] * index + carry;
carry = proct / 10;
remainder = proct % 10;
result[i] = remainder;
}
if (carry != 0)
{
while (carry / 10 != 0)
{
result[cnt] = carry % 10;
carry /= 10;
++cnt;
}
result[cnt++] = carry;
}
}
运行示例:
请输入你要计算的阶乘数n:
200
000000000000000
结果一共有375位数!
2. 用C语言求N的阶层。程序怎么写
1、使用递归算法
#include<stdio.h>
#include<process.h>
longfactorial(intn)
{
longresult;
if(n<0)
{
printf("n<0,请输入大于等于0的整数!");
return-1;
}
elseif(n==0||n==1)
{
result=1;
}
else
{
result=n*factorial(n-1);
}
returnresult;
}
main()
{
intn=10.0;
longiNum;
iNum=factorial(n);
printf("10!=%ld ",iNum);
system("pause");
}
2、使用循环
#include<stdio.h>
#include<process.h>
intmain()
{
inti=1;//累加变量
longj=1;//储存结果
intk=1;//输入的数值
printf("请输入一个数字:");
scanf("%d",&k);
do
{
j=j*i;
i++;
}while(i<=k);
printf("%ld ",j);
system("pause");
return1;
}
以上两种方式是求阶乘的普通算法,求得的结果表示范围都是有限的,如果算大数的阶乘还要另外的算法。
3. 用C语言 编写10的阶层 怎么写
#include <stdio.h>
int main()
{
int i=0;
long temp=1;
long sum=0;
for(i=1;i<=10;i++)
{
temp*=i;
sum+=temp;
}
printf("sum=%ld\n",sum);
return 0;
}
利用for循环期求出第n项阶乘的积,然后前n-1项的阶乘的和加上第n项阶乘,当n等于10的时候就是所求。
4. c语言编程求n的阶层怎么编写
代码:
<script>
jc = function (i)
{ jg = 1;
for(j=1;j<=i;j++)
{
jg *= j;
}
return jg;
}
alert(jc(5));//这里填写了5,当然可以换成其它的了
</script>
//结束
::以下是C语言,复制后改成:C用VC打开他运行即可
::START,写是个函数,你应该会调用吧.直接jc (N),N是你想要计算的数值
intjcfunction (i) {
int jg=1;
for (j=1;jg<=i;j++)
{
jg *=j;
}
return jg;
}
::END
5. C语言的代码 阶层问题
首先,这个叫做“阶乘”而不是“阶层”。
其次,return 1是因为 0! = 1,数学上就是这么定义的,这个和C语言无关。
递归有两个阶段,第一阶段是反复地调用自身,直到触发终止条件;第二阶段是,逐层计算并返回调用结果。
就拿你这个例子来说,假设要计算4的阶乘,首先是递归地调用自身:
4! = func(4), 此时n为4大于0,所以func(4) = 4 * func(4-1) = 4*func(3)
同样地:
3! = func(3) = 3*func(3-1) = 3*func(2)
2! = func(2) = 2*func(2-1) = 2*func(1)
1! = func(1) = 1*func(1-1) = 1*func(0)
这时注意了,当计算func(0)时,n=0,触发边界条件,所以递归调用停止,return 1。
接下来,就是以相反的顺序,,逐层返回结果了:
0! = func(0) = 1
1! = func(1) = 1*func(0) = 1*1 = 1
2! = func(2) = 2*func(1) = 2*1 = 2
3! = func(3) = 3*func(2) = 3*2 = 6
4! = func(4) = 4*func(3) = 4*6 = 24
这样就得到了最终的结果:24。
6. C语言的代码 阶层问题
首先,这个叫做“阶乘”而不是“阶层”。
其次,return
1是因为
0!
=
1,数学上就是这么定义的,这个和C语言无关。
递归有两个阶段,第一阶段是反复地调用自身,直到触发终止条件;第二阶段是,逐层计算并返回调用结果。
就拿你这个例子来说,假设要计算4的阶乘,首先是递归地调用自身:
4!
=
func(4),
此时n为4大于0,所以func(4)
=
4
*
func(4-1)
=
4*func(3)
同样地:
3!
=
func(3)
=
3*func(3-1)
=
3*func(2)
2!
=
func(2)
=
2*func(2-1)
=
2*func(1)
1!
=
func(1)
=
1*func(1-1)
=
1*func(0)
这时注意了,当计算func(0)时,n=0,触发边界条件,所以递归调用停止,return
1。
接下来,就是以相反的顺序,,逐层返回结果了:
0!
=
func(0)
=
1
1!
=
func(1)
=
1*func(0)
=
1*1
=
1
2!
=
func(2)
=
2*func(1)
=
2*1
=
2
3!
=
func(3)
=
3*func(2)
=
3*2
=
6
4!
=
func(4)
=
4*func(3)
=
4*6
=
24
这样就得到了最终的结果:24。
7. C语言中阶乘怎么输
1、不是直接输入n!,需要一定的算法才可以实现。具体方法是,首先打开编辑器,准备好空白的C语言文件:
8. C语言中如何编写N的阶乘
1、打开visual C++软件,新建任务,鼠标左键点击文件,选择C++ source file:
9. 怎样用C语言计算1到10的阶层的和
C语言中实现阶乘的计算可以采用递归或者循环,通常循环用的比较多,循环可以采用while循环和for循环等。
下面以for循环为例实现1-10的阶乘的和的计算,代码如下:
int i,sum=1,S=0;
for(i=1;i<=10;i++)
{
sum=sum*i;
S=S+sum;
}
上述的变量S在运行结束后的结果值即为1-10的阶乘的和。
(9)c语言代码编译数学阶层扩展阅读:
数学函数
所在函数库为math.h、stdio.h、string.h、float.h
int abs(int i) 返回整型参数i的绝对值
double atof(char *nptr) 将字符串nptr转换成浮点数并返回这个浮点数
double atoi(char *nptr) 将字符串nptr转换成整数并返回这个整数
double atol(char *nptr) 将字符串nptr转换成长整数并返回这个整数
char *ecvt(double value,int ndigit,int *decpt,int *sign),将浮点数value转换成字符串并返回该字符串
10. c语言如何求一个数的阶乘
n的阶乘就是从1到的累积,所以可以通过一个for循环,从1到n依次求积即可。
参考代码:
#include "stdio.h"
int main() {
int n,i,s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)//for循环求累积
s=s*i;
printf("%d ",s);
return 0;
}
/*
运行结果:(例如求5的阶乘)
5
120
*/
(10)c语言代码编译数学阶层扩展阅读:
return用法:
return返回一个数值的意思就是把return<表达式>后面表达式的值返回给调用他的函数。举个例子:
int sum(int i,int j)
{
return i+j;
printf("这个语句不会被执行,因为该子函数执行到上面的return语句就无条件结束了");
}
main()
{
int a=10,b=11,c;
c=sum(a,b);
printf("%d",c);
}