黑马程序员-02.C 语言中 if while switch 知识点总结

时间:2021-04-18 00:26:35

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

1.选择

1)结构

1.if

[objc] view plaincopy
  1. 1>if的第1种结构  
  2.  if(条件) //if()后不要写分号  
  3.  {  
  4.     语句1;  
  5.     语句2;  
  6.     ......  
  7.  }//条件为真时,会执行里面所有语句。  
  8.    
  9.  2>if的第2种结构  
  10.  if(条件1)  
  11.  {  
  12.      语句1;  
  13.      语句2;  
  14.      ......  
  15.  }   
  16.  else  
  17.  {  
  18.       
  19.  }  //条件1为真时,执行{}内语句;为假执行else{}里面的语句  
  20.    
  21.  3>if的第3种结构  
  22.  if(条件1)  
  23.  {  
  24.      语句1;  
  25.      语句2;  
  26.      ......  
  27.  }  
  28.  else if(条件2)  
  29.  {  
  30.    
  31.  }  
  32.  else if(条件3)  
  33.  {  
  34.    
  35.  }  
  36.  else if(条件4)  
  37.  {  
  38.    
  39.  }  
  40.  else   
  41.  {  
  42.    
  43.  }//从上倒下依次判断,若其中一个条件成立,不再继续向下判断  
  44.    
  45.  4>if的第4种结构  
  46.  if (条件)  
  47.    语句1;  
  48.    语句2;  
  49.    //如果条件成立,只执行后面第一条语句,语句2和if没有关系  

 2)特点

1>条件可以为真假值 2>判断值是否相等或比较大小,常量值放左边,变量值放右边 3>注意赋值运算符不要写成两个等号= 4>else总是和前面最近的、没有else相匹配的if相匹配 5>下面的代码是错误的:作用域不明确

    if (10 > 6)

      int a = 5;

如果要在if后面的语句中定义新的变量,必须用大括号{}


输入一个整数score代表分数,根据分数输出等级(A-E)

 

  1. #include <stdio.h>  
  2. int main()  
  3. {  
  4.     int score;  
  5.     printf("请输入一个0到100之间的分数\n");  
  6.     scanf("%d",&score);  
  7.     if ((score >= 0)&&(score < 60)) {  
  8.         printf("E\n");  
  9.     }  
  10.     else if ((score >= 60)&&(score < 70)) {  
  11.         printf("D\n");  
  12.     }  
  13.     else if ((score >= 70)&&(score < 80)) {  
  14.         printf("C\n");  
  15.     }  
  16.     else if ((score >= 80)&&(score < 90)) {  
  17.         printf("B\n");  
  18.     }  
  19.     else if ((score >= 90)&&(score <= 100)) {  
  20.         printf("A\n");  
  21.     }  
  22.     else  
  23.         printf("请输入一个0到100之间的分数");  
  24. }  
  25. return 0;  
  26.   
  27. }  
性能最好

  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. }  



2.switch

1)结构

switch (数值)

{

   case数值1:

       break;

    

   case数值2:

       break;

    

   case数值3:

       break;

    

    default:

       break;

}

2)特点

1>默认情况下,只有一个case后面的代码会被执行

2>如果一个case后面没有break,而且这个case成立,就会按顺序执行后面所有case中的语句,直到遇到break为止

3>如果要在case后面定义一个新的变量,必须用大括号{}包住

输入一个整数score代表分数,根据分数输出等级(A-E)

  1. #include <stdio.h>  
  2.   
  3. int main()  
  4. {  
  5.     int score = 100;  
  6.       
  7.     switch (score/10) {  
  8.         case 10// 100  
  9.         case 9// 90+  
  10.             printf("A\n");  
  11.             break;  
  12.         case 8// 80+  
  13.             printf("B\n");  
  14.             break;  
  15.         case 7// 70+  
  16.             printf("C\n");  
  17.             break;  
  18.         case 6// 60+  
  19.             printf("D\n");  
  20.             break;  
  21.         default:  
  22.             printf("E\n");  
  23.             break;  
  24.     }  
  25.   
  26.     return 0;  
  27. }  


