首页 > 代码库 > 【iOS开发基础】【C语言】03 - 流程控制

【iOS开发基础】【C语言】03 - 流程控制

 

一、流程控制结构

  (1)顺序结构:按照书写顺序执行每一条语句。

  (2)选择结构:对给定的条件进行判断,根据判断结果来决定执行哪一段代码。

  (3)循环结构:在给定条件成立的情况下,反复执行某一段代码。

二、选择结构 - if  

  (一)if简单使用

    1) 第一种结构:

      如果条件为真,就执行后面的语句,否则不执行。

      if(条件)

      {

        语句1;

        语句2;

        ……

      }

    2) 第二种结构:

      如果条件成立就执行语句1,否则执行语句2。

      if(条件)

      {

        语句1;

      }

      else

      {

        语句2;

      }

    3) 第三种结构:

      先判断条件1,若成立则执行语句1,其它不执行;若条件1不成立,则检查条件2……

      【注意】如果条件3成立,则说明前面的都不成立。所有的语句块只有一个会被执行。

      if(条件1)

      {

        语句1;

      }

      else if(条件2)

      {

        语句2;

      }

      else (条件3)

      {

        语句3;

      }

    4) 第四种结构:

      在这种情况下,当条件成立,只执行语句1,语句2不属于次条件结构,但不推荐此种写法。

      if(条件)

      语句1;

      语句2;

  (二)if使用注意 

    ①.推荐使用if(0==a)这种写法。

    ②. 注意赋值运算符,不要把==写成是=。

    ③. If(条件)后面不要加分号。

    ④. 注意作用域的问题,如果要在if后面定义新的变量,则一定要使用大括号。

  (三)if练习   

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

    A:90~100  B:80~89  C:70~79  D:60~69  E:0~60

 1 #include<stdio.h> 2  3 int main(){ 4  5     //定义变量存储分数值 6  7     int score; 8  9     //提示输入10 11     printf("请输入分值:\n");12 13     //接受输入14 15     scanf("%d",&score);16 17     //判断等级18 19     if(score>=90&&score<=100)20 21         printf("A\n");22 23     else if(score>=80)24 25         printf("B\n");26 27     else if(score>=70)28 29         printf("C\n");30 31     else if(score>=60)32 33         printf("D\n");34 35     else36 37         printf("E\n");38 39     return 0;40 41 }    

 

三、选择结构 - switch

  (一)switch结构

    switch(值) //通常是变量

    {

      case数值1:

        语句1;

        break;

      case数值2:

        语句2;

        break;

      case数值3:

        语句3;

        break;

      default :

        语句4;

        break;

    }

    解说:该结构把数值与数值1进行比较,若相等,则执行后面的所有语句,直到遇见break语句跳出整个循环,若前面的条件都不满足,则最终会执行default后面的语句。如果不写break语句,则后面的语句会接连执行,直到遇到break语句或者是全部语句执行完毕,只要前面的条件成立,则后面的判断就直接被忽略。

  (二)switch使用注意

    char c=‘A’;

    switch(c)

    {

      case‘A’:

        语句1;

        break;

      case 65://不能这样写,因为‘A’的ASCII值就是65,会报错

        语句2;

        break;

      case数值3:

        int a=10;

        //a的作用域不明确报错,c语言检查变量的作用域根据{}决定,这里可以加{}

        break;

      default :

        语句4;

        break;

    }

    注意:如果要在case后面的语句中定义变量,则必须使用大括号包住。

  (三)switch练习

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

    A 90-100  B 80-89  C 70-79  D 60-69  E 0-60 

 1 #include<stdio.h> 2  3 int main() 4 { 5     // 定义一个变量score,用来存储用户输入的分数 6     int score ; 7  8     printf("请输入你的分数:"); 9 10     scanf("%d",&score);11 12     //用switch语句判断用户输入的分数是什么等级13     switch (score/10) {14         case 10://100分15         case 9://90~99分16             printf("等级是 A \n");17             break;18         case 8://80~89分19             printf("等级是 B \n");20             break;21         case 7://70~79分22             printf("等级是 C \n");23             break;24         case 6://60~69分25             printf("等级是 D \n");26             break;27         default://0~59分28             printf("等级是 E \n");29             break;30     }31     return 0;32 }33 34 代码

 

  【对比】if与switch:

  1. if语句能够完成的功能,switch有时并不能够完成,如判断if(a>100)

  2. 在有些情况下,if语句和switch语句可以互换

  3. switch语句能完成的功能,if语句都可以完成

