跳转至

第三周:循环

  1. while 循环
//位数判断
#include <stdio.h>
int main(void)
{
    int x, n = 0;
    scanf("%d",&x);
    n++;
    x /= 10;
    while (x != 0){
        n++;
        x /= 10;
    }
    printf("%d",n);

    return 0;
}
  • 条件成立是循环继续的条件
  • while 当条件满足时进行循环体内的语句
  • 循环体内要有改变条件的语句,否则变为死循环
  • 尝试在纸上模拟运算

  • do-while 循环

do
{
    <循环体语句>
}while(<循环条件>)
  • 先经过循环体,在进行判断
  • 区别仅上,其他一致
//位数判断
#include <stdio.h>
int main (void)
{
    int x;
    scanf("%d", &x);
    int n = 0;
    do
    {
        x /= 10;
        n++;
    } while ( x > 0);       //注意这里有分号
    printf("%d",n);

    return 0;
}
  1. for循环
//while版阶乘
#include <stdio.h>
int main(void)
{
    int n, r = 1, i=1;
    printf("请输入n:");
    scanf("%d", &n);
    while (i <= n)
    {
        r *= i;
        i++;
    }
    printf("%d的阶乘为:%d", n, r);

    return 0;
}
//for版本阶乘
#include <stdio.h>
int main(void)
{
    int n;

    scanf("%d", &n);
    int fact = 1;

    int i = 1;
    for( i = 1; i <= n; i++ ){
        fact *= i;
    }
    /*
    for (i = n; i >1 ;i--){
        fact *= i;
    }
    */

    printf("%d!=%d\n", n, fact);
    return 0;
}
  • for( 初始条件(已有可省) ; 循环继续的条件 ; 循环每一轮要做的动作 )

  • 循环的选择

for循环=while 循环

Tips:

  • 如果有固定次数,用for
  • 如果必须执行一次,用do_while
  • 其他情况用while