【第22期】观点:IT 行业加班,到底有没有价值?

iOS基础(c)—程序结构的分类

原创 2015年07月10日 11:46:16


------ 知之博客 期待与您交流! -------

程序结构的分类

  程序结构分为三类:
    1
)顺序结构

    顺序结构是最简单的程序结构,它是由若干个一次执行的处理步骤组成的。
   
按照顺序依次执行AB程序块。如图:
            

                         
顺序结构

    2)分支结构

    根据给定的条件进行判断,由判断的结果决定执行两个分支中的一个分支。如图:当P为真时执行A程序块,否则执行B程序块。无论条件P是否成立,AB程序块只能有一个被执行到,执行之后就离开了该选择结构。当B为空时,条件P为假时不执行任何操作。
         

                       分支结构

    3)循环结构

    又称为重复结构,给定条件成立时反复执行某一程序段。

    C语言中主要的循环语句由三个:

(1)      while循环语句

(2)      dowhile循环语句

(3)      for循环语句

流程图如下:

         

                                                   循环结构


分支结构

   1.  if语句实现分支控制

   一般形式(第一种形式):表达如果表达式为真,执行语句块1,否则不执行。

 

  If(表达式)

 {

     语句块1;

  }

  后续语句;


    原理:

            先计算小括号中的表达式的值

                  真(1

            会执行大括号中的语句

                  假(0

             不会执行大括号中的语句


   例一:猜数字游戏,输入一个数字,判断是不是5?如果是5打印“恭喜你”,如果不是5打印“很可惜”。

    代码如下:

    #include <stdio.h>

<pre name="code" class="cpp">    int main(int argc, const char * argv[]) {

    //先定义变量

    int num=0;

    //提示用户输入一个数

    printf("请输入一个数字:\n");

    //接收用户输入的数

    scanf("%d",&num);

    //判断这个数是否等于5

    if (num == 5) {

        printf("恭喜你!\n");

    }

    //如果等于5    提示    恭喜你

    printf("num =%d\n",num);

    //如果不等于 5   提示很可惜

    if (num != 5) {

        printf("很可惜!\n");

    }

    return 0;

    }

    2. if…else…语句及嵌套

    格式一(无嵌套):

  

  if ... else .... 的分支结构

      if(表达式){

        语句块1;

        //如果表达式为真,会执行此处的代码

      }else{

        //如果表达式为假了,会执行此处的代码

        语句块2;

   }

    格式二(嵌套)

  if ... else .... 的分支结构

      if(表达式){

        语句块1;

        //如果表达式为真,会执行此处的代码

      }else{

        //如果表达式为假了,会执行此处的代码

        语句块2;

  }

    例一的改进:

  void test(){

    int num=0;    //先定义变量

    printf("请输入一个数字:\n");   //提示用户输入一个数

    scanf("%d",&num);         //接收用户输入的数

    //判断这个数是否等于5

    // num == 5 为假可能是大于5,也可能是小于5

    if (num == 5) {

      

        printf("恭喜你!\n");  //如果等于了5,提示恭喜你

    }else{

       

        printf("很可惜!\n");   //否则提示很可惜

    }

  }

  int main(int argc, const char * argv[]) {

    //先定义变量

    int num=0;

   

    //提示用户输入一个数

    printf("请输入一个数字:\n");

    //接收用户输入的数

   scanf("%d",&num);

    //判断这个数是否等于5

    // num == 5 为假可能是大于5,也可能是小于5

    if (num == 5) {

        printf("恭喜你\n");

    }else{

        //再判断,如果这个数大于5 提示大于5

        if (num > 5) {

            printf("大于5了\n");

        }else{

            //否则提示  小于5

            printf("小于5了\n");

        }

    }

    return 0;

  }

    例二:输入一个属于0-100的成绩,按0-59(E),60-69(D),70-79(C),80-89(B),90-100(A) 分成几等。

     条件:

     分数>=0&&分数<=59   E

     分数>=60&&分数<=69  D

     分数>=70&&分数<=79    C

     分数>=80&&分数<=89    B

     分数>=90&&分数<=100   A

     分数<0||分数>100      不合法

  

    代码如下:

  #include <stdio.h>

  int main(int argc, const char * argv[]) {

    //定义变量,保存用户输入的分数

    int score=0;

    //提示用户输入一个分数

    printf("请输入一个分数:\n");

    //接收分数

   scanf("%d",&score);

    //校验分数是否合法(score<0||score>100)

   if (score<0 || score > 100) {

        printf("分数不合法!\n");

    }else{

        //当分数合法以后,再判断等级

        if (score<=59) {  //0-59 想反 60-100

           printf("E\n");

        }elseif(score<=69){  //60-69     70-100

           printf("D\n");

        }else if (score<=79){//70-79     80-100

            //C

           printf("C\n");

        }else if(score<=89){//80-89      90-100

            //B

           printf("B\n");

        }else{                          //90-100

           printf("A\n");

        }

    }

    return 0;

  }


    3. Switch语句

     格式:

   switch(表达式){

      case 常量表达式1: 语句1;

      case 常量表达式2: 语句2;

      case 常量表达式3: 语句3;

      case 常量表达式4: 语句4;

      case 常量表达式5: 语句5;

      case 常量表达式6: 语句6;

      default:

           printf("其他");

   }

    例三:接受用户输入,控制台打印菜名

    代码如下:

  #include <stdio.h>

  int main(int argc, const char * argv[]) {

    //提示用户点菜,1-7

    printf("本店开张,请点菜,请输入序号1-7\n");

    //定义变量,接收用户输入的内容

    int no;

    //接收用户输入的内容

    scanf("%d",&no);

    if (no<1 || no > 7) {

        printf("本店厨师还在写代码,还没时间更新菜谱\n");

        return 0;

    }

    //判断(switch)

    // 1 2 3 4 5

    switch(no){

        case 1: printf("玉米炒葡萄\n");

        case 2: printf("月饼炒辣椒\n");

        case 3: printf("爆炒妙脆角\n");

        case 4: printf("番茄炒卤蛋\n");

        case 5: printf("南瓜炒猪肝\n");

        case 6: printf("苹果炒西瓜\n");

        case 7: printf("天地无极\n");

    }

    return 0;

  }

    当输入结果4的时候,结果如下:

  本店开张,请点菜,请输入序号1-7

  4

  番茄炒卤蛋

  南瓜炒猪肝

  苹果炒西瓜

  天地无极

    很明显不是我们想要的结果,那么问题出在哪里呢?首先我们了解一个概念:case穿透

    某个case语句执行完成后,并没有结束,而直接向下执行其他的case语句这种现象就称之为case穿透

    如何防止case穿透?

    我们需要在每一个case语句结束之后,加上一句话:break; break  作用是结束switch语句。

    例四:switch语句与if语句混合使用案例:实现简单的计算器

    代码如下:

  #include <stdio.h>

  int main(int argc, const char * argv[]) {

    //定义变量保存用户输入的两个值  运算结果  输入的符号

    int num1,num2,op;

    float result=0.0f;

    //提示用户输入一个数

    printf("请输入第一个数:\n");

    //接收用户输入的第一个数

   scanf("%d",&num1);

    //提示输入运算符,然后在接收

    printf("请选择运算符:0.+  1.- 2.*  3./\n");

    //提示输入运算符,然后在接收

    scanf("%d",&op);

    if (op<0 || op >3) {

        printf("运算符不合法\n");

        return 0;

    }

    //提示输入另外一个数,然后再接收

    printf("请输入另外一个数:\n");

    //接收用户输入的第一个数

   scanf("%d",&num2);

    //开始计算

    //判断符号,进行计算

    switch (op) {

        case 0:

            result = num1+num2;

            break;

        case 1:

            result = num1-num2;

            break;

        case 2:

            result = num1*num2;

            break;

        case 3:

            result =num1/(float)num2;

    }

    printf("%d 和 %d运算的结果%.2f\n",num1,num2,result);

    return 0;

  }

三 循环结构

    循环结构是程序中一种很重要的结构,其特点是,在给定条件成立是,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序称为循环体。循环结构简单来说就是:循环一次又一次的执行相同的代码块

    1. While循环

    格式:

  while(表达式) {

     语句块;
  }


   例五 计算1+2+3+.....+100 的和

   代码如下:

  void test2(){

    //计算1+2+3+.....+100 的和

    //定义一个变量,存储当期执行的次数

    int i=1,sum=0;

    int n=0;

    //假设从键盘上输入一个数,计算1+2+3+....+n 的和

    printf("请输入一个数字:\n");

    //从键盘上接受一个数

    scanf("%d",&n);

    while (i<=n) {

        //用sum的值+i的值

        sum = sum+i;   //i = 1 sum = 1

        //0+1,   (0+1)+2

        //让循环条件为假的控制

        //        i=i+1;

        i++;

    }

   printf("1+2+3+....+%d=%d\n",n,sum);

  }

  int main(int argc, const char * argv[]) {

    test2();

    return 0;

  }

    使用循环的过程中一定要注意防止死循环的出现。

    2. do-while循环

    语法格式:

    

  do{

   //循环体

  }while(条件);

    注意点: do-while语句之后要有分号结束

    例六   //1+2+3+....+100

    代码如下:

  #include <stdio.h>

  int main(int argc, const char * argv[]) {

    int i=1,sum=0;

    do{

        //累加: 在上一次结果之上再加上某一个值

        sum+=i;

        i++;

    }while (i<=100);

    printf("sum =%d\n",sum);

    return 0;

  }

    关于while和do while对比

         1)当循环控制条件第一次判断不为假的时候while dowhile循环体执行的次数相同;

         2)当循环控制条件第一次判断为假的时候while循环的循环体执行 0次,do while执行1次;

     3. For循环

     for循环使用的频率是比较高的,接下来我们就用一个实际例子来对for循环做详细介绍。

     for循环实现打印 1000次我爱你

    构成循环有三个条件

        1)控制条件 i<1000

        2)循环体   printf("%d次说:我爱你!\n",i+1);

        3) 能够让控制条件为假的操作  i++

    注意

        1、初始化语句只会被执行1

        2、当条件不满足的时候,循环就结束

    代码如下:

  for(int i=0;i<1000;i++){

        printf("第%d次说:我爱你!\n",i+1);

    }

    如果控制条件没有定义的话,就有可能构成死循环,部分代码块如下:

    //for语句的死循环

   

  for(;;){

        printf("班长喜欢凤姐!\n");

    }

    printf("\n");


    例七  for循环的嵌套使用。打印以下图形

             *

             ***

            *****

           *******

         *********

         ***********

    代码如下:

  #include <stdio.h>

  int main(int argc, const char *argv[]) {

    //控制行数

    for (int i=1; i<=6; i++) {

      //控制空白

        for (int j=0; j<=6-i; j++) {

            printf(" ");

        }

      //控制 *

        for (int k=0; k<2*i-1; k++) {

            printf("*");

        }

      //打印回车

        printf("\n");

    }

    return 0;

  }

    4. break和continue的区别

     首先来看一个例子,根据这个例子找出break和continue的区别所在。

     例八  把100~200之间的不能被3整除的数输出

  #include <stdio.h>

  int main(int argc, constchar * argv[]) {

    //把100~200之间的不能被3整除的数输出

    // i%3!=0

    // i%3==0 continue;

    for (int i=100; i<=200; i++) {

        if (i%3==0) continue;

        printf("%d\t",i);

    }

    printf("\n");

    return 0;

  }

    运行结果为:

  100	101	103	104	106	107	109	110	112	113	
  115	116	118	119	121	122	124	125	127	128
  130	131	133	134	136	137	139	140	142	143
  145	146	148	149	151	152	154	155	157	158
  160	161	163	164	166	167	169	170	172	173	
  175	176	178	179	181	182	184	185	187	188	
  190	191	193	194	196	197	199	200	

    如果将例题中的continue换成break,那么运行结果为:

  100	101	
 

    由此可见breakcontinue的区别是:break用于跳出当前的循环(结束当前的循环),continue 作用,结束本次循环的剩余的语句,继续下一次循环。


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

