zoukankan      html  css  js  c++  java
  • C语言while语句

    在C语言中,共有三大常用的程序结构:

    • 顺序结构:代码从前往后执行,没有任何“拐弯抹角”;
    • 选择结构:也叫分支结构,重点要掌握 if else、switch 以及条件运算符;
    • 循环结构:重复执行同一段代码。


    前面讲解了顺序结构和选择结构,本节开始讲解循环结构。所谓循环(Loop),就是重复地执行同一段代码,例如要计算 1+2+3+……+99+100 的值,就要重复进行99次加法运算。

    while循环

    while循环的一般形式为:

    while(表达式){
        语句块
    }

    意思是,先计算“表达式”的值,当值为真(非0)时, 执行“语句块”;执行完“语句块”,再次计算表达式的值,如果为真,继续执行“语句块”……这个过程会一直重复,直到表达式的值为假(0),就退出循环,执行 while 后面的代码。

    我们通常将“表达式”称为循环条件,把“语句块”称为循环体,整个循环的过程就是不停判断循环条件、并执行循环体代码的过程。

    用 while 循环计算1加到100的值:

    1. #include <stdio.h>
    2. int main(){
    3. int i=1, sum=0;
    4. while(i<=100){
    5. sum+=i;
    6. i++;
    7. }
    8. printf("%d ",sum);
    9. return 0;
    10. }

    运行结果:
    5050

    代码分析:
    1) 程序运行到 while 时,因为 i=1,i<=100 成立,所以会执行循环体;执行结束后 i 的值变为 2,sum 的值变为 1。

    2) 接下来会继续判断 i<=100是否成立,因为此时 i=2,i<=100 成立,所以继续执行循环体;执行结束后 i 的值变为 3,sum 的值变为3。

    3) 重复执行步骤 2)。

    4) 当循环进行到第100次,i 的值变为 101,sum 的值变为5050;因为此时 i<=100 不再成立,所以就退出循环,不再执行循环体,转而执行while循环后面的代码。

    while 循环的整体思路是这样的:设置一个带有变量的循环条件,也即一个带有变量的表达式;在循环体中额外添加一条语句,让它能够改变循环条件中变量的值。这样,随着循环的不断执行,循环条件中变量的值也会不断变化,终有一个时刻,循环条件不再成立,整个循环就结束了。

    如果循环条件中不包含变量,会发生什么情况呢?

    1) 循环条件成立时的话,while 循环会一直执行下去,永不结束,成为“死循环”。例如:

    1. #include <stdio.h>
    2. int main(){
    3. while(1){
    4. printf("1");
    5. }
    6. return 0;
    7. }

    运行程序,会不停地输出“1”,直到用户强制关闭。

    2) 循环条件不成立的话,while 循环就一次也不会执行。例如:

    1. #include <stdio.h>
    2. int main(){
    3. while(0){
    4. printf("1");
    5. }
    6. return 0;
    7. }

    运行程序,什么也不会输出。

    再看一个例子,统计从键盘输入的一行字符的个数:

    1. #include <stdio.h>
    2. int main(){
    3. int n=0;
    4. printf("Input a string:");
    5. while(getchar()!=' ') n++;
    6. printf("Number of characters: %d ", n);
    7. return 0;
    8. }

    运行结果:
    Input a string:c.biancheng.net↙
    Number of characters: 15

    本例程序中的循环条件为getchar()!=' ',其意义是,只要从键盘输入的字符不是回车就继续循环。循环体n++;完成对输入字符个数计数。

    do-while循环

    除了while循环,在C语言中还有一种 do-while 循环。

    do-while循环的一般形式为:

    do{
        语句块
    }while(表达式);

    do-while循环与while循环的不同在于:它会先执行“语句块”,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次“语句块”。

    用do-while计算1加到100的值:

    1. #include <stdio.h>
    2. int main(){
    3. int i=1, sum=0;
    4. do{
    5. sum+=i;
    6. i++;
    7. }while(i<=100);
    8. printf("%d ", sum);
    9. return 0;
    10. }

    运行结果:
    5050

    注意while(i<=100);最后的分号;,这个必须要有。

    while循环和do-while各有特点,大家可以适当选择,实际编程中使用while循环较多。

  • 相关阅读:
    Codeforces 177G2 Fibonacci Strings KMP 矩阵
    Codeforces Gym100187C Very Spacious Office 贪心 堆
    Codeforces 980F Cactus to Tree 仙人掌 Tarjan 树形dp 单调队列
    AtCoder SoundHound Inc. Programming Contest 2018 E + Graph (soundhound2018_summer_qual_e)
    BZOJ3622 已经没有什么好害怕的了 动态规划 容斥原理 组合数学
    NOIP2016提高组Day1T2 天天爱跑步 树链剖分 LCA 倍增 差分
    Codeforces 555C Case of Chocolate 其他
    NOIP2017提高组Day2T3 列队 洛谷P3960 线段树
    NOIP2017提高组Day2T2 宝藏 洛谷P3959 状压dp
    NOIP2017提高组Day1T3 逛公园 洛谷P3953 Tarjan 强连通缩点 SPFA 动态规划 最短路 拓扑序
  • 原文地址:https://www.cnblogs.com/zhugeanran/p/8515579.html
Copyright © 2011-2022 走看看