黑马程序员——C语言基础---循环结构

                                                                      ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------

一、循环结构概念

1、循环结构概述 

循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序段, 直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。 

循环结构简单来说就是:循环是一次又一次的执行相同的代码块

C语言供了多种循环语句,可以组成各种不同形式的循环结构: 

用goto语句和if语句构成循环; 

用while语句; 

用do-while语句; 

用for语句;  

2、构成循环结构的几个条件: 

一般来说一个循环需要以下几部分构成:

1)循环控制条件 循环退出的主要依据,来控制循环到底什么时候退出 

2)循环体 循环的过程中重复执行的代码段 

3)能够让循环结束的语句(递增、递减、真、假等) 能够让循环条件为假的依据,否则退出循环 

二、while循环介绍及基本格式

1、while循环的格式:  

while ( 条件表达式 ) 

{

语句1; 

语句2;

 .... 

2、while循环使用方法: 

1)while循环的特点: 

如果while中的条件一开始就不成立,那么循环体中的语句永远不会被执行 

 

2)while语句的语义是: 

如果条件成立,就会执行循环体中的语句(“循环体”就是while后面大括号{}中的内 容)。然后再次判断条件,重复上述过程,直到条件不成立就结束while循环 

<span style="font-size:14px;">#include <stdio.h>
void test1(){
    int i=1;    
    //   1)循环控制条件
    while(i<=1000){        
        //2)循环体
        printf("第%d次说:我爱你!\n",i);        
        //能够让循环控制条件为假
        i = i+1;       
    }
}
void test2(){
    //计算 1+2+3+.....+100 的和
    //定义一个变量,存储当期执行的次数
    int i=1,sum=0;
    int n=0;
    //假设从键盘上输入一个数,计算1+2+3+....+n 的和
    printf("请输入一个数字:\n");
    //从键盘上接受一个数
    scanf("%d",&n);   
    while (i<=n) {       
        //用sum的值+i的值
        sum = sum+i;   //i = 1  sum = 1
        //0+1,   (0+1)+2        
        //让循环条件为假的控制
        //        i=i+1;
        i++;
    }    
    printf("1+2+3+....+%d=%d\n",n,sum);
}
int main(int argc, const char * argv[]) {   
    test1();        
    return 0;
}</span>

三、while循环使用注意

死循环的妙用:

死循环就是一直执行循环体中的代码,不会退出

比如:While(条件);

1)不知道要循环的次数的时候使用最佳,常常妙用死循环

2)在某个范围内查找满足条件的值

1、死循环:任何数值都真假性 

while (-1)

{

    printf("死循环\n");

2、当一个变量与一个常量进行== 或 != 的时候,通常把常量写在前面 

int num = 3;

while (3 == num)

{

    printf("num = %d\n",num);

    num++;

3、while 后如果只有一条语句它可以省略大括号 

1)空语句它也是一条语句 

2)while小阔号后面不可以直接写分号 

int num = 0;

while (num < 3);

{

    printf("num = %d\n",num);

    num++;

}

4、作用域:内部代码块中定义的变量不可以在外边代码块中访问 

while (1 < 3)

{

    int a = 0;

}

printf("a = %d\n",a); 

5、作用域紊乱 

while (1 < 3) int num = 5;

6、最简单死循环 

while (1); 

<span style="font-size:14px;">#include <stdio.h>
int main(int argc, const char * argv[]) {   
//1、如果while只有一句话,这个时候可以省略大括号
    //1+2+3+....+100  实现
    int i=0,sum = 0;
//    while (i<=100) {
//        sum += i;  //sum = sum+i;
//        i++;
//    }
    //i = 100
    //     1/2        0+2
    //     5/6        +6
    //     1+2+3+4+5
    //     2+3+4+5+6
    while (i++ < 100) sum+=i;
    printf("%d\n",sum);    
//2、while空语句问题,会造成死循环
//    while (i<=3);
//    
//    {
//        printf("i = %d\n",i);
//        i++;
//    }    
    return 0;
}</span>

四、do…while循环介绍及语法格式

1、do ... while循环的基本格式 

while(条件)

语句块; 

}  

当型循环:当条件满足的时候,再去执行循环体 

do 

语句1; 

语句2;

 .... 

while ( 条件 ); 

直到型循环:先执行循环体,然后判断条件,直到条件为假就结束 

2、do...while语句用法  

1)do...while语句的语义是:  

当执行到do-while循环时,首先会执行一遍循环体中的语句(“循环体”就是do后面大括号 {}中的内容)。接着判断while中的条件,如果条件成立,就执行循环体中的语句。然后再 次判断条件,重复上述过程,直到条件不成立就结束while循环  

2)do-while循环的特点:  

不管while中的条件是否成立,循环体中的语句至少会被执行一遍 

int i=0; do

 i++;

while(i<10);

