还是从前那个少年-回到中学之计算阶乘
B43 计算整数n的阶乘
修改前
#include <stdlib.h>
#include <stdio.h>
double fun(int n)
{
double result=1.0;
while(n>1&&n<170)
/*************found**************/
result*=--n;
/*************found**************/
return;
}
void main()
{int n;
system("CLS");
printf("Enter an integer: ");
scanf("%d",&n);
printf("\n\n%d!=%1g\n\n ",n,fun(n));
}
修改后
#include <stdlib.h>
#include <stdio.h>
double fun(int n)
{
double result=1.0;
while(n>1&&n<170)
/*************found**************/
result*=n--;
/*************found**************/
return result;
}
void main()
{int n;
system("CLS");
printf("Enter an integer: ");
scanf("%d",&n);
printf("\n\n%d!=%1g\n\n ",n,fun(n));
}
难度等级:★★★★★☆☆☆☆
学点啥
40 根据形参n计算并返回阶乘n!
修改前
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#pragma warning (disable:4996)
struct Ord
{
int n;
long ordor;
};
long fun(int n)
{
static struct Ord old={0,1};
int i;
if(n==old.n)
/**********************found***********************/
return (____(1)____);
if(n>old.n)
for(i=old.n+1;i<=n;i++)
old.ordor*=i;
else
for(i=old.n;i>n;i--)
old.ordor/=i;
/**********************found***********************/
old.n=____(2)____;
/**********************found***********************/
return ( ____(3)____);
}
main( )
{
int i,n;
for(i=0;i<5;i++)
{
n=rand()%10;
printf("%d %ld\n",n,fun(n));
}
}
修改后
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#pragma warning (disable:4996)
struct Ord
{
int n;
long ordor;
};
long fun(int n)
{
static struct Ord old={0,1};
int i;
if(n==old.n)
/**********************found***********************/
return (old.ordor);
if(n>old.n)
for(i=old.n+1;i<=n;i++)
old.ordor*=i;
else
for(i=old.n;i>n;i--)
old.ordor/=i;
/**********************found***********************/
old.n=n;
/**********************found***********************/
return (old.ordor);
}
main( )
{
int i,n;
for(i=0;i<5;i++)
{
n=rand()%10;
printf("%d %ld\n",n,fun(n));
}
}
输出结果
**难度等级:**★★☆☆☆
学点啥