Board logo

标题: C语言Do..While循环语句用法 [打印本页]

作者: 苹果也疯狂    时间: 2015-3-7 12:19     标题: C语言Do..While循环语句用法



While 循环和 For 循环在每次进入循环体之前都要检查进入循环体的条件是否成立,故而循环体有可能一次都不会被执行。而我们下面所要说的 Do While 循环却恰恰相反,它在每次循环体执行完毕后才会检查进入循环体的条件是否成立,这就保证了循环体至少会被执行一次。Do While 循环的结构为:

        Do

            一条语句/复合语句(即循环体)

        While ( Condition );

注意:While ( Condition ); 这里的分号(;)可千万不能省!

    Do While 循环的执行过程如下图所示:


第一次进入循环体时,不用先检查 Condition 是否成立,而是马上进入循环体,等循环体执行完毕后才检查 Condition 是否为真,如果为真,则再次执行循环体,反之,则退出循环,转而执行后续的语句。其中,Condition 可以是任何合法的表达式。例如:

        #Include <Stdio.H>

        #Include <String.H>

        #Define  NAME  "Antigloss"

        Int Main(Void)

        {

            Char Name[20];

            Do

            {

                Printf("Please Guess What''S My Name: ");

                Scanf("%19s", Name);

            } While ( Strcmp(NAME, Name) );

            Printf("Yeah! You Got It!
");

            Return 0;

        }

上例中,第一次进入循环体时,不需检查 Strcmp(NAME, Name) 是否为真(Strcmp 函数用于判断两个字符串是否相等,如果相等,则返回 0),而是立刻无条件执行循环体:先输出 Please Guess What''S My Name: ,然后等待用户输入(Scanf 函数中的 "%19s" 命令 Scanf 最多把用户输入中的 19 个字符放入数组 Name);循环体执行完后才检测 Strcmp(NAME, Name) 是否为真:如果 NAME 不等于 Name,则 Strcmp 返回非 0(真),再次执行循环体,如果 NAME 等于 Name,则 Strcmp 返回 0(假),退出循环,转而执行后续的语句,即 Printf("Yeah! You Got It!
"); 。由于使用了 Do While 循环,本例中的循环体至少会被执行一次。

    当格式限定符为 %S 时,Scanf 在把用户输入读入数组后,会自动在数组中最后一个被读入的字符后面添上





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0