模块分类构件

     使用该模块可以将定制的模块分成不同的组,给每个组分配一个管理员。使定制出的系统在权限分配和使用上具有更大的灵活性。该模块分上下两帧,上帧显示所有的模块分组,下帧显示模块分组的详细信息。...

中间件的分类和作用

要说清这个问题我们用一个生活中的实例来比喻。把分布式系统看作北京市区的交通系统,网络看作市区马路,通过交通工具(汽车)实现通信,每分钟将有几万辆车在马路上行驶,如果没有相应的交通设施和管理规划,北京市...

逻辑结构定义及其分类

重新学习数据结构的相关知识,总结下什么是逻辑结构以及四类逻辑结构。 逻辑结构:数据的逻辑结构是指数据元素之间的逻辑关系,是呈现在用户面前的、能感知到的数据元素的组织形式。这里可以对比存储结构比较记忆...

大数据—分类和架构简介

大数据架构和模式  大数据分类和架构简介 如何将大数据分为不同的类别 Divakar Mysore, Shrikant Khupat, 和 Shweta Jain 2014 年 8 月 28...

设计模式分类(创建型模式、结构型模式、行为模式)

1.创建型模式 前面讲过,社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象的使用分开也就成为了必然趋势。因为对象的创建会消耗掉系统的很多资源,所以单独对对象的创建进行研究,从而...

