C(流程控制、数组)

2021-01-14

流程控制

  什么是流程控制
        程序代码执行的顺序
  流程控制的分类
        顺序:从上而下执行

        选择:
              定义:某些代码可能执行,也可能不执行,有选择的执行。
              分类:
                    1、if
                          if最简单的用法:if(表达式){语句;}//功能:如果表达式为真,语句执行。
                          if的范围问题:只能控制{}内的语句执行。
                          if..else..的用法:if(表达式1){语句1;}else{语句2;}
                          if..else if..else的用法
                          if举例--求分数的等级
                                1、判断一个数字是否是素数
                                      素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
                                2、判断一个数字是否是回文数
                                      就是说一个数字从左边读和从右边读的结果是一模一样的,比如12321。
                                3、实现一个十进制数字的二进制形式
                                4、求一个数字的每位是奇数的数字取出来组合形成的新数字
                                5、求一个数字倒过来的数字
                          
                    
        循环:
              定义:某些代码重复执行,循环的变量不能定义成浮点型
              分类:
                    for循环,嵌套for循环
                    while
                    do...while
                    break和continue
              注意:break是用来结束循环的;continue是用来结束本次循环,执行下一次循环;
                    do...while至少执行一次;
                    for循环的执行顺序:先初始值,在判断条件,再执行语句,再变化变量;

数组

    例如:int a[] ={1,2,3,4,5};//int 是数据类型 a是数组名,{}里面是数组元素;一维数组名代表数组第一个元素的地址;
  为什么需要数组?
        为了解决大量同类型数据的存储和使用;
        为了模拟现实世界;
  数据的分类
        一维数组:
              定义:
                    为n个变量连续分配空间;
                    所有的变量数据类型必须相同;
                    所有的变量所占的字节大小必须相等;
                    下标从 0 开始到 length-1 ;
              初始化:
                    完全初始化:int a[5] = {1,2,3,4,5};
                    不完全初始化:int a[5] = {1,2,3};
                    不初始化:int a[5];
                    清零:int a[5] = {0};  
                    错误的写法:int[5];a[5] = {1,2,3,4,5};//只有在定义数组才能整体赋值;
              排序:
              求最大/最小:
              倒置:
                例如: int a[7] = {1,2,3,4,5,6,7};
                       int i,j ;
                       int t;
                       i =0;j =6;
                      while(i<j){//逆置
                          t = a[i];
                          a[i] = a[j];
                          a[j] = t;
                          i++;
                          --j;
                                }
                       for(i=0;i<7;++i){printf("%d\n",a[i]);}//循环输出

              查找:
              插入/删除:  
        二维数组:
              int a[3][4];//总共12个元素,可以看成3行4列;
                    a[0][0] a[0][1] a[0][2] a[0][3]
                         ....
                    a[i][j]表示第i+1行第j+1列的元素;
              //定义二维数组
                int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}
                int i,j;
              //输出数组内容
                 for(i=0;i<3;++i){  
                    for(j=0;j<4;++j){
                        printf("%-5d  ", a[i][j]);}//-表示最对奇,5表示占5个位置;
                    }
                    printf("\n");
              对二维数组排序:
              对矩阵的相乘:
              求每一行的最大值:
              判断矩阵是否对称:
        多维数组:
              (**)是否存在多维数组? 
                    不存在;因为内存是线性的;n维数组可以当作每个元素是n-1维数组的一维数组;
                    例如:int a[3][4]该数组含有3个元素的一维数组,只不过每个元素可以分成4个小元素
posted @ 2021-01-14 19:50  一名初学者  阅读(257)  评论(0)    收藏  举报