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 作用,结束本次循环的剩余的语句,继续下一次循环。


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

相关文章推荐

黑马程序员--iOS--C基础(程序结构)

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

Arduino程序设计基础-2.1arduino语言及程序结构&&2.2C/C++语言基础

Arduino程序设计基础-基础篇1

HEVC学习1—总框架与程序结构

要开始学术了。 我的研究方向是视频编解码,主要研究领域为HEVC,目前新手小白一枚。 这里通过博客的方式记录一下自己的学习过程,顺便也给与我一样的人一个参考。 一、HEVC简介 要对H...

C#基础 了解C#程序结构

  • 2008-10-07 21:33
  • 701KB
  • 下载

C语言学习笔记(三)C的程序结构与编译执行过程

C的程序结构与编译执行过程 认识C程序的组成结构,是C开发的基础。 比如,一个简单的C程序: #include   #define PI 3.14  void...

JAVA零基础入门(2) - Java程序结构

我的哈士奇隔壁老王家有一只哈士奇,每次老王回家都会冲他汪汪叫地打招呼,特别热情虽然我也很想有一只,但是身为程序员的我并没有时间去照顾好一只狗狗。于是,我决定使用程序创造一只会冲我打招呼的狗狗。Just...

java基础复习--数据类型、运算符、程序结构

Java基础——基本数据类型 自己的基础基本为零,为了早日参加黑马训练营的课程,哪怕是第二第三季也好,从今天开始从基础一步一个脚印开始学习Java。今天先把从前学过的知识复习,复习的内容是java的数...

iOS程序结构APPDelegate&UIApplication

iOS程序的结构分为两个部分:APPDelegate和UIApplication。 首先了解一下UIApplication: 我们要知道应用程序所具有的状态。总共分为5种分别是: ...

JAVA基础3-程序结构与控制、函数与数组入门

一、程序结构   1、顺序结构 2、选择结构 3、循环结构 二、顺序结构 程序至上而下逐行执行,一条语句执行完之后继续执行下一条语句,一直到程序的末尾   三、...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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