day6-控制语句-数组

day 06 回顾控制语句
基本数据类型
变量
数据的输入输出
数据在内存里面存储 
数据溢出的处理
运算符
控制语句

--------------------------------------------
*****本周的内容:数组 函数  指针*****
--------------------------------------------

控制语句回顾
    顺序结构
    选择结构:if-else   switch-case 
              if(num >= 100 && num <= 999)
              {
                // .....
              }
              else
              {
                // ....
              }
              
            if-else的使用场景要广一点,
            switch-case 有限的 可罗列的结果选择。
            
    循环结构:for  while  do-while
        for循环一般适用于 知道次数的
        while一般用于知道结束条件的。 
            字符串长度  : “123”   "1212313"  用结束符号\0判断
            数据的位数  : 1  156  348347 
        
    跳转结构:break  continue  goto return
        break  --- 跳出 离它最近的循环
        continue --- 跳出本次循环,它下面的语句不执行,循环还在继续
        
-------------------------------------------------------------------
1、处理作业    
2、do-while循环
3、循环嵌套
4、goto  return 


写作业的时候先梳理思路,然后再写代码
-------------------------------------------------------------------
2、do-while循环
    格式:
    do{
        // 循环体
    }while(条件表达式);
    
    执行:
        先执行循环体 然后进行 条件表达式的判断,如果条件表达式为真,则继续执行循环体。
        
        直到 条件表达式为假,结束循环。
    
    do-while无论条件表达式真假,循环体至少会执行一次。
    
    案例:
        do{
            printf("hello world\n");
        }while(0);
        
    案例:
        1+2+3+4+5+。。。。100;
        
        int i; // 循环变量
        int sum = 0;
        
        i = 1;
        
        do{
            sum = sum + i;
            i++;
        }while(i<=100);
        
        printf("%d",sum);
    
    案例:
        密码3次输入限定
        
        int err_num = 0;
        
        int passwd;
        
        do{
            // 输入密码
            // 如果 密码 == 123456
            //      输出 密码正确
            //      结束循环  break
            // 否则
            //      如果 err_num  == 2
            //            输出  账号锁定
            //      否则 
            //            输出 密码错误,请重新输入密码
            //      err_num++;
            
        }while(err_num < 3);
-------------------------------------------------------------------------
3、循环嵌套    
    
    案例1:九九乘法表
    
    1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9
    2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
    3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
    4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
    5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
    6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54
    7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63
    8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72
    9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81

    
    int i; // 行 1 ~9
    int j; // 列 1 ~ 9
    
    for(i=1;i<=9;i++)
    {
        for(j=1;j<=9;j++)
        {
            // i j
            printf("%d * %d = %2d   ",i,j,i*j);
        }
        printf("\n");
    }
    
    
    案例2:输出九九乘法表
    1*1=1 
    2*1=2 2*2=4 
    3*1=3 3*2=6 3*3=9 
    4*1=4 4*2=8 4*3=12 4*4=16 
    5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 
    6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
    7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
    8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
    9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
    
    
    int i; // 行 1 ~9
    int j; // 列 1 ~ 9
    
    for(i=1;i<=9;i++)
    {
        for(j=1;j<=9;j++)
        {    
            if(i <= j)
            {
                printf("%d * %d = %2d   ",i,j,i*j);
            }
            else
            {
                break;
            }
        }
        printf("\n");
    }
    
    -----------------------------------------------------------------------------------------
    int i; // 行 1 ~9
    int j; // 列 1 ~ 9
    
    for(i=1;i<=9;i++)
    {
        for(j=1;j<=i;j++)
        {    
            printf("%d * %d = %2d   ",i,j,i*j);
        }
        printf("\n");
    }
        
    -------------------------------------------------------------------------------------------
    
-----------------------------------------------------------------------------------------------
4、goto  return 
    
    goto 语句一种无条件的跳转
    
    在程序代码的某个位置定义一个标识符 ,写:  标识符:
    需要跳转的地方,是用: goto 标识符名;
    
    
    A:
    printf("hello world\n");
    goto A;
    
    4种循环: for  while  do-while  if+goto
    
    应用:
        用于跳出多层循环
        
        #include<stdio.h>

        int main()
        {
            int i;
            int j;
            
            for(i=1;i<=9;i++)
            {
                for(j=1;j<=9;j++)
                {
                    if(i <= j)
                    {
                        printf("%d * %d = %2d ",i,j,i*j);
                        goto L;
                    }
                }    
            } 
            
            L:
                printf("end\n"); 
            return 0;
        }
    
    

    return :
        在函数中的作用:结束函数   √
                        返回数据   不需要返回数据的时候,return 后面可以不加数据 ,return ;
            
            
        

day06 下午 --- 数组
是什么
怎么使用
有哪些注意事项

---------------------------------------------------
1、数组是什么?什么场景下用数组?
2、数组的使用

