C语言求N阶乘的方法

来源:互联网 发布:机房网络布线图 编辑:程序博客网 时间:2024/04/29 16:20

1.for循环:
#include<stdio.h>
main()
{
int n,i,x
printf ("in put a num : ");
scanf ("%d",&n);
if (n<0) printf ("data error! \n");
if(n=0) printf ("0!" ,1);
else for(i=1;i<=n;i++) x=x*i;

printf ("%d!, %d", n, x);
}
  
2.用递归实现:
#include<stdio>
void main)
{
int fac (int n);
int n, y;
printf ( "in put an interger num:");
sacnf ("%d",&n);
y=fac (n);
printf ("%d!=%d\n",n,y);
}
int   fac ( int n)
{int f ;
if (n<0)
printf ("data error!");
else if(n==1||n==0) f=1;else f=fac(n-1)*n;
return (f);
}
3.用局部变量:
register变量
# include <stdio.h>
void main ()
{
long fac (long);
long i, n;
scanf ("%1d", &n);
for (i=1; i<=n; i ++)
printf ("%1d!=%1d \n" ,i, fac(i));
}
long fac (long n)
{
register long i,f=1;
for (i=1;i<=n;i++)
f = f*i;
return (f);
}
static变量
# inlcude <stdio.h>
void main ()
{
int fac (int n);
int i;
int n;
printf ("please in put a   num :");
scanf ("%d" ,&n);
if(n<0) printf ("data error! \n");
else if (n==0) printf ("0!,1\n");
else for (i=1;i<=n;i++)
printf ("%1d!=%1d\n" , i , fac(i));
}
int fac (int n) {
static int f=1;
f = f*n;
return (f);


0 0
原创粉丝点击