<span style="font-size:14px;">#include <stdio.h>
int main(int argc, const char * argv[]) {   
    int i=1,sum=0;
    //do while循环的使用
//    do{   
//        printf("第%d次我爱你!\n",i);
//        i++;   
//    }while (i<=1000);    
    //1+2+3+....+100   
    do{   
        //累加: 在上一次结果之上再加上某一个值
        sum+=i;
        i++;   
    }while (i<=100);
    printf("sum = %d\n",sum);
    return 0;
}</span>

五、for循环结构及执行过程 

1、for循环的语法格式 

C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循 环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。 

一般形式:

for(表达式1;表达式2;表达式3) 

{

语句;

2、for循环执行过程 

(1) 先求解表达式1。

(2) 求解表达式2,若其值为真(值为非0),则执 行for语句中指定的内嵌语句,然后执行下 面 第(3)步。若为假(值为0),则结束循环,转到第(5)步。

(3) 求解表达式3。

(4) 转回上面第(2)步骤继续执行。

(5) 循环结束,执行for语句下面的一个语 

3、for循环使用 

for语句常见的形式:

for(循环变量赋初值;循环条件;循环变量增值) 

六、for循环的其他形式

1、for循环的其他形式 

1)表达式省略(三个表达式都可以省略)

如:for(; ;) 语句相当于while(1) 语句,即不设初值,不判断条件(认为表达式2为真值),循环 变量不增值。无终止地执行循环体。  

2)循环控制无关的任意表达式 

表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达 式,中间用逗号间隔。如: 

for(sum=0,i=1;i<=100;i++) sum=sum+i;

for(i=0,j=100;i<=j;i++,j--) k=i+j; 

表达式1和表达式3都是逗号表达式,各包含两个赋值 

表达式,即同时设两个初值,使两个变量增值. 

在逗号表达式内按自左至右顺序求解,整个逗号表达式的值为其中最右边的表达式的值。

如: 

for(i=1;i<=100;i++,i++) sum=sum+i;

相当于

for(i=1;i<=100;i=i+2) sum=sum+i;

七、break关键字及break语句break关键字

break和continue语句都可以用在循环中,用来跳出循环(结束循环);

break语句还可以用 在switch语句中,用来跳出switch语句。 

break语句用法 

break语句通常用在循环语句和开关语句中。

当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语 句,通常break语句总是与while语句联在一起,即满足条件时便跳出循环。  

break用于跳出当前循环(结束当前循环)

break之后的语句就都不执行了

注意: 

// if(表达式)else{ ...... break;......} 

1)break语句对if-else的条件语句不起作用; 

2)在多层循环中,一个break语句只向外跳一层。

<span style="font-size:14px;">#include <stdio.h>
void test1(){
    //打印 1 2 3 4 5 。。。10的数
    for(int j=0;j<5;j++){      
        //
        if (j==3) {
            break;  //break的作用是 0 1 2 如果==3 不再循环行
        }       
        for (int i=1; i<=10; i++) {           
            //break用于跳出当前的循环(结束当前的循环)
            //break之后的语句也都不执行了
            // 打印5行
            // 1 2 3 4
            if (i==5) {
                break;  //break的作用是 如果==5的时候,列循环停止
            }
            printf("%d\t",i);
        }                
        printf("\n");
    }
    printf("\n");
}
int main(int argc, const char * argv[]) {    
    //计算r=1到r=10时的圆面积,直到面积area大于100为止。
    float area = 0.0f;
    for (int r=1; r<=10; r++) {        
        //计算面积
        area = 3.14f*r*r;        
        if (area > 100) {
            printf("半径 = %d,面积 = %.2f\n",r,area);
            break;
        }       
    }   
    return 0;
}</span>

八、continue关键字及continue语句 

1、continue 语句

(结束本次循环,继续下次循环) 

2、用法 

continue语句的作用是跳过循环体中剩余的语句而继续下一次。

continue语句只用在 for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。 

对比一下break和continue。  

while的用法:

while(表达式1)

{

    ......

    if(表达式2)

        break;

    ......

continue的用法:

while(表达式1)

{

    ......

    if(表达式2)

        continue; 

    ...... 

}

<span style="font-size:14px;">#include <stdio.h>
//continue的使用测试
void test1(){
    //1 2 3 4 5 6 7 8 9 10
    //continue 作用,结束本次循环的剩余的语句
    //              继续下一次循环
    //continue 可以加速循环的执行
    for (int i = 1; i<=10; i++) {
        if (i%3==0) {
            continue;
        }
        printf("%d",i);
        printf("*");
        printf("#\t");
    }
}
int main(int argc, const char * argv[]) {
    
    //把100~200之间的不能被3整除的数输出
    // i%3!=0
    // i%3==0  continue;
    for (int i=100; i<=200; i++) {
        if (i%3==0) continue;
        printf("%d\t",i);            
    }    
    printf("\n");
    return 0;
}</span>

                                                                     -------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值