黑马程序员———C语言 分支语句和循环语句

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


 一 分支语句:

 1.if语句

            格式:if(表达式,常量,变量){

                           语句块1;

  }

      原理:先计算小括号中表达式的值,为真(1)会执行大括号中的语句,为假(0)不会执行大括号中的语句。

 2.if...else...分支语句

             格式:if(表达式){

               表达式为真,执行此处代码

       }else{

                表达式为假,执行此处代码

     }

      注:不管表达式为真为假,都会执行一个分支。

 

3.if语句的嵌套

 

           格式:if(表达式1{

                 表达式1为真,执行此处代码


       }else{

                表达式1为假,执行此处代码

             if(表达式2{

 

                表达式1为假,表达式2为真,执行语句块2

         }else{

 

                表达式1为假,表达式2为假,执行语句块3

       }

 

       }


 4.if语句的高级用法

      if(表达式1){

 

      如果表达式1为真,则执行语句块1,后面的语句块都不执行了

 

      }else if(表达式2){

 

      如果表达式1为假,表达式2为真,则执行语句块2,后面的语句块都不执行了

 

      }else if(表达式3){

 

      如果表达式1,表达式2为假,表达式3为真,则执行语句块3,后面的语句块都不执行了

 

      }else{

 

      如果表达式123都为假,会执行此处代码块

    }

 

 5.if语句的使用注意

  1)if(a==3); 这是空语句,什么也没有干。

  2)如果if之后的代码块,只有一句话,则可以省略大括号。也就是说,if条件语句如果没有大括号,只会影响紧挨着if的一句话。

  3)永真式和永假性 

    if1)大括号中永远执行

    if0)大括号中永远不会执行

  4)if语句结合return语句 在一个函数中,return之后的语句都不会执行。

    int a=3;

    if(a>3)

    return 0;

    printf("a>3\n");此处虽然位于return语句之后,但然会执行,因为a>3是假的,相当于没有return这句话。

 

  5)if的作用域

 if(a==3){

 int num=10;

 }

 printf("%d",num);//此处会报错,因为是在代码块内部定义的变量


 6)作用域的紊乱

 if(a==3)

 int num=10;//定义了一个num,什么也没有做

 printf("%d",num);


 二 switch语句:也就是开关语句

1.格式:switch(表达式){

                case 常量表达式1:语句1;

                case 常量表达式2:语句2;

                ...

                case 常量表达式n:语句n;

                default:语句n+1

 }

    语义:计算表达式的值,逐个与后面常量表达式的值比较,当表达式的值与常量表达式的值相等,执行其后语句,不在进行判断,继续执行后面所有case后的语句,如果表达式的值与常量表达式的值都不相等,则执行后default的语句。

 

2.case语句的穿透:某个case语句执行完成后,并没有结束,而直接向下执行其他的case语句,这就是case的穿透。

  如何预防?在每一个case语句之后加上一个:break;作用是结束switch语句。

 

3.if语句和switch语句的选择

  分支比较多而且无穷尽或者进行大量列举时用if,分支数量不多,但是用if代码量比较大时,用switch。也可以嵌套使用。

 

 4.使用注意:

1).表达式类型:可以放一个整型的变量(switchnum))  

                          可以放一个整型常量(switch10))

                          可以放一个返回值是整型的表达式(switch5+5),num=5+5

                          可以放一个转换为int类型的表达式(switch'a')或者switch'a')+'b'))其中字符可以转换成ascii码值。

2).case语句可以任意写多句,可加{},也可不加{}

3).break语句可选择的,可以加,也可以不加。


 5.case语句的注意事项:

1).格式:case 常量表达式:空格和表达式不能省略。

2).可以是常量 case 10:

3).只能是常量表达式 case 5+5:

4).default的位置可以任意放

5).case的传统也适用于default

6).如果default语句放到switch语句的最后,可以不加break,但是加在中间,不加break,也会发生穿透。所以必须加上break.

7).case后面不能是实数

8).case语句之后,默认的第一句话不能定义变量,非要定义,严格加上{},去掉{}的话,在第二句定义也是可以的

9).编译器的bug


三 循环语句

循环结构:在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定条件叫循环条件,反复执行的程序段称为循环体。简单的来说,循环是一次又一次的执行相同的代码块。

分类:while  do-while  for

循环的构成:循环控制条件,循环体,能够让循环结束的语句(递增,递减,真,假)。

 

 1.while循环

       1) 格式:while(条件){

              语句1;

              语句2;

              .....

 

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

 

        2)使用方法:while中的条件一开始就不成立,那么循环体中的语句永远不会被执行。条件成立,就会执行大括号里面的内容。然后再次判断条件,重复上述过程,直到条件不成立就结束while循环。

      3)死循环:就是一直都执行循环体中的代码,不会退出。

      4)产生随机数:导入头文件stdlib.h,然后调用随机函数,产生随机数。

                   arc4rand_uniform(n-m+1)+m

 

      5)使用注意

 a.死循环

   while-1{

 printf{"死循环"};

 }:只要条件不是0,就会一直执行下去,因为任何数值都有真假性,除了0,不管正负数都是真。

 b.当一个变量与常量进行==或者!=时,通常把常量写在前面。while3==num{


 }

c.while后面只有一条语句,{}可以省略,但是while()后面不可以直接加分号;要是加了,就是死循环,下面的都不执行了。

d.while大括号{}中定义的变量不可以在代码块外边访问。

e.作用域的紊乱。如同if

f.while(1)简单死循环

 

2.do...while 循环

 do{

 语句1

 语句2

 ....

 }while(条件);直到型循环:先执行循环体,然后判断条件,条件成立,在执行循环体中的语句,在判断条件,重复上述,直到条件为假就结束。

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

               语句结束之后,必须有“;”

 

 whiledo...while的对比

 a.当循环控制条件第一次的判断不为假时,whiledo...while循环体执行的次数相同。

 b.当循环控制条件第一次的判断为假时,while循环的循环体执行0次。do...while循环体执行1次。

 

3.for循环

1)格式:for(表达式1;表达式2;表达式3){

    语句;

 }

2)构成循环的条件:控制条件 循环体 能够让控制条件为假的操作

3)执行流程:先求解表达式1定义一个变量

          在判断表达式2,为真(非0)则执行{}里面的内容,然后在执行表达式3,若为假,结束循环,

          再从表达式2执行起,为真(非0)则执行{}里面的内容,然后在执行表达式3,若为假,结束循环。

注意:其中表达式1只会执行一次,当条件不满足时,循环就结束。

 

4for循环的其他形式:省略形式

 第一种

 int i=0

 for(;i<5;i++){

 printf("");

 }

 第二种

 int i=0

 for(;i<5;){

 printf("");

 i++;

 }

 第三种

 int i=0

 for(;;){

 if(i<5){

 printf("");

 i++;

 }else{

 break;

 }

 

 }

 

5)for循环可以嵌套嵌套两层,如以下打印图形:

for (int i=0; i<5; i++) {

        for (int j=0; j<5; j++) {

    

            printf("*\t");

        }

        

        printf("\n");

        

    }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值