栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C和指针 第4章 语句 4.5 while语句

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C和指针 第4章 语句 4.5 while语句

4.5 while子句
    C语言唯一存在差别的地方就是它的expression部分,这和if语句类似。while语句的语法:
    while( expression )
        statement
    循环的测试在循环体开始执行之前进行,所以如果测试的结果一开始就是假,循环体就根本不会执行。同样,当循环体需要多余语句来完成任务时,可以使用代码块来实现。


#include
#include

int main( void ){
    int i = 2;
    int count = 0;
    
    printf( "test value of while expression: n" );
    while( 0 ){
        printf( "the loop don't execute.n" );
    } 
    
    while( i ){
        printf( "the value of i is %dn", i );
        printf( "use block to finish the tash of while body!" );
        count++;
        printf( "the loop execute %d time.n", count );
        i--;
    }
    
    return EXIT_SUCCESS;
}
 

    4.5.1 break和continue语句
    在while循环中可以使用break语句,用于永久终止循环。在执行完break语句之后,执行流下一条执行的语句就是循环正常结束后应该执行的那条语句。
    在while循环中可以使用continue语句,它用于永久终止当前的那次循环。在执行完continue语句之后,执行流接下来就是重新测试表达式的值,决定是否继续执行循环。
    这两条语句的任何一条如果出现于嵌套的循环内部,它只对最内层的循环起作用,无法使用break或continue语句影响外层循环的执行。

    4.5.2 while语句的执行过程
    菱形表示判断、方框表示需要执行的动作,箭头表示它们之间的控制流
    while语句的操作过程。它的执行从顶部开始,就是计算表达式expr值。如果它的值是0,循环就终止;否则就执行循环体,然后控制流回到顶部,重新开始下一个循环。例如,下面的循环从标准输入复制字符到标准输出,直至找到文件尾结束标志。
    while( (ch = getchar()) != EOF ){
        putchar(ch);
    } 
    如果循环体内执行了continue语句,循环体内的剩余部分便不再执行,而是立即开始下一轮循环。在循环体只有遇到某些值才会执行的情况下,continue语句相当有用。
    while( (ch = getchar()) != EOF )
    {
        if( ch < '0' || ch > '9' )
        {
            continue;
        }
         
    }
    另一种方法是把测试转移到if语句中,让它来控制整个循环的流程。这两种方法的区别仅在于风格,在执行效率上并无差别。


#include
#include

int main( void ){
    int ch;
     
    
        
    
     
    while( (ch = getchar()) != EOF ){
        if( ch >= '0' && ch <= '9' ){
            
            printf( "%c", ch );
        }
    }
    
    return EXIT_SUCCESS;
}

 

    如果循环体内执行了break语句,循环就将永久性退出。例如,我们需要处理一列以一个负值作为结束标志的值:
    while( scanf("%f", &value) == 1 )
    {
        if ( value < 0 )
        {
            break;
        }
         
    }
    另一种方式是把这个测试加入到while表达式中,如下所示:
    while( scanf("%f", &value) == 1 && value >= 0 ){
    然而,如果在值能够测试之前必须执行一些计算,使用这种风格就显得比较困难。
    提示:
    偶尔,while语句在表达式中就可以完成整个语句的任务,于是循环体就无事可做。在这种情况下,循环体就用空语句来表示。单独用一行来表示一条空语句是比较好的做法,如下面的循环所示,它将丢弃当前输入行的剩余字符。
    while ( (ch = getchar()) != EOF && ch != 'n' )
        ;
    清楚地显示循环体是空的,不至于使人误以为程序接下来的一条语句才是循环体。


#include
#include

int main( void ){
    float value;
    
    
          
     
    
    
          
    
             
    
    
     
    while( scanf("%f", &value) == 1 && value >= 0 )
    {
         
        printf( "%f ", value );
    }
    
    return EXIT_SUCCESS;
}
 


#include
#include

int main( void ){
    int outer_var = 6;
    int inter_var = 7;
    int outer_i = 0;
    int inter_i;
     
    printf( "outer_var = %d, inter_var = %dn", outer_var, inter_var ); 
    printf( "the loop begins:n" );
    while( outer_i < outer_var ){
        printf( "outer_i = %dn", outer_i );
        inter_i = 0;
        while( inter_i < inter_var ){
            printf( "inter_i = %d ", inter_i );
            inter_i++;
            if( inter_i == 3 ){
                printf( "internal loop continue " );
                continue;
            }
            else if( inter_i == 5 ){
                printf( "internal loop break " );
                break;
            }
        }
        printf( "n" );
        outer_i++; 
    }
    printf( "outer loop ends.n" );
    
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/966098.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号