在数学中有一个运算符号叫做阶乘,它是基斯顿·卡曼于 1808 年发明的运算符号,是数学术语。
一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!
那么我们想使用C语言编写一个程序来实现用户输入一个数字来计算出n的阶乘该怎么做?
显然读用户的输入需要一个int的n,然后计算的结果需要用一个变量保存,可以是int的factor,在计算中需要有一个变量不断地从I递增到n,那可以是int的i。
#include <stdio.h>
int main( )
{
int n;
scanf ( "%d", &n) ;
int fact = 1;
int i = 1;
while ( i <= n ) {
fact*= i;
i++;
}
printf ( "%d !=%d\n", n, fact) ;
}
for 循环
我们看到上面我们实现了功能但是在C语言中还有一种个合适的循环结构写法那就是for循环语句。
#include <stdio.h>
int main( )
{
int n;
scanf( "%d" , &n) ;
int fact = 1;
int i = 1;
for ( i=1; i<=n; i++ ) {
fact *=i;
}
printf( "%d !=%d\n", n, fact) ;
}
for循环它更像是一个计数循环:设定一个计数器,初始化它,然后在计数器到达某值之前,重复执行循环体,而每执行一轮循环,计数器值以一定步进进行调整,比如加1或者减1
for ( i=0; i<5; i=i+1 ) {printf("%d", i);
}
我们可以把for循环读成:“对于一开始的i=0,当i<5时,重复做循环体,每一轮循环在做完循环体内语句后,使得i=i+1。”
语法
C 语言中 for 循环的语法:
for ( init; condition; increment ) {
statement(s);
}
下面是 for 循环的控制流:
- init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。
- 接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
- 在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
- 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。