当前位置:首页 » 编程语言 » c语言输出15的阶乘多种方法
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言输出15的阶乘多种方法

发布时间: 2023-05-12 05:13:12

‘壹’ 编写一个c++程序:计算1到15的阶乘

#include<iostream>
usingnamespace升埋和std;
__int64fac(intn){
if(n==0||n==1)
return1;
returnn*fac(n-1);
}

intmain(){
inti;
for(i=1;i<吵盯=15;i++){
cout<<i<<"!="<<fac(i)<<endl;
液枝}
return0;
}

‘贰’ 编程计算15的阶乘

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
string add(const string &a,const string &b);
string multiply(const string &a,char b);
string multi(const string &a,const string &b);
string factorial(int n);
int main()
{
cout<<factorial(15);
return 0;
}
string add(const string &a,const string &b)
{
string sh,lo,r; int g=0;

if(a.size()>b.size())
{
sh=string(a.size()-b.size(),'0');
sh+=b; lo=a;
}
else
{
sh=string(b.size()-a.size(),'0');
sh+=a; lo=b;
}
r.resize(sh.size());
for(int i=sh.size()-1;i>=0;--i)
{
r[i]=sh[i]+lo[i]-48+g;
if(r[i]>'9'唤启)
{
r[i]-=10;
g=1;
}
else
{
g=0;
}
}
if(g==1)
r="1"+r;
return r;
}

string multiply(const string &a,char b)
{
string r;
r.resize(a.size()); int g=0;
if(b=='0')
return "0";
if(b=='1') //和租如加快型老计算
return a;
for(int i=a.size()-1;i>=0;--i)
{
r[i]=(a[i]-48)*(b-48)%10+48+g;
if(r[i]>'9')
{
r[i]-=10;
g=((a[i]-48)*(b-48))/10+1;
continue;
}
g=((a[i]-48)*(b-48))/10;
}
if(g!=0)
r.insert(0,string(1,g+48));
return r;
}

string multi(const string &a,const string &b)
{
string r("0");
string *c=new string[b.size()];
for(int i=0;i<b.size();++i)
{
c[i]=multiply(a,b[b.size()-1-i])+string(i,'0');
r=add(r,c[i]);
}
delete[] c;
return r;
}
string factorial(int n)
{
char b[7];
string r="1";
for(int i=1;i<n+1;++i)
{
itoa(i,b,10);
r=multi(r,b);
}
return r;
}

‘叁’ 怎么在c语言中计算1到5的阶乘

先定义一个变量sum作为结果的记录,然后用一个循环 从1循环到5 依次乘起来。
代码如下
#include<stdio.h>
int main()
{
int sum = 1;//因为是乘法 定义为1比较方便,如果加法,大多数定义为0
for (int i = 1; i<5; i++)
{
sum *= i; //意思是sum=sum*i;
}
printf ("%d",sum) ;
return 0;
}

‘肆’ 用C语言打印1到5的阶乘值。

正确:#include<stdio.h>

int fac(int n)

{

static int f=1;

f=f*n;

return(f);

}

void main()

{

int i;

for(i=1;i<=5;i++)

printf("%d!=%d ",i,fac(i));

}

所谓递归是不断的调用自己,本身函数设为fac(int n),f=f*n,

如果改成f=fac(n-1)*n,就不是递归了,应为你调用的不是本身。

(4)c语言输出15的阶乘多种方法扩展阅读:

c语言塌庆仔中阶乘的精确值

对于差档大数的操作,可能超出int,甚至long的表示范围,对此,可以使用数组来存储大数,下列代

码为求1000以内数的阶乘的代码,代码如下:

#include <stdio.h>#include<string.h>const int max=3000;int main()

{ int f[3000];//存放最终的结果

int i,j,n,c,tem;

memset(f,0,sizeof(f));

scanf("%d",&n);

f[0]=1; for(i=2;i<团汪=n;i++)

{

c=0; for(j=0;j<max;j++)

{ tem=i*f[j]+c; c=tem/10; f[j]=tem%10; } } for(j=max-1;j>=0;j--) if(f[j]!=0) break; for(i=j;i>=0;i--) printf("%d",f[i]); printf(" "); return 0;

‘伍’ 用c语言写的一个求阶乘的程序,最大智能求15的阶乘,该怎么改扩大范围,求大侠来帮忙

这个有点麻烦了. 跟普通的法子不大一样.
你要用数组来模拟运算.
我这边有一个大整数阶乘的程序,你试试看可能看懂!
不行就网络嫌森去,大整数阶乘做关键字,很多的.

#include "stdio.h"
#include "stdlib.h"
#include "memory.h"
#include "math.h"
#include "脊者液malloc.h"

void calcFac(int n)
{
int i,j,head,tail;
int blkLen=(int)(n*log10((n+1)/2)); //计算n!有数数字的个数
blkLen+=4; //保险起见,多加4位
if (n<1)
{
printf("樱物%ld!=0\n",n);
return;
}
char *arr=(char *)malloc(blkLen);
if (arr==NULL)return ;
memset(arr,0,sizeof(char)*blkLen);
head=tail=blkLen-1;
arr[tail]=1;
for (i=2; i<=n; i++)
{
int c=0;
for (j=tail; j>=head; j--)
{
int prod=arr[j] * i +c;
arr[j]=(char)( prod % 10);
c= prod / 10;
}
while (c>0)
{
head--;
arr[head]=(char)(c % 10);
c/=10;
}
}
for (i=head; i<=tail; i++)
printf("%c",arr[i]+'0');
printf("\n");
free(arr);
}

int testCalcFac()
{
int n;
while ( scanf("%d",&n)!=EOF)
{
if (n==0)
return -1;
calcFac(n);
}
}

int main(int argc, char* argv[])
{
testCalcFac();
return 0;
}

‘陆’ c语言中 用while语实现程序阶乘15!

#include <迟和stdio.h>
int main()
{
int a=100;
double num=1.0;
/码轮盯/while 循环相乘实现阶乘
while(a>0)
{ num *= a;
a--;
}
printf("100!的结果:%le\n",num);
//for循环相乘实现阶乘
num=1;
for(a=1;a<=100;a++)
{ num *= a;}
printf("桐答100!的结果:%le\n",num);
return 0;
}

‘柒’ 如何用c语言分别输出1到5的阶乘,并且输出它们的和

#include<stdio.h>
intjc(intn);//计算n的阶乘
intmain()
{
intn,jcn,sum=0;
for(n=1;n<=5;n++)
{
jcn=jc(n);
printf("%d的阶乘为:%d ",n,jcn);
sum=sum+jcn;
}
printf("总和为:%d ",sum);
return0;
}
intjc(intn)//计算n的阶乘
{
inti,r=1;
for(i=1;i<=n;i++)
{
r=r*i;
}
returnr;
}

‘捌’ C++15的阶乘

数据的定义时要指定大小不能使用变量,早凯野所以
double f[size];这句话有问题,要么陆喊改为double f[16],或者改为const int size = 16;

同时第二个for循环中要定义int,改孙睁成这样for (int i=0;i<size;i++)

‘玖’ 输入一个15以内的整数,求阶乘的 c语言源代码

思路:尺或定义一个函数fun(n)求n的阶乘,接着键盘输入一个竖明整数,调用fun函数输出该数的阶乘。

参考代码:

#include"stdio.h"
longfun(intn){
longsum=1;
inti;
for(i=2;i<=n;i++)
sum*=i;
returnsum;
}
intmain()
{
intn;
scanf("%d",&n);
printf("%ld",fun(n));
return0;
}
/*
运行结余困告果:
10
3628800
*/