首页 > 代码库 > 黑马程序员——c语言的流程控制

黑马程序员——c语言的流程控制

1、 流程控制
● 顺序结构默认的流程结构按照书写顺序执行每一条语句
● 选择结构对给定的条件进行判断再根据判断结果来决定执行哪一段代码
● 循环结构在给定条件成立的情况下反复执行某一段代码

 

 

2、 选择结构-if
1. 简单使用
● if (表达式)  语句1;     注:如果条件为真,就执行后面的语句,否则不执行。
◆ if(count>50)  开班;  上课;

 

 1 #include <stdio.h> 2 int main() 3 { 4   // 人数 5   int count = 80; 6    7   if ( count >= 50 ) 8   { 9   printf("开班!!!\n");10   printf("准备机器!!!\n");11   }12 13     return 0;14 }

 

● if(表达式)  语句1;  else 语句2;      注:如果条件成立就执行语句1,否则执行语句2。
◆ if(count>50)  开班;  else 不开班;
 1 #include <stdio.h> 2 int main() 3 { 4   // 人数 5   int count = 40; 6    7   if ( count >= 50 ) 8   { 9   printf("开班!!!\n");10   printf("准备机器!!!\n");11   }12   else13   {14       printf("不开班!!!\n");15       printf("不准备机器!!!\n");16       17   }18 19     return 0;20 }

 

 

● if(表达式)  {  }
◆ if(count>50)  {开班布置课室;}  else {}
◆ { }的作用域

 

● if -else if-else
◆ ifa==0 else if (a>0)  else 
◆ 特点:只有一个括号会被执行

 

 1 #include <stdio.h> 2 int main() 3 { 4     int a = 5; 5      6     if (a++ > 18) // a == 6 7     { 8         printf("A\n"); 9     }10     else if (a++ > 9) // a == 711     {12         printf("B\n");13     }14     else if (a++ > 5)  // a == 815     {16         printf("C\n");17     }18     else19     {20         printf("D\n");21     }22     23     printf("a的值是%d\n", a);24 25     return 0;26 }

 

 
● 陷阱
◆ if(a!=0)  { a不是0;} else {a0;}
◆ if (a); {  }      if后不要写分号
◆ if (a=0)     错误
◆ a == 0;
◆ if (10int a = 9;
 注:

        if (a>1)

        printf("A\n");

    printf("B\n"); 

       不管a取多少B都打印与if语句没关系

2. 习题
1> 输入一个整数day代表星期几,根据day的值输出对应的星期几,比如day==1,就输出“星期一”
 1 #include <stdio.h> 2 int main() 3 { 4     // 1.输入一个整数day 5     printf("输入一个整数day\n"); 6      7     // 2.接收输入 8     int day; 9     scanf("%d", &day);10     11     // 3.判断等级12     if (day == 1) {13         printf("星期一\n");14     } else if (day == 2){15         printf("星期二\n");16     } else if (day == 3) {17         printf("星期三\n");18     } else if (day == 4) {19         printf("星期四\n");20     } else if (day == 5) {21         printf("星期五\n");22     } else if (day == 6) {23         printf("星期六\n");24     } else if (day == 7) {25         printf("星期日\n");26     27     }28         return 0;29 }

 

2> 输入一个整数month代表月份,根据月份输出对应的季节。

春季:345

夏季:678

秋季:91011

冬季:1212

 1 #include <stdio.h> 2 int main() 3 { 4     // 1.输入一个整数day 5     printf("输入一个整数month代表月份"); 6      7     // 2.接收输入 8     int month; 9     scanf("%d", &month);10     11     // 3.判断等级12     if (month == 3||month == 4||month == 5) {13         printf("春季\n");14     } else if (month == 6||month == 7||month == 8){15         printf("夏季\n");16     } else if (month == 9||month == 10||month == 11) {17         printf("秋季\n");18     } else if (month == 12||month == 1||month == 2) {19         printf("冬季\n");20     }21         return 0;22 }

 

3> 输入一个整数score代表分数,根据分数输出等级(A-E(用两种方式)

A90~100

B80~89

C70~79

D60~69

E0~60

 

 1 #include <stdio.h> 2 int main() 3 { 4     // 1.提示输入 5     printf("请输入分数值:\n"); 6      7     // 2.接收输入 8     int score; 9     scanf("%d", &score);10     11     // 3.判断等级 12     if (score>=90 && score<=100) { // [90, 100]13         printf("A\n");14     } else if (score>=80) { // [80, 89]15         printf("B\n");16     } else if (score>=70) { // [70, 79]17         printf("C\n");18     } else if (score>=60) { // [60, 69]19         printf("D\n");20     } else { // (-∞, 59]21         printf("E\n");22     }23     return 0;24 }

 

3、 选择结构-switch
1. 简单使用
● switch(表达式) { case 数值1: break;  default: break;}
● 举例

int a = 10;

switch (a) { 

    case 0:

        printf("这是一个0");

        break;

    case 5:

        printf("这是一个5");

        break;

    case 10:

        printf("这是一个10");

        break;

    default:

        printf("什么也不是");

        break;

}

● 简述break的作用
● case中定义变量

 

2. ifswitch的对比
● 很多情况可以互换
● if用得比较多,比较灵活switch只能某个单值

 

3. 习题

switch替代if实现if中的习题

 

4、 循环结构-while
1. 简单使用
● 连续printf(俯卧撑)20;
● while(表达式{ }
● continue输出5次休息一下
● break的使用:某次的时候停止循环
2. 特点

只有条件成立才会执行循环体

3. 习题
1> 提示用户输入一个整数n,计算1+2+3++n的和
2> 提示用户输入一个整数n,计算1-2+3-4+5-6++n的和
4. 陷阱

while(条件);

 

5、 循环结构-do while
● 特点:一定会执行一次循环体
● whiledo while循环对比

int i=0;
while(i<0){
i++;
}

 

int i=0;
do{
i++;
} while(i<0);

 

6、 循环结构-for
1. 简单实用
● 运行过程
● 初始化语句等可以是多句(把printf放到for的括号中)

 

2. for循环嵌套

好友列表1

?好友1

?好友2

好友列表2

?好友1

?好友2

好友列表3

?好友1

?好友2

 

3. 陷阱
1> 死循环 for(;;);
2> for循环内部变量的作用域
3> 作用域混淆

for (int i = 0; i<5; i++)  int a = 10;

 

4. while循环和for循环的比较
● 可以互换
● for循环的变量可以及时回收

 

5. 习题
1> 提示用户输入一个正整数n,如果n5,就输出下列图形,其他n值以此类推

2> 输出九九乘法表

 

7、 breakcontinue
1. break
● 使用场合:switch\循环结构
● 循环嵌套下的break

 

2. continue
● 使用场合:循环结构
● 循环嵌套下的continue

黑马程序员——c语言的流程控制