C语言-03-流程控制

一、选择结构

1> if语句

  1. 使用注意

    ① if语句中的条件语句,不要把==和=弄混,可以把常量作为左值,
         这样的话,在无用=的情况下,编译时会报错
    ② if语句后若要定义新的变量或者有多条语句要用大括号,避免出现
         变量作用域问题和if条件成立时,无法完成预期的功能
    ③ if后面不要写分号,否则if条件满足时将执行空语句
    ④ if语句嵌套使用时,else与最靠近自己的未匹配else的if匹配
    ⑤ 在使用多个if语句时,尽量减少不必要的判断次数,以提升性能
    
  2. 示例(该博文此示例后的所有示例都是用代码块,可在本示例中测试)

include<stdio.h>

int main()
{
int a = 10;

if (10 == a)
{
    //若出现多条语句或定义新的变量,要写在代码块内
    int c = 10;
    printf("a=%d, c=%d\n", a, c);
}

//编译时会报错,错误信息为expression is not assignable
if (10 = a)
    ;

//if的嵌套使用,else与第二个if匹配
if (a>10)
    printf("a>10\n");
    if(10 == a)
        printf("a=10\n");
else
    printf("a!=10\n");

return 0;

}


2> switch语句

 1. 使用注意
	
		① switch语句的判断条件严格意义上讲必须是整型值
		② 每个case后面,都有一个常量表达式,该式子是在编译期间确定的
		  常量,不能为任意的变量
		③ 每个case标签,只是语句列表的进入点,switch的语句流会贯穿每
		  一个case标签
		④ 在绝大多数的case中都会有一个break语句,break语句可以将语
		  句列表分块,该块中所有case中的语句都会被执行
		⑤ 在每个switch语句中都尽量加上一个default语句,可以检测所有
		  非法的值
 2. 示例

	```
	{
        //根据输入的成绩,输出对应的等级
        int score;
        int rank;
        
        printf("请输入一个人的成绩(0-100):\n");
        scanf("%d", &score);
        
        //求出score十位上的数字,来判断等级
        rank =score / 10;
        
        switch (rank)
        {
                //90分以上为优秀,包括100分
            case 10:
            case 9:
                printf("优秀\n");
                break;
                //80-89为良好
            case 8:
                printf("良好\n");
                break;
                //70-79为中等
            case 7:
                printf("中等\n");
                break;
                //60-69为及格
            case 6:
                printf("及格\n");
                break;
                //其他情况为不及格
            default:
                printf("不及格\n");
                break;
        }
    }

3> if和switch对比

  1. switch语句完成的任务,if语句一定能完成;反之,则不行
  2. if语句多用于某个区间,switch语句多用于多个离散值

二、循环结构

1> while

  1. 使用注意

    ① while循环最少执行的次数为0次,即一开始循环条件就不成立
    ② while循环的循环条件必须改变,否则while循环可能变成死循环或
      无效循环
    ③ 用于循环条件的变量在定义是,尽量初始化,否则可能影响循环条
      件的第一次判断结果
    
  2. 示例

	{
        //输出100以内7的倍数的个数
        int number = 0; //用于循环条件
        int count = 0; //记录个数
        
        while(number < 100)
        {
            //从1开始,0不算7的倍数
            number++;
            if (0 == number % 7)
            {
                count++;
            }
        }
        
        printf("100以内7的倍数的个数为:%d\n", count);
    }

2> do-while

  1. 使用注意

    ① 循环体至少执行一次,这是与while循环最显着的区别
    
  2. 示例

	{
        //do-while循环,循环体至少执行一次
        int i = 5;
        do
        {
            i++;
        }while (i < 5);
        
        //while循环,循环体可以一次也不执行
        int j = 5;
        while(i < 5)
        {
            i++;
        }
    }

3> for

  1. 使用注意

    ① for语句的语句一在整个循环中只会执行一次
    ② 若一个变量只用于for语句,就在for语句的语句一处定义该变量,
      可以提升性能
    ③ for循环中的循环体,相当于循环结构中的一个代码块,在其中定
      义的变量,只作用于该代码块,代码块随着循环体的执行而动态的
      出现
    ④ for语句中定义的变量具有整个循环体的作用域,随着循环结构的
      结束而消失
    ⑤ 若某数据由多层结构,每层都是相同类型的数据,一般嵌套使用for
      循环
    
  2. 示例

	//输出九九乘法表
    for(int i = 1;i <= 9;i++)
    {
        //控制乘法表的行数
        for (int j = 1; j <= i; j++)
        {
            //控制乘法表的列数
            printf("%dx%d =%2d\t", i, j, i*j);
        }
        //每行结束要换行
        printf("\n");
    }

4> continue和break在循环结构中的应用

  1. continue跳出本次循环,继续执行下一次循环,可用于switch语句
  2. break跳出内层循环,继续执行外层循环,若是最外层循环,结束循环,只能用于循环结构
posted @ 2015-08-10 08:34  世俗孤岛  阅读(286)  评论(0编辑  收藏  举报