多分支选择结构

switch 语句根据表达式的值相匹配的执行,一直到default,break结束。 只能处理等值条件判断的情况,且表达式必须为byte,short,int,或char类型 不能是Stri...

结构化查询语言分类

DDL                                                                      解释                         ...

知识点小谈:4)产品结构设计目标的分类

说实话,要不要发表这篇文章,真的是迷茫的一件事,因为这是与作者想设计一个好产品目标相违背。但存在即合理,这个东西也的确是我思虑过的事情。 以下纯属个人见解,妄言。 本章:弄清楚结构设计目的,给别人...

1-软件体系结构基础

1-软件体系结构基础1.1 为什么需要“软件体系结构”?——从“软件危机”谈起1.1.1 软件危机介绍 随着计算机应用的逐渐扩大,软件需求量逐渐增加,规模也日益增长,软件规模的快速增长,也带来了软件的...

23 用if语句实现分支结构 项目(1: 被3或者5整除的数) (2:乱玩数字 ) (3:两段函数求值 ) (4:三角公式求值 ) (5:我的加班费 ) (6:前导0的数字

/*【项目1:被3或者5整除的数】 编程序,输入一个数,判断它能否被3或者被5整除。 如至少能被这两个数中的一个整除,则将此数打印出来,否则不打印。 */ #include int main() ...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)