if和switch的区别
1> if语句能完成的功能,switch并不一定能完成 2> 在有些情况下,if语句和switch语句可以互换

3> switch能完成的功能,if语句都能完成

4> if比较灵活,switch只能是某个数值

2、循环结构

1.while

1)结构

 while (条件)

 {

   循环体

 }

1).先确定需要重复执行的操作; 2).再确定约束条件;

2)运行原理

1).如果一开始条件就不成立,永远不会执行循环体

2).如果条件成立,就会执行一次循环体,执行完毕,再次判断条件是否成立......

最简单的死循环

while(1);



2.do while

1)结构

 

do {

 

} while(条件);

while和do-while的区别

2)注意点

 1.很多情况下,while和do while可以互换


  2.while特点:如果一开始的条件不成立,永远不会执行循环体


 do while特点:不管一开始的条件是否成立,至少会执行一次循环体

 

3.最好使用while


特点:不管条件是否成立,至少会执行一次循环体

3.for

1)结构 

for (语句1;条件; 语句2)

 {

    循环体

 }

 

 语句1:初始化语句

 语句2:增量语句(执行完循环体后再执行的语句)

2)特点 

 1.for一开始就会执行一次语句1(整个for循环只会执行一次)

 2.判断条件是否成立,如果条件成立,就会执行一次循环体,然后就会执行语句2,再次判断条件是否成立

[objc] view plaincopy
  1. #include <stdio.h>  
  2. int main()  
  3. {  
  4.     int count = 0;  
  5.       
  6.     for (int count = 0; count < 5; count++)  
  7.     {  
  8.         printf("第%d个\n", count);  
  9.     }  
  10.     return 0;  
  11. }  
最简单的利用for循环实现死循环: for( ; ; );

注意点:

1>不要随便在for()后面写分号

2>注意循环体中变量的作用域

3>注意for()循环执行顺序,相同变量的情况下,优先由内向外找值 
while循环与for循环的比较:

1>while循环,变量在外

2>for循环,变量在内,运行完可以直接回收

2)for循环嵌套

1> 输出九九乘法表

[objc] view plaincopy
  1. #include<stdio.h>  
  2. int main()  
  3. {  
  4.     int i,j;//定义变量  
  5.     for(i = 1; i <= 9; i++)//控制行,也就是控制第一数  
  6.     {     
  7.       
  8.         for(j = 1; j <= i; j++)//如果j<=i则停止循环,意思是让j<=i  
  9.           
  10.         {  
  11.           printf("%d*%d=%d ", i, j, i*j);输出  
  12.         }   
  13.           
  14.     printf("\n");  
  15. //这两个FOR循环其实是i控制1-9数(可以理解成行),让j每次从1开始依次与当前的i相乘,当j大于i停止第二的循环,i++,然后继续j的for循环  
  16.      }  
  17. return 0;  
  18. }  

3.break continue

1)break:

1>使用场合
Ⅰ switch语句:退出整个switch语句 Ⅱ 循环结构:退出整个循环语句 * while * do while * for
 2>注意点
 只对最近的循环结构有效

 
2)continue:

1>使用场合
 循环结构:结束当前这次的循环体,进入下一次循环体 * while * do while * for
2>注意点
  只对最近的循环结构有效

4.流程控制总结

1)if特点:同一时刻,只有一个大括号里面的代码会被执行
2)switch特点:
1>默认情况下,只有一个case后面的代码会被执行 2>如果一个case后面没有break,就会执行后面所有case中的语句,直到遇到break 3>如果在case后定义一个新变量,必须用大括号{}包住

3)while特点:如果一开始条件不成立,永远不会执行循环体 4)do while特点:不管条件是否成立,至少会执行一次循环体 5)for特点:for循环内的变量,在运行完后可以及时回收 6)循环的选择:一般优先使用for循环,然后在考虑while循环,最后do while

5.优先考虑使用

1>一般优先使用for循环

2>然后再考虑while

3>最后再考虑do while






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