如题所述
第1个回答 2011-05-18
#include<stdio.h>
#define N 50 /*可以是任意一个数的阶乘,当然要计算机能够存的下*/
int main()
{
int a[100], l=0, i, j;
for(i=0; i<100; i++)
a[i]=0;
a[0]=1;
for(i=2; i<=N; i++)
{
for(j=0; j<=l; j++)
a[j] *= i;
l+=3;
for(j=0; j<l; j++)
if(a[j]>9)
{
a[j+1]+=a[j]/10;
a[j] %=10;
}
while(a[l]==0) l--;
}
for(i=l; i>=0; i--)
printf("%d", a[i]);
printf("\n");
}
看了 楼下两个 用int 存储 50!
感觉有点不可思议, 至少应该用double啊,用double虽然不能保证精度,但至少可以很接近结果。
3楼的 一句话:“老师说过,可以自已定义一个类型来表示更大的数。。。”
自己是可以定义,你可以定义任意类型。只不过需要你自己来实现。 50!这种问题 就相当于 大数 的操作。
网上可以下载到大树类, 支持 大数的+ - * / 开平方, 开根号,(几乎所有math里的函数)...。
#define N 50 /*可以是任意一个数的阶乘,当然要计算机能够存的下*/
int main()
{
int a[100], l=0, i, j;
for(i=0; i<100; i++)
a[i]=0;
a[0]=1;
for(i=2; i<=N; i++)
{
for(j=0; j<=l; j++)
a[j] *= i;
l+=3;
for(j=0; j<l; j++)
if(a[j]>9)
{
a[j+1]+=a[j]/10;
a[j] %=10;
}
while(a[l]==0) l--;
}
for(i=l; i>=0; i--)
printf("%d", a[i]);
printf("\n");
}
看了 楼下两个 用int 存储 50!
感觉有点不可思议, 至少应该用double啊,用double虽然不能保证精度,但至少可以很接近结果。
3楼的 一句话:“老师说过,可以自已定义一个类型来表示更大的数。。。”
自己是可以定义,你可以定义任意类型。只不过需要你自己来实现。 50!这种问题 就相当于 大数 的操作。
网上可以下载到大树类, 支持 大数的+ - * / 开平方, 开根号,(几乎所有math里的函数)...。
第2个回答 2017-11-10
#include<stdio.h>
int main()
{
int n=1,i,sum=1;
for(i=0;i<5;i++) /*这里就是1一直乘以到5,你要乘以10就修改成 i<10*/
{sum=sum*n;
n++;}
printf("sum=%d\n",sum);
return 0;
}
int main()
{
int n=1,i,sum=1;
for(i=0;i<5;i++) /*这里就是1一直乘以到5,你要乘以10就修改成 i<10*/
{sum=sum*n;
n++;}
printf("sum=%d\n",sum);
return 0;
}
第3个回答 推荐于2017-11-11
下面是求10的阶乘,你参考下:
void main
{
int fn =1,i=1;
int n = 10;
//下面就是求10的阶乘
for(i=1;i<=n;i++)
{
fn = fn * i;
}
printf("10的阶乘 是 %d",fn);
}本回答被提问者和网友采纳
void main
{
int fn =1,i=1;
int n = 10;
//下面就是求10的阶乘
for(i=1;i<=n;i++)
{
fn = fn * i;
}
printf("10的阶乘 是 %d",fn);
}本回答被提问者和网友采纳
第4个回答 2011-05-26
//求n的阶乘
int sum=0;
for(int i=1;i<=n;i++)
sum=sum+i;
return sum;
int sum=0;
for(int i=1;i<=n;i++)
sum=sum+i;
return sum;