重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#include"stdio.h"
创新互联来电联系:18980820575,为您提供成都网站建设网页设计及定制高端网站建设服务,创新互联网页制作领域10年,包括成都假山制作等多个领域拥有多年的网站运维经验,选择创新互联,为企业保驾护航!
void main()
{
long a=1,n;
for(n=1;n=10;n++)
{
a*=n;/*求阶乘*/
}
printf("%ld\n",a);
}
#includestdio.h
int main()
{
int a=1,i;
for(i=1;i=10;i++)
a=a*i;
printf("10的阶乘=%d",a);
return 0;
}
扩展资料:
在C语言中,有三种类型的循环语句:for语句、while语句和do While语句。分别介绍如下:
for
for为当型循环语句,它很好地体现了正确表达循环结构应注意的三个问题:
⑴控制变量的初始化。
⑵循环的条件。
⑶循环控制变量的更新。
while:
while结构循环为当型循环(when type loop),一般用于不知道循环次数的情况。维持循环的是一个条件表达式,条件成立执行循环体,条件不成立退出循环。
while语句格式为:
while(条件表达式)
循环体
每次执行循环体前都要对条件表达式进行判断。
参考资料来源:百度百科-循环语句
#include"stdio.h"
main()
{inti,s=1;
for(i=10;i=1;i--)
s=s*i;
printf("s=%d\n",s);
}
扩展资料
C语言使用递归阶乘
#includestdio.h
longintmultiplyNumbers(intn);
intmain()
{
intn;
printf("输入一个整数:");
scanf("%d",n);
printf("%d!=%ld",n,multiplyNumbers(n));
return0;
}
longintmultiplyNumbers(intn)
{
if(n=1)
returnn*multiplyNumbers(n-1);
else
return1;
}
这个算法的思路是这样的,阶乘值有末后有多少个
0,取决于阶乘中乘了多少个
10。10
的质因数是
2
×
5,而
2
这个因数是远远比
5
多的。如:
1
×
2
×
3
×
4
×
5
=
120
质因数有
1
个
5
,有
3
个
2
:2
和
4
=
2
×
2。
1
×
2
×
3
×
4
×
5
×
6
×
7
×
8
×
9
×
10
=
3628800
质因数有
2
个
5
,有
8
个
2。
所以数后面的
相当于数因数中5的个数。
1!
2!
3!
4!
后面没有
0,
5!
6!
7!
8!
9!
后面有
1
个
0,
10!
11!
12!
13!
14!
后面有
2
个
0,
15!
16!
17!
18!
19!
后面有
3
个
0,
20!
21!
22!
23!
24!
后面有
4
个
0。
而
25!
则有
6
个
0,因为
25
=
5
×
5
因此数
n!
后面的
0,n/5
就可以数到有多少个
5
的倍数,再循环就是计算
n/5/5,可以数到有多少个
25
的倍数,知道要加多少个
0,n/5/5/5
可以数到有多少个
125
的倍数,如此类推,直到商等于
0,就算到结果。这就是以下核心算法的意义:
count
=
0;
//
初始化记数变量
while
(n
!=
0)
//
重复数数目,直到商等于0,才不用再加。
{
count
+=
n
/
5;
//
第1次循环加5的倍数的个数,第2次加25的倍数的个数,…
n
=
n
/
5;
//
转到下一次循环。
}
#includestdio.hint fun(int n){//定义函数求n的阶乘 if(n==0||n==1) return 1; else return n*fun(n-1);} int main(){ int i; for(i=1;i=10;i++) printf("%d的阶乘为:%d\n",i,fun(i)); return 0; } /*输出:1的阶乘为:12的阶乘为:23的阶乘为:64的阶乘为:245的阶乘为:1206的阶乘为:7207的阶乘为:50408的阶乘为:403209的阶乘为:36288010的阶乘为:3628800 */
#includestdio.h
int fac(int n); //函数声明
void main()
{
int a;
//int m;
printf("input a int number:");
scanf("%d",a);
printf("after the function is:");
//m=f(a);
printf("%d\n",fac(a));
}
int fac(int n) //定义fac函数
{
if(n0)
{
printf("n0,date error!");
}
else
if(n==0||n==1)
{
return 1;
}
else
return (n*fac(n-1));
}
注意输入的数不能太大了,否则就会出现溢出的情形。
比方说10000的阶乘就要用数组来实现了,这个程序是无法办到的。