---------------------------------------------------
1、数组是什么?
    数组使用存放 大量的相同数据类型的数据
    
    数组只是将数据组织在一起进行存放,后面对于数组中的数据操作还是需要单个单个操作。
    
    数组在什么场景下用数组?
        班级里面分数的统计
        一个月对的温度信息        
        存储字符串数据
        图片信息的存储
        音频 视频信息的存储
        
2、数组的使用
    1、数组的定义  --- 数据开空间
        数组存放的数据  ---- 元素
        数组名 --- 数据集合的名字   ages
        数组里面的数据可以使用下标进行区分,从0开始--- 规定
        
        {20,30,40,50,60}
        
        格式:元素的数据类型 数组名[元素的个数];
        练习:定义一个数组用来存放{20,30,40,50,60}
                
            元素个数:5
            元素的数据类型是整型:short 
            数组名:标识符 -- 自定义
            
            short a[5];  // --- 开空间
        
        练习:定义一个数组用来1个月(31)的温度     float temp[31];
              定义一个数组用来1篇文章中所有的字符   char article[10000];
              定义一个数组用来存放班级人的年龄      short ages[15];            
        
        
    2、数组的要素分析        
        
        数组名
        元素的个数    
        元素的数据类型:除了     数组名[元素个数] 剩下的就是元素的数据类型
        数组的类型:    除了    数组名  剩下的就是数组的数据类型
        
        float temp[31];
        
        元素的数据类型:float
        数组名:temp
        元素的个数:31        
        数组的类型:float [31]
        
        
        short ages[15];        
        元素的数据类型:short
        数组名:ages
        元素的个数:15        
        数组的类型:short [15]
        
        struct student arr[3];
        
        元素的数据类型:struct student
        数组名:arr
        元素的个数:    3    
        数组的类型: struct student [3]
        
        int *arr[4];
        
        元素的数据类型:int *
        数组名:arr
        元素的个数:    4    
        数组的类型: int *[4];
        
        
    3、数组的初始化  
        数组定义的时候就对元素空间进行写值操作。
        
        定义一个数组用来存放20,30,40,50,60
        
        short a[5] = {20,30,40,50,60};
        // 访问一下 输出    数组名[下标];   下标从0开始到总个数-1
        printf("%hd %hd %hd %hd %hd",a[0],a[1],a[2],a[3],a[4]);
        
        ①数组只能在初始化的时候整体赋值,其他不行
        下面的写法是错误的:
        short b[5];
        b = {10,20,30,40,50};
        
        ②初始化的时候,没有赋值的空间会补0
        short c[5] = {10};
        
        ③初始化的时候,数据个数>元素个数 溢出舍弃
        short d[5] = {10,20,30,40,50,60};  // 60被舍弃
        
        练习:short a[5] = {20,30,40,50,60}; 进行数组中数据求和。
            int sum = 0;
            
            sum += a[0];
            sum += a[1];
            sum += a[2];
            sum += a[3];
            sum += a[4];
            
            printf("%hd",sum);
            
            --------------------------------------------------------------
            short a[5] = {20,30,40,50,60}; 
            int i; // 下标
            int sum = 0;
            for(i=0;i<=4;i++)
            {
                sum = sum + a[i];
            }
            
            printf("%d",sum);
            
            数组的下标从开始,下标连续。
        
    4、数组的赋值
        数组里面元素的空间名称:数组名[下标]
        数组里面元素的空间地址:&数组名[下标]
        
        int a[5];
        scanf("%d",&a[0]);
        scanf("%d",&a[1]);
        scanf("%d",&a[2]);
        scanf("%d",&a[3]);
        scanf("%d",&a[4]);
        
        printf("%d %d %d %d %d",a[0],a[1],a[2],a[3],a[4]);
        
        int c[5];
        c[0] = 1;
        c[1] = 9;
        c[2] = 30;
        c[3] = 8;
        c[4] = 100;
        printf("%d %d %d %d %d",c[0],c[1],c[2],c[3],c[4]);
        
        
    5、数组元素在内存中的存储
        数组元素在内存存储是连续的。
        
        int c[5];
        
        地址输出用 %p;  地址编号 --%p输出是16进制的数据。
        
        printf("%p %p %p %p %p",&c[0],&c[1],&c[2],&c[3],&c[4]);        
        
        
    6、数组名是数组首元素的地址
        
        int c[5] = {1,9,5,3,7};
        
        c     &c[0]
        
        printf("%p %p",c,&c[0]);
        
        c     &c[0];
        c+1   &c[1];
        c+2   &c[2];
        c+3   &c[3];
        c+4   &c[4];
        
        通过地址获取空间中的数据:解地址 --- *
            *(&c[0]) == c[0]
            *(c)     == c[0]
            
            *(c+1)  === *(&c[1]) == c[1]
            
        通过数组名的形式输出数组中的数据。
            
        
        
        
        
        

        
        
        
        

        
    
            
              
              

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值