当前位置: 代码迷 >> C语言 >> [原创] 1-10的阶乘代码请大家修改一下,,谢谢
  详细解决方案

[原创] 1-10的阶乘代码请大家修改一下,,谢谢

热度:104   发布时间:2006-03-15 22:59:00.0
#include<stdio.h>
long jc(long n)
{
return n==0?1:n*jc(n-1);
}
main()
{
int n;
scanf("%d",&n);
printf("\n%ld\n",jc(n));
}16以前能算,以后试了几个怎么是负数?我菜高手解释下
----------------解决方案--------------------------------------------------------
以下是引用yz1987cn在2006-3-15 22:59:00的发言:
#include<stdio.h>
long jc(long n)
{
return n==0?1:n*jc(n-1);
}
main()
{
int n;
scanf("%d",&n);
printf("\n%ld\n",jc(n));
}16以前能算,以后试了几个怎么是负数?我菜高手解释下

数据溢出了


----------------解决方案--------------------------------------------------------

我刚写了个可没数据验证,没敢发(怕误导大家),不管了,你们找东西验证吧
这个只可以计算750多以内的阶乘,当然可以改N的值,算出更大的n!,不过一个屏幕显示不了
[CODE]
#include <stdio.h>
#include <conio.h>
#define N 2000 /*存储每位数字*/
void Mul(int p[],int n)
{
static m=0; /*末尾0的个数*/
int i,j,k=0,d=1;

for(i=m;i<N;i++)
{
p[i]=p[i]*n+k; /*k是上一位的进位数*/
k=p[i]/10;
p[i]=p[i]%10;

if( (p[i]==0) && (d==1) ) /*计算末尾0的个数*/
m++;
else
d=0;
if(k==0)
{
for(j=i+1; (j<N) && (p[j]==0); j++); /*如果未进行计算的各位为0,break;*/
if(j>=N)
break;
}


}
}

void main()
{
int a[N]={0};
int i,n;

scanf("%d",&n);
a[0]=1;

for(i=1;i<=n;i++)
Mul(a,i);

for(i=N-1; (i>=0) && (a[i]==0); i--); /*去掉前导的0*/
for(;i>=0;i--)
printf("%d",a[i]);

getch();
}

[/CODE]


----------------解决方案--------------------------------------------------------
我觉得想要的是下面的
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <conio.h>
main()
{
long a,b,i,sum=0;
for(i=2;i<=10;i++)
{
a=1;
b=i;
while(b>1)
{
a*=b*(b-1);
b=b-2;
}
sum+=a;
printf("i=%ld,b=%ld\n",i,a);
}
printf("%ld",sum);
getch();
}
----------------解决方案--------------------------------------------------------
这个简单
#include<math>
main()
{
int i ,j;
j=1;
for (i=1;i<=10;i++)
j=j*i;
printf("%d",j)
}
----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------
想要精练啊~~哇哈哈哈哈哈

int main(int i,int j){
for(j=i=1;i<=10;j=j*i++);
return !printf("%d",j);
}
----------------解决方案--------------------------------------------------------
晕,17! 太大了,结果就溢出了
----------------解决方案--------------------------------------------------------
我以前做过这个题目啊,好像没那么复杂吧?你们写的我怎么都看不懂啊!
----------------解决方案--------------------------------------------------------
  相关解决方案