A. 用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;
}
以上两种方式是求阶乘的普通算法,求得的结果表示范围都是有限的,如果算大数的阶乘还要另外的算法。
B. C语言中阶乘怎么输
1、不是直接输入n!,需要一定的算法才可以实现。具体方法是,首先打开编辑器,准备好空白的C语言文件:
C. C语言中的阶层怎么搞
我想问一下,没有公式怎么搞?两组数据求曲线方程都不够
D. 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。
E. 怎样用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的阶乘的和。
(5)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转换成字符串并返回该字符串
F. 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
*/
(6)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);
}
G. C语言中的输入与输出的阶层
#include<stdio.h>
int jiecheng(int x){
int i,sum = 1;
for(i = 1; i <= x; i++)
sum = sum*i;
return sum;
}
void main()
{
int a,b,i,sum = 0;
printf("输入两个整数a和b(0<a<b)\n");
scanf("%d%d",&a,&b);
for(i = a; i <= b; i++)
sum = sum +jiecheng(i);
printf("(a->b)的阶层为:%d\n",sum);
}
你觉得数据不够,把int 改成long;