㈠ 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
*/
(1)c语言如何求40的阶乘扩展阅读:
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);
}
㈡ c语言阶乘怎么求便捷
考虑到基层函数是一个增长十分快的函数,所以如果输入的计算阶乘的值不超过12的话,可以用一个简单的循环来实现。具体采用For循环最为简单。
㈢ C语言中如何编程计算阶乘
常见的有两种:
递归版本:
intFac(intn){
if(n==0)return1;
returnn*Fac(n-1);
}
还有一种是循环版:
intans=1;
for(inti=1;i<=n;i++)ans*=i;
测试方法:
#include<stdio.h>
intFac(intn){
if(n==0)return1;
returnn*Fac(n-1);
}
intmain(){
intn;
while(scanf("%d",&n)!=EOF){
intans=1;
for(inti=1;i<=n;i++)ans*=i;
printf("%d%d ",ans,Fac(n));
}
return0;
}
有个值得注意的地方:阶乘时,数增大的很快,在n达到13时就会超过int的范围,此时可以用long long或是 __int64来存储更高精度的值,如果还想存储更高位的,需要用数组来模拟大数相乘。
㈣ C语言中如何编程计算阶乘
递归函数
fun(int n)
{ if (n==0) return 1;
else return n*fun(n-1);
}
只要主函数调用这个函数,即可计算阶乘。
㈤ C语言怎么求大数的阶乘
C语言利用数组计算超大整数的阶乘代码
#include <stdio.h>
intmain()
{
intn;
inta[9000];//确保保存最终运算结果的数组足够大
intdigit = 1;//位数
inttemp;//阶乘的任一元素与临时结果的某位的乘积结果
inti, j, carry;//carry:进位
printf("please in put n: ");
scanf("%d",&n);
a[0] = 1;//将结果先初始化为1
for( i=2; i<=n; i++ )//开始阶乘,阶乘元素从2开始依次"登场"
{//按最基本的乘法运算思想来考虑,将临时结果的每位与阶乘元素相乘
for( j=1, carry=0; j<=digit; j++ )
{
temp = a[j-1] * i + carry;//相应阶乘中的一项与当前所得临时结果的某位相乘(加上进位)
a[j-1] = temp % 10;//更新临时结果的位上信息
carry = temp / 10;//看是否有进位
}
while(carry)
{//如果有进位
a[++digit-1] = carry % 10;//新加一位,添加信息。位数增1
carry = carry / 10;//看还能不能进位
}
}
printf("n ! = ");//显示结果
for(j = digit; j >=1;j--)
{
printf("%d",a[j-1]);
}
printf(" ");
return0;
}
#include<stdio.h>
intmain()
{
intn;
inta[9000];//确保保存最终运算结果的数组足够大
intdigit=1;//位数
inttemp;//阶乘的任一元素与临时结果的某位的乘积结果
inti,j,carry;//carry:进位
printf("pleaseinputn: ");
scanf("%d",&n);
a[0]=1;//将结果先初始化为1
for(i=2;i<=n;i++)//开始阶乘,阶乘元素从2开始依次"登场"
{//按最基本的乘法运算思想来考虑,将临时结果的每位与阶乘元素相乘
for(j=1,carry=0;j<=digit;j++)
{
temp=a[j-1]*i+carry;//相应阶乘中的一项与当前所得临时结果的某位相乘(加上进位)
a[j-1]=temp%10;//更新临时结果的位上信息
carry=temp/10;//看是否有进位
}
while(carry)
{//如果有进位
a[++digit-1]=carry%10;//新加一位,添加信息。位数增1
carry=carry/10;//看还能不能进位
}
}
printf("n!=");//显示结果
for(j=digit;j>=1;j--)
{
printf("%d",a[j-1]);
}
printf(" ");
return0;
}
㈥ C语言中求阶乘
用数组法,把阶乘结果存到数组里,比如1234存为m[4]数组,m[0]=4,m[1]=3,m[2]=2,m[3]=1,然后让数组一个个跟新的i相乘,数组的每个只存一个数,比如 m[k]*15这一步,把m[k]*15%10做为新的m[k],m[k]/10%10+m[k+1]作为新的m[k+1]....按这种方式处理,就不受int大小限制
㈦ 用函数求阶乘的C语言
fun(inti)
{
intj;
intsum=0;
for(j=1;j<=i;j++)
{
sum=sum+j*j;
}
printf("s%d=%d ",j,sum);
returnsum;
}
//上面的代码是求平方和
//求阶乘可以这样:
intfun(inti)//返回类型不可少
{
intj;
intsum=1;//从1开始
for(j=1;j<=i;j++)
{
sum=sum*j;
}
printf("s%d=%d ",j,sum);
returnsum;
}
//主函数中是求阶乘的和
㈧ C语言求阶乘
其实这个只能算到12的阶乘,因为13的阶乘等于6227020800,它已经大于2的31次方了,也就是超过了int所能表示的最大值了(溢出),所以你可以把int
改为double.
#include
<stdio.h>
#include
<stdlib.h>
double
f(int
n)
{
if(n==0||n==1)
return
1;
return
n*f(n-1);
}
int
main()
{
int
n,k,i;
printf("请输入一个数:");
scanf("%d",&k);
for(i=1;i<=k;i++)
{
printf("第%d个数为:",i);
scanf("%d",&n);
printf("%d!=%f\n",n,f(n));
}
}
我把你写的稍微改了一下,你看看。
㈨ c语言中如何求一个数的阶乘
小的数可以直接用__int64,
大的数的话需要用数组模拟大数.
㈩ 你好,你的c语言求1到40的阶乘中怎么改变才能会是输入一个数,按回车只得到这个数的阶乘呢
#include"stdio.h"
#include"stdlib.h"
voidmain()
{
while(1)
{
intd;
printf("请输入数字计算阶乘。输入0退出程序:");
scanf("%d",&d);
if(d==0)
exit(0);
else
{
intfact=1;
inti;
for(i=1;i<=d;i++)
fact*=i;
printf("%d的阶乘:%d ",d,fact);
}
}
}