四、循环结构-while

  (一)while结构

    while(条件)

    {

      语句;

    }

    解说:判断条件是否成立,成立则执行(判断条件 -> 执行代码块 -> 判断条件 -> 执行代码块……)

      1.首先确定循环执行的操作,2.在确定约束条件,即需要循环多少次,3.定义一个变量来记录循环的次数。

    提示:在while循环体内使用if...break(跳出整个循环)或if...continue语句(跳出本次循环,继续下一次循环判断)。

    while结构的运行原理:

      ①. 如果一开始条件不成立,则永远不会执行循环体。

      ②. 如果条件成立,则执行一次循环体,执行完毕后再次判断条件是否成立。

      ③. break:直接退出整个循环。

      ④. continue:结束当前循环体,进行下一轮循环判断。

  (二)使用注意

    1) while(1){.....}是一个死循环

    2) while(a<10);{...}在条件后面加逗号表示循环体是一个空语句,而非{}部分

    3) while条件语句后推荐使用{},否则只有第一条语句时循环体

    4) 最简单的死循环  while(1);//永远执行空语句,让程序崩溃

  (三)while练习

    编程实现,提示输入一个正整数n,计算1+2+3+...n的值。

 1 #include<stdio.h> 2  3 int main(){ 4  5     //定义变量保存用户输入的整数 6  7     int n; 8  9     while(n<=0){10 11         //提示输入12 13         printf("请输入一个正整数:\n");14 15         //接受输入16 17         scanf("%d",&n);18 19     }20 21     int sum=0;22 23     int number=0;//默认被加的数值24 25     while(number<n){26 27         number++;28 29         sum=sum+number;30 31     }32 33     printf("计算结果为:%d\n",sum);34 35     return 0;36 37 }

五、循环结构-do while

  Do

  {

    语句

  }while(条件)

  特点:do while循环至少会执行一次循环体

六、循环结构-for

  (一)基本使用

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

    {

      循环体

    }

    语句1:一般为初始化语句

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

    for循环原理:

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

      2) 判断条件是否成立,若成立,则执行一次循环体,然后执行语句2,再次判断条件是否成立,若条件不成立则结束循环

      3) 顺序为:(语句1 -> 判断条件 -> 循环体 -> 语句2 -> 判断条件 -> 循环体……)

    【对比】for和while:

      在性能上,for循环稍胜一筹,因为while循环只能使用外部的变量,而for循环可以对变量进行及时回收。

  (二)for使用注意

    ①. 不要随便在for语句后面写上分号,如for();{....}

    ②. 定义变量的作用域不明确错误

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

      int a = 10; //编译器报错,变量作用域不明确

    ③. for语句中最简单的死循环for(;;);

    ④. 需要注意变量定义的作用域

      int a = 10;

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

      {

        int a = 10;

        printf(“a = %d\n”,a);//这里打印的a的值是多少?

      }

  (三)for循环嵌套

    用以输出特定格式的内容,如QQ好友列表等,提升可扩展性。

    for(in i = 0;i < 5;i++)

    {

      //外面的循环控制行数

      printf(“好友列表%d\n”,i);

      //内部的循环控制列数

      for(int j = 1;j< = 6;j++)

      {

        printf(“好友%d\n”,j);

      }

    }

  (四)for练习

    使用for循环输出九九乘法表。//先控制行数,在控制列数

    代码:

 1 #include<stdio.h> 2  3 int main() 4  5 { 6  7     for(int i=1;i<=9;i++) 8  9     {10 11         for(int j=1;j<=i;j++)12 13         {14 15             printf("%dx%d=%d\t",i,j,i*j);16 17         }18 19         printf("\n");20 21     }22 23     return 0;24 25 }   

【iOS开发基础】【C语言】03 - 流程控制