A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chunhuayun 中级黑马   /  2015-9-23 11:12  /  558 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

循环结构介绍

1、循环结构概述
        1.1 概述
        循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某个程序段。直到条件不成立为止,给定的条件称为循环条件,反复执行的断码断称为循环体。
        循环体简单来说就是:循环式一次又一次的执行相同的代码。
        1.2 构成循环结构的几个条件
                1)循环控制条件
                2)循环体
                3)能够让循环体结束的语句(递增,递减,真,假等)

        1.3 while循环介绍及基本格式
                1.3.1 while循环的格式
  1.                 while(条件){
  2.                                 语句块;
  3.                         }
复制代码

                1.3.2 while循环的特点

        1.4 while使用举例
  1.                 int a = 5;//存储要执行的次数
  2.             //(1)循环控制条件
  3.             while (a > 0 ) {
  4.                 a--;//能够让循环控制条件为假的语句
  5.                 printf("a = %d \n",a);//循环体
  6.             }
复制代码

    1.5 while循环使用陷阱--死循环
            1.5.1
                    例如: int a = 5;
  1.                     while(a >0){
  2.                             printf("a = %d \n",a);
  3.                     }
复制代码

                    此处没有能够让循环控制条件为假的语句,因此a > 0一直为真,进入了死循环

            1.5.2 空语句死循环
                    例如 while(1);

            1.5.3 不要造成死循环,会严重影响到系统性能,甚至会占尽内存导致机器挂掉

         1.6 控制游戏方向
         
  1. int loop = 1;
  2.             //定义一个变量
  3.             char ch;
  4.             //写一个死循环
  5.             while (loop) {
  6.                 
  7.                 scanf("%c", &ch);
  8.                 if (ch == '\n') {
  9.                     continue;
  10.                 }
  11.                 switch (ch) {
  12.                     case 'w':
  13.                     case 'W':
  14.                         printf("Direction: Up\n");
  15.                         break;
  16.                     case 'S':
  17.                     case 's':
  18.                         printf("Direction: Down\n");
  19.                         break;
  20.                     case 'A':
  21.                     case 'a':
  22.                         printf("Direction: Right\n");
  23.                         break;
  24.                     case 'D':
  25.                     case 'd':
  26.                         printf("Direction: Left\n");
  27.                         break;
  28.                 
  29.                     default:
  30.                         printf("Quit\n");
  31.                         loop = 0;
  32.                         break;
  33.                 }
  34.                 }
复制代码



                1.7 while循环 猜数字游戏
                  
  1. int answer = arc4random_uniform(1000) + 1;// 1 - 1000的随机数
  2.    
  3.                     int i = 1;
  4.                     int guess = 0;
  5.                     
  6.                     while (i < 11) {
  7.                         printf("input a numbner(between 1 and 1000), %d times left: " , 10 - i);
  8.                         scanf("%d", &guess);
  9.                         
  10.                                        
  11.                         if(answer == guess){
  12.                             printf("Right!\m");
  13.                             break;
  14.                         } else if(answer > guess){
  15.                             printf("Too small\n");
  16.                         }else{
  17.                             printf("Too big\n");
  18.                         }
  19.                         if(++i > 10){
  20.                             printf("Stupid, over!\n");
  21.                             break;
  22.                         }
  23.                     }
  24.                     printf("Answer : %d", answer);
复制代码



                1.8 while循环使用时注意事项
                        1.8.1 while循环表达式问题
                                如:
  1.                         int i = 1, sum = 0;
  2.                                 while(i++ <= 5){ //i++ 后值变成2
  3.                                         sum += i;//第一次加i的时候,i = 2;
  4.                                 }
复制代码


                        1.8.2 死循环:任何数值都有真假性,
  1.                         while(-1){
  2.                                         语句块
  3.                                 }
复制代码

                                这个也是死循环,因为-1是非零的

                        1.8.3 当一个变量与一个常量惊醒 == 或 != 的时候,通常把常量写在前面,避免少写一个等号,变成了赋值运算,导致死循环
                                如 int num = 4;
  1.                         while(4 == num){
  2.                                         语句块;
  3.                                 }
复制代码


                        1.8.4如果while循环只有一句话,此时可以省略大括号
                                如:
  1. while(a > 0)printf("HH");
复制代码



2.do .... while循环的介绍和使用
        2.1 do ...while循环的基本格式
       
  1.             do {
  2.                         语句1;
  3.                         语句2;
  4.                 }while(条件);
复制代码



        2.2 while 与do...while的区别
                2.2.1 当条件第一次不为假的时候,两者无区别

                2.2.2 while是当型循环:当条件满足的时候,再去执行循环体
                do... while是直到        循环:先执行循环体,然后判断条件,直到条件为假就结束

                例:
  1. int a = 0;
  2.    
  3.                     while (a) {
  4.                         printf("While :a = %d\n",a--);
  5.                     }
  6.                     
  7.                     a = 10;
  8.                     
  9.                     do{
  10.                         printf("Do While :a = %d\n",a--);
  11.                     }while(a);
复制代码

                    打印结果:Do While :a = 0

1 个回复

倒序浏览
好详细啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马