求1-100的阶乘
答案:4 悬赏:70 手机版
解决时间 2021-02-09 13:11
- 提问者网友:爱唱彩虹
- 2021-02-09 05:26
求1-100的阶乘
最佳答案
- 五星知识达人网友:走死在岁月里
- 2021-02-09 06:32
代码在四舍五入,遇到进位处为9时处理有误,比如16。
#include
#define LD long double
#define ULL unsigned long long
LD f(int n){
return (n==1 ? (LD)1 : ((LD)n *f(n-1)));
}
int main()
{
int flag=0,i=0,n=0;
LD y;
char str[20];
while(scanf("%d",&n)==1 && n<=100 && n>0 ){
y=f(n);
if(y < 1.0e8 )
printf( "%d! = %d
",n,(ULL)y );
else
{
sprintf(str,"%1.8e",y);
if( str[9] > "4")
{
if(str[8]<"9")
str[8]++;
else
{ i=8; while(str[i]=="9") str[i--]="0";str[i]++; }
}
for(i=9;str[i];i++)
str[i] = str[i+1];
printf( "%d! = %s
",n, str);
}
}
return 0;
}
全部回答
- 1楼网友:鱼忧
- 2021-02-09 09:21
#include
int main(int argc, char *argv[])
{
int n=0,i=0;
double s=1;
do{
scanf("%d",&n);
if(1<=n && n<=100)
{
for(s=1,i=1;i printf("%.10lg\n",s);
}
}while(1<=n && n<=100);
return 0;
}
int main(int argc, char *argv[])
{
int n=0,i=0;
double s=1;
do{
scanf("%d",&n);
if(1<=n && n<=100)
{
for(s=1,i=1;i
}
}while(1<=n && n<=100);
return 0;
}
- 2楼网友:迟山
- 2021-02-09 08:01
我这个代码可以输出任意大小的整型数的阶乘来。供你参考……
#include "stdio.h"//
#include "math.h"//
#include "stdlib.h"//
char *FactorialLN(int n){
int i,j,k,len;
char *pa,*pb,*ptmp;
double dec=0;
for(n++,i=2;i len=(int)dec+2;
pa=(char *)malloc(len);
pb=(char *)malloc(len);
if(!pb || !pa){
printf("Application memory failure...");
exit(0);
}
for(i=0;i for(i-=2,j=--n;j;*(pb+i--)=j%10,j/=10);
len--;
i++;
while(--n){
for(k=0;k for(j=i;j for(j=len-1;j>i;j--)
if(*(pa+j)>9){
*(pa+j)-=10;
(*(pa+j-1))++;
}
if(*(pa+i)>9){
*(pa+i--)-=10;
(*(pa+i))++;
}
}
ptmp=pa;
pa=pb;
pb=ptmp;
for(k=0;k }
free(pa);
for(i=0;i return pb;
}
void main(void){
int n;
char *p;
printf("Please enter an integer.\nn=");
scanf("%d",&n);
printf("%d! = %s.",n,p=FactorialLN(n));
free(p);
printf("\n");
}
#include "stdio.h"//
#include "math.h"//
#include "stdlib.h"//
char *FactorialLN(int n){
int i,j,k,len;
char *pa,*pb,*ptmp;
double dec=0;
for(n++,i=2;i
pa=(char *)malloc(len);
pb=(char *)malloc(len);
if(!pb || !pa){
printf("Application memory failure...");
exit(0);
}
for(i=0;i
len--;
i++;
while(--n){
for(k=0;k
if(*(pa+j)>9){
*(pa+j)-=10;
(*(pa+j-1))++;
}
if(*(pa+i)>9){
*(pa+i--)-=10;
(*(pa+i))++;
}
}
ptmp=pa;
pa=pb;
pb=ptmp;
for(k=0;k
free(pa);
for(i=0;i
}
void main(void){
int n;
char *p;
printf("Please enter an integer.\nn=");
scanf("%d",&n);
printf("%d! = %s.",n,p=FactorialLN(n));
free(p);
printf("\n");
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