1*2*3*4*5.......*n
并且请大家写一下思路
谢谢
1*2*3*4*5.......*n
并且请大家写一下思路
谢谢
这是c语言中一种基本的累乘的算法 具体得用到循环语句(for语句)!
#include<stdio.h>
long GetAns(int n)
{
long sum=1,i;
for(i=1;i<=n;i++)
sum*=i;
return sum;
}
int main(void)
{ int n;
scanf("%d",&n);
printf("%d",GetAns(n));
return 0;
}
#include<iostream.h>
void main()
{
int n,
int sum;
for(int i=0,i<n,i++)
{
for(int j=0;j<n+1;j++)
{
sum=n*(n+1);
}
}
cout<<sum<<endl;
}
main()
{
int n=5;
int s=1;
for(i=1;i<=n;i++)
s*=i;
printf("%d",s);
}
这个是求N的阶乘,从N开始,每次减一与上次结构相乘就行,但最后注意n=1停止,不然你得到的答案始终是零
long int fnFactorial(int n) { long int iSum=1; for(int i=1;i<=n;i++) { iSum=iSum*i; } return iSum; }
int main() { long int sum; int x; cout<<"请输入一个数:"<<endl; cin>>x; sum=fnFactorial(x); cout<<"这个数的阶乘:"<<sum<<endl; return 0; }
看那个n有没有限制的来说,n大一点的话,普通的变量是容不下的,会溢出,再大点的数 unsigned long long
也容不下了
一般能容下的话,可以
#include"stdio"
int main()
{
long num = 1;
int n;
printf("请输入n\n");
scanf("%d",n);
for(int i = 1; i<=n; ++i)
num * = i;
printf("阶乘积为 %ld", num );
}
如果容不下的话,就考虑用数组。。
#include<stdio.h> unsigned x[8000]={0},n,p,i,j,t; int main() { while(scanf("%d",&n)!=EOF) { x[p=7998]=1; for(i=1;i<=n;i++) { x[--p]=x[--p]=0; for(j=7998;j>p;j--) {x[j]*=i; t=j+1; x[j]+=x[t]/100000; x[t]%=100000; } while(!x[p]) p++; } for(printf("%u",x[p++]);p<7999;p++) printf("%05u",x[p]); printf("\n"); } return 0; }