阶乘问题
大家好!我想写一个阶乘的程序!代码如下
程序代码:
/* 阶乘*/
#include
#include
int main(void)
{
long int n;
long int s;
long int j;
printf("请输入n!");
scanf("%ld",&n);
for(j=n;j<0;j-- )
{
j=n*j;
}
printf("阶乘值为",j);
getch();
}
#include
#include
int main(void)
{
long int n;
long int s;
long int j;
printf("请输入n!");
scanf("%ld",&n);
for(j=n;j<0;j-- )
{
j=n*j;
}
printf("阶乘值为",j);
getch();
}
但是有问题!
请改正!
如果可以请快一些!
----------------解决方案--------------------------------------------------------
/* 阶乘*/
#include <stdio.h>
#include <conio.h>
int main(void)
{
long int n;
long int s;
long int j;
printf("请输入n!");
scanf("%ld",&n);
for(j=n;j<=0;j--)
{
s=n*j;
}
printf("阶乘值为",s);
getch();
}
我改了!
还是不行!
----------------解决方案--------------------------------------------------------
/* 阶乘*/
#include <stdio.h>
#include <conio.h>
int main(void)
{
long int n;
long int s;
long int j;
printf("请输入n!");
scanf("%ld",&n);
for (j=n;j<=0;j--)
{
s=n*j;
printf("%ld",s);
getch();
}
printf("阶乘值为",s);
getch();
}
还是步型啊!
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <conio.h>
int main(void)
{
long int n;
long int s;
long int j;
long int p;
printf("请输入n!");
scanf("%ld",&n);
p=n;
for (j=n;j<=0;j--)
{
s=p*j;
printf("%ld",s);
getch();
}
printf("阶乘值为",s);
getch();
}
疯了!
----------------解决方案--------------------------------------------------------
求助啊!
----------------解决方案--------------------------------------------------------
程序代码:
#include <stdio.h>
#include <conio.h>
int main(void)
{
int n,j;
long int s=1;
printf("请输入n:");
scanf("%d",&n);
while(n>31 || n<0)
{
printf("ERROR!重新输入n:");
scanf("%d",&n);
}
for(j=n;j>0;j-- )
{
s*=j;
}
printf("%d的阶乘值为%ld",n,s);
getch();
}
#include <conio.h>
int main(void)
{
int n,j;
long int s=1;
printf("请输入n:");
scanf("%d",&n);
while(n>31 || n<0)
{
printf("ERROR!重新输入n:");
scanf("%d",&n);
}
for(j=n;j>0;j-- )
{
s*=j;
}
printf("%d的阶乘值为%ld",n,s);
getch();
}
[[it] 本帖最后由 now 于 2008-4-6 00:19 编辑 [/it]]
----------------解决方案--------------------------------------------------------
/*
10000以内的阶乘,快速计算,1s内出解
E-mail: sunkai [at] msn [dot] com
Author: SunKai
Blog: http://www.cppblog.com/sunkai
*/
程序代码:
#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;
}
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;
}
----------------解决方案--------------------------------------------------------
太高深了,看不懂啊。
----------------解决方案--------------------------------------------------------
j>0;才对~~
----------------解决方案--------------------------------------------------------
孔明 谢谢啊!
----------------解决方案--------------------------